Branch: Tag:

2002-03-02

2002-03-02 18:51:36 by Martin Stjernholm <mast@lysator.liu.se>

Added some test cases for switches with case ranges.

Rev: src/testsuite.in:1.488

1: - test_true([["$Id: testsuite.in,v 1.487 2002/03/01 15:34:26 mast Exp $"]]); + test_true([["$Id: testsuite.in,v 1.488 2002/03/02 18:51:36 mast Exp $"]]);      cond([[all_constants()->_verify_internals]],   [[
6279:   // use sprintf here; the sums aren't totally equal for doubles (error~=1e-16)   test_any([[float e,q; q=0.0; for(e=0.1;e<10.0;e+=1.0) switch(e) { default: q+=e; case 4.0..8.0: } return sprintf("%.6f",q)]],[[sprintf("%.6f",0.1+1.1+2.1+3.1+8.1+9.1)]])    + test_compile_error([[switch (1) {case 1: break; case 1: break;}]]) + test_compile_error([[switch (1) {case 1: break; case 0..2: break;}]]) + test_compile_error([[switch (1) {case 1..2: break; case 0..3: break;}]]) + test_compile_error([[switch (1) {case 1..3: break; case 0..2: break;}]]) + test_compile_error([[switch (1) {case 1..2: break; case 0..: break;}]]) + test_compile_error([[switch (1) {case 1..2: break; case ..3: break;}]]) + test_compile_error([[switch (1) {case 1..: break; case ..3: break;}]]) + test_compile_error([[switch (1) {case ..: break;}]]) + test_compile_error([[switch (1) {case "x"..: break;}]]) + test_compile_error([[switch (1) {case .."y": break;}]]) + test_compile_error([[switch (1) {case "x".."y": break;}]]) +  + define(test_switch_ranges,[[ +  test_any_equal([[ +  int f (int i) {{$1;} return 0;}; +  array res = ({}); +  for (int i = -3; i <= 3; i++) res += ({f (i)}); +  return res; +  ]], $2) + ]]) +  + test_switch_ranges([[ +  switch (i) {case 1..2: return 2; case -2..-1: return 1;} + ]], ({0, 1, 1, 0, 2, 2, 0})) + test_switch_ranges([[ +  switch (i) {case 1..2: return 2; case -2..0: return 1;} + ]], ({0, 1, 1, 1, 2, 2, 0})) + test_switch_ranges([[ +  switch (i) {case 1..2: return 2; case -2..-1: return 1; case 0: return 3;} + ]], ({0, 1, 1, 3, 2, 2, 0})) + test_switch_ranges([[ +  switch (i) {case 1..2: return 2; case ..-1: return 1; case 0: return 3;} + ]], ({1, 1, 1, 3, 2, 2, 0})) + test_switch_ranges([[ +  switch (i) {case 1..: return 2; case -2..-1: return 1; case 0: return 3;} + ]], ({0, 1, 1, 3, 2, 2, 2})) + test_switch_ranges([[ +  switch (i) {case 1..: return 2; case ..-1: return 1; case 0: return 3;} + ]], ({1, 1, 1, 3, 2, 2, 2})) +    // Breaks and continues with labels   test_compile_error([[break;]])   test_compile_error([[continue;]])