diff --git a/compiler/compiler.iml b/compiler/compiler.iml index d69ed036f..3ed342866 100644 --- a/compiler/compiler.iml +++ b/compiler/compiler.iml @@ -1,5 +1,10 @@ + + + + + @@ -14,5 +19,6 @@ + \ No newline at end of file diff --git a/compiler/test/comparisons/Makefile b/compiler/test/comparisons/Makefile index b2d38032c..838fa7784 100644 --- a/compiler/test/comparisons/Makefile +++ b/compiler/test/comparisons/Makefile @@ -7,9 +7,9 @@ clean: test: clean python make_tests.py - p8compile -noopt *.p8 >/dev/null + p8compile -noopt -target cx16 *.p8 >/dev/null for program in *.prg; do \ echo "RUNNING:" $$program ; \ - x64sc $$program >/dev/null ; \ + x16emu -run -prg $$program >/dev/null ; \ done diff --git a/compiler/test/comparisons/make_tests.py b/compiler/test/comparisons/make_tests.py index 62de2b3b0..89d9f7490 100644 --- a/compiler/test/comparisons/make_tests.py +++ b/compiler/test/comparisons/make_tests.py @@ -1,3 +1,6 @@ +# generates various Prog8 files with a huge amount of number comparion tests, +# for all supported datatypes and all comparison operators. + import sys index = 0 @@ -128,14 +131,18 @@ f""" ; test #{index} """) -def gen_comp_equal(dt): - minval, maxval = minmaxvalues(dt) - print(" ; tests: ", dt, "==") - print(" comparison = \"==\"") +def gen_comp_header(dt, operator): + print(" ; tests: ", dt, operator) + print(" comparison = \""+operator+"\"") print(" txt.print(datatype)") print(" txt.spc()") print(" txt.print(comparison)") print(" txt.nl()") + + +def gen_comp_equal(dt): + minval, maxval = minmaxvalues(dt) + gen_comp_header(dt, "==") gen_test(dt, "==", 0, 0, True) gen_test(dt, "==", 0, 1, False) gen_test(dt, "==", 100, 100, True) @@ -174,18 +181,9 @@ def gen_comp_equal(dt): gen_test(dt, "==", maxval, maxval-1, False) -def gen_comp_header(dt): - print(" ; tests: ", dt, "!=") - print(" comparison = \"!=\"") - print(" txt.print(datatype)") - print(" txt.spc()") - print(" txt.print(comparison)") - print(" txt.nl()") - - def gen_comp_notequal(dt): minval, maxval = minmaxvalues(dt) - gen_comp_header(dt) + gen_comp_header(dt, "!=") gen_test(dt, "!=", 0, 0, False) gen_test(dt, "!=", 0, 1, True) gen_test(dt, "!=", 100, 100, False) @@ -226,22 +224,182 @@ def gen_comp_notequal(dt): def gen_comp_less(dt): minval, maxval = minmaxvalues(dt) - print(" ; tests: ", dt, "<") + gen_comp_header(dt, "<") + gen_test(dt, "<", 0, 0, False) + gen_test(dt, "<", 0, 1, True) + gen_test(dt, "<", 100, 100, False) + gen_test(dt, "<", 100, 101, True) + gen_test(dt, "<", 100, 99, False) + if maxval >= 200: + gen_test(dt, "<", 200, 200, False) + gen_test(dt, "<", 200, 201, True) + gen_test(dt, "<", 200, 199, False) + if maxval >= 9999: + gen_test(dt, "<", 9999, 9999, False) + gen_test(dt, "<", 9999, 10000, True) + gen_test(dt, "<", 9999, 9998, False) + gen_test(dt, "<", 0x5000, 0x5000, False) + gen_test(dt, "<", 0x5000, 0x5001, True) + gen_test(dt, "<", 0x5000, 0x4fff, False) + if maxval >= 30000: + gen_test(dt, "<", 30000, 30000, False) + gen_test(dt, "<", 30000, 30001, True) + gen_test(dt, "<", 30000, 29999, False) + if maxval >= 40000: + gen_test(dt, "<", 0xf000, 0xf000, False) + gen_test(dt, "<", 0xf000, 0xf001, True) + gen_test(dt, "<", 0xf000, 0xefff, False) + if minval < 0: + gen_test(dt, "<", 0, -1, False) + gen_test(dt, "<", -100, -100, False) + gen_test(dt, "<", -100, -101, False) + gen_test(dt, "<", -100, -99, True) + if minval < -200: + gen_test(dt, "<", -200, -200, False) + gen_test(dt, "<", -200, -201, False) + gen_test(dt, "<", -200, -199, True) + if minval < -9999: + gen_test(dt, "<", -0x5000, -0x5000, False) + gen_test(dt, "<", -0x5000, -0x5001, False) + gen_test(dt, "<", -0x5000, -0x4fff, True) + gen_test(dt, "<", -9999, -9999, False) + gen_test(dt, "<", -9999, -10000, False) + gen_test(dt, "<", -9999, -9998, True) def gen_comp_greater(dt): minval, maxval = minmaxvalues(dt) - print(" ; tests: ", dt, ">") + gen_comp_header(dt, ">") + gen_test(dt, ">", 0, 0, False) + gen_test(dt, ">", 0, 1, False) + gen_test(dt, ">", 100, 100, False) + gen_test(dt, ">", 100, 101, False) + gen_test(dt, ">", 100, 99, True) + if maxval >= 200: + gen_test(dt, ">", 200, 200, False) + gen_test(dt, ">", 200, 201, False) + gen_test(dt, ">", 200, 199, True) + if maxval >= 9999: + gen_test(dt, ">", 9999, 9999, False) + gen_test(dt, ">", 9999, 10000, False) + gen_test(dt, ">", 9999, 9998, True) + gen_test(dt, ">", 0x5000, 0x5000, False) + gen_test(dt, ">", 0x5000, 0x5001, False) + gen_test(dt, ">", 0x5000, 0x4fff, True) + if maxval >= 30000: + gen_test(dt, ">", 30000, 30000, False) + gen_test(dt, ">", 30000, 30001, False) + gen_test(dt, ">", 30000, 29999, True) + if maxval >= 40000: + gen_test(dt, ">", 0xf000, 0xf000, False) + gen_test(dt, ">", 0xf000, 0xf001, False) + gen_test(dt, ">", 0xf000, 0xefff, True) + if minval < 0: + gen_test(dt, ">", 0, -1, True) + gen_test(dt, ">", -100, -100, False) + gen_test(dt, ">", -100, -101, True) + gen_test(dt, ">", -100, -99, False) + if minval < -200: + gen_test(dt, ">", -200, -200, False) + gen_test(dt, ">", -200, -201, True) + gen_test(dt, ">", -200, -199, False) + if minval < -9999: + gen_test(dt, ">", -0x5000, -0x5000, False) + gen_test(dt, ">", -0x5000, -0x5001, True) + gen_test(dt, ">", -0x5000, -0x4fff, False) + gen_test(dt, ">", -9999, -9999, False) + gen_test(dt, ">", -9999, -10000, True) + gen_test(dt, ">", -9999, -9998, False) def gen_comp_lessequal(dt): minval, maxval = minmaxvalues(dt) - print(" ; tests: ", dt, "<=") + gen_comp_header(dt, "<=") + gen_test(dt, "<=", 0, 0, True) + gen_test(dt, "<=", 0, 1, True) + gen_test(dt, "<=", 100, 100, True) + gen_test(dt, "<=", 100, 101, True) + gen_test(dt, "<=", 100, 99, False) + if maxval >= 200: + gen_test(dt, "<=", 200, 200, True) + gen_test(dt, "<=", 200, 201, True) + gen_test(dt, "<=", 200, 199, False) + if maxval >= 9999: + gen_test(dt, "<=", 9999, 9999, True) + gen_test(dt, "<=", 9999, 10000, True) + gen_test(dt, "<=", 9999, 9998, False) + gen_test(dt, "<=", 0x5000, 0x5000, True) + gen_test(dt, "<=", 0x5000, 0x5001, True) + gen_test(dt, "<=", 0x5000, 0x4fff, False) + if maxval >= 30000: + gen_test(dt, "<=", 30000, 30000, True) + gen_test(dt, "<=", 30000, 30001, True) + gen_test(dt, "<=", 30000, 29999, False) + if maxval >= 40000: + gen_test(dt, "<=", 0xf000, 0xf000, True) + gen_test(dt, "<=", 0xf000, 0xf001, True) + gen_test(dt, "<=", 0xf000, 0xefff, False) + if minval < 0: + gen_test(dt, "<=", 0, -1, False) + gen_test(dt, "<=", -100, -100, True) + gen_test(dt, "<=", -100, -101, False) + gen_test(dt, "<=", -100, -99, True) + if minval < -200: + gen_test(dt, "<=", -200, -200, True) + gen_test(dt, "<=", -200, -201, False) + gen_test(dt, "<=", -200, -199, True) + if minval < -9999: + gen_test(dt, "<=", -0x5000, -0x5000, True) + gen_test(dt, "<=", -0x5000, -0x5001, False) + gen_test(dt, "<=", -0x5000, -0x4fff, True) + gen_test(dt, "<=", -9999, -9999, True) + gen_test(dt, "<=", -9999, -10000, False) + gen_test(dt, "<=", -9999, -9998, True) def gen_comp_greaterequal(dt): minval, maxval = minmaxvalues(dt) - print(" ; tests: ", dt, ">=") + gen_comp_header(dt, ">=") + gen_test(dt, ">=", 0, 0, True) + gen_test(dt, ">=", 0, 1, False) + gen_test(dt, ">=", 100, 100, True) + gen_test(dt, ">=", 100, 101, False) + gen_test(dt, ">=", 100, 99, True) + if maxval >= 200: + gen_test(dt, ">=", 200, 200, True) + gen_test(dt, ">=", 200, 201, False) + gen_test(dt, ">=", 200, 199, True) + if maxval >= 9999: + gen_test(dt, ">=", 9999, 9999, True) + gen_test(dt, ">=", 9999, 10000, False) + gen_test(dt, ">=", 9999, 9998, True) + gen_test(dt, ">=", 0x5000, 0x5000, True) + gen_test(dt, ">=", 0x5000, 0x5001, False) + gen_test(dt, ">=", 0x5000, 0x4fff, True) + if maxval >= 30000: + gen_test(dt, ">=", 30000, 30000, True) + gen_test(dt, ">=", 30000, 30001, False) + gen_test(dt, ">=", 30000, 29999, True) + if maxval >= 40000: + gen_test(dt, ">=", 0xf000, 0xf000, True) + gen_test(dt, ">=", 0xf000, 0xf001, False) + gen_test(dt, ">=", 0xf000, 0xefff, True) + if minval < 0: + gen_test(dt, ">=", 0, -1, True) + gen_test(dt, ">=", -100, -100, True) + gen_test(dt, ">=", -100, -101, True) + gen_test(dt, ">=", -100, -99, False) + if minval < -200: + gen_test(dt, ">=", -200, -200, True) + gen_test(dt, ">=", -200, -201, True) + gen_test(dt, ">=", -200, -199, False) + if minval < -9999: + gen_test(dt, ">=", -0x5000, -0x5000, True) + gen_test(dt, ">=", -0x5000, -0x5001, True) + gen_test(dt, ">=", -0x5000, -0x4fff, False) + gen_test(dt, ">=", -9999, -9999, True) + gen_test(dt, ">=", -9999, -10000, True) + gen_test(dt, ">=", -9999, -9998, False) def generate_test_routine_equalsnotequals(dt): diff --git a/compiler/test/comparisons/comparisons.p8 b/compiler/test/comparisons/old_cmps.p8 similarity index 100% rename from compiler/test/comparisons/comparisons.p8 rename to compiler/test/comparisons/old_cmps.p8 diff --git a/compiler/test/comparisons/comparison_ifs_uword.p8 b/compiler/test/comparisons/old_ifs_uword.p8 similarity index 100% rename from compiler/test/comparisons/comparison_ifs_uword.p8 rename to compiler/test/comparisons/old_ifs_uword.p8 diff --git a/compiler/test/comparisons/comparison_ifs_word.p8 b/compiler/test/comparisons/old_ifs_word.p8 similarity index 100% rename from compiler/test/comparisons/comparison_ifs_word.p8 rename to compiler/test/comparisons/old_ifs_word.p8