diff --git a/runAllTests.py b/runAllTests.py index d9ff4bb..84cb5b8 100755 --- a/runAllTests.py +++ b/runAllTests.py @@ -20,14 +20,14 @@ def clangName(): clang = clangName() -def runTestNormalLevel(level): - print(f"Running test of level {level}") - stats[level] = (0,0,0,0) - for dirname, dirnames, filenames in os.walk(f'./tests/testlevel{level}'): +def runNormalTestSuit(testSuit): + print(f"Running test suit : {testSuit}") + stats[testSuit] = (0,0,0,0) + for dirname, dirnames, filenames in os.walk(testSuit): for filename in filenames: - runNormalTest(level, dirname, filename) + runNormalTest(testSuit, dirname, filename) -def runNormalTest(i, dirname,filename): +def runNormalTest(testSuit, dirname,filename): vslToLLVM = False llvmToBin = False executionCorrect = False @@ -55,29 +55,29 @@ def runNormalTest(i, dirname,filename): # Exe if llvmToBin : + executionCorrect = True try: + input = "" if os.path.isfile(f"{basename}.test_in"): - p = subprocess.run(f"./{basename} < {basename}.test_in", shell=True, stdout=subprocess.PIPE, timeout=10) - else: - p = subprocess.run(f"./{basename}", shell=True, stdout=subprocess.PIPE, timeout=10) + input = f"< {basename}.test_in" + p = subprocess.run(f"./{basename} " + input, shell=True, stdout=subprocess.PIPE, timeout=5) except subprocess.TimeoutExpired: - executionCorrect = basename == "./tests/testlevel4/level4diverge" + executionCorrect = "diverge" in basename # Check return code if os.path.isfile(f"{basename}.test_ret"): with open(f"{basename}.test_ret", "r") as expected: - executionCorrect = int(expected.read()) == p.returncode + executionCorrect = executionCorrect and int(expected.read()) == p.returncode # Check stdout if os.path.isfile(f"{basename}.test_out"): with open(f"{basename}.test_out", "rb") as expected: executionCorrect = executionCorrect and expected.read() == p.stdout - print(f"{colorFromBool(vslToLLVM)}\t\tVSL to LLVM : {'OK' if vslToLLVM else 'Fail'}{Style.RESET_ALL}") print(f"{colorFromBool(llvmToBin)}\t\tLLVM to Bin : {'OK' if llvmToBin else 'Fail'}{Style.RESET_ALL}") print(f"{colorFromBool(executionCorrect)}\t\tCorrect Execution : {'OK' if executionCorrect else 'Fail'}{Style.RESET_ALL}") - x,y,z,t = stats[i] + x,y,z,t = stats[testSuit] if vslToLLVM : x += 1 if llvmToBin : @@ -85,7 +85,7 @@ def runNormalTest(i, dirname,filename): if executionCorrect : z += 1 t += 1 - stats[i] = (x,y,z,t) + stats[testSuit] = (x,y,z,t) def colorFromBool(b): if b: @@ -104,7 +104,7 @@ def afficheStats(stat): nbError = 0 nbErrorTests = 0 -def runErrorTest(dirname,filename): +def runErrorTest(testSuit, dirname,filename): path = os.path.join(dirname, filename) basename, ext = os.path.splitext(path) if ext != ".vsl": @@ -112,37 +112,51 @@ def runErrorTest(dirname,filename): print(f'\tRunning test {filename}') - global nbErrorTests - nbErrorTests = nbErrorTests + 1 + hasError = False p = subprocess.run(f"java -jar build/libs/TP2.jar < {path} 1>{basename}.ll", shell=True, stderr=subprocess.PIPE) + if p.returncode != 0 and p.stderr != b'': print(f"\t\t{Fore.GREEN}Error : Yes{Style.RESET_ALL}") - global nbError - nbError = nbError + 1 - return 1 + hasError = True else: print(f"\t\t{Fore.RED}Error : No{Style.RESET_ALL}") - return 0 + hasError = False -def runErrorLevelTests(): - print(f"Running test of level error") - for dirname, dirnames, filenames in os.walk(f'./tests/testlevelerror'): - # print path to all filenames. + x,t = stats[testSuit] + if hasError : + x += 1 + t += 1 + stats[testSuit] = (x,t) + + +def runErrorLevelTests(testSuit): + print(f"Running test suit : {testSuit}") + stats[testSuit] = (0,0) + for dirname, dirnames, filenames in os.walk(testSuit): for filename in filenames: - runErrorTest( dirname, filename) + runErrorTest(testSuit, dirname, filename) -def runTests(testDirname): - for i in range(1,5): - runTestNormalLevel(i) - runErrorLevelTests() +def runTests(testDirName): + folderContent = [os.path.join(testDirName, d) for d in os.listdir(testDirName)] + testSuits = [d for d in folderContent if os.path.isdir(d)] + testSuits.sort() + + for suit in testSuits: + if "error" in suit or "Error" in suit: + runErrorLevelTests(suit) + else: + runNormalTestSuit(suit) + + for suit in testSuits: + print(f'Résumé du test {suit}') + if "error" in suit or "Error" in suit: + nbError, nbErrorTests = stats[suit] + print(f'{colorFromBool(nbError==nbErrorTests)}\t Nombre d\'erreurs : {nbError} / {nbErrorTests}{Style.RESET_ALL}') + else: + afficheStats(stats[suit]) - for i in range(1,5): - print(f'Résumé du level {i}') - afficheStats(stats[i]) - print(f'Résumé du level error') - print(f'{colorFromBool(nbError==nbErrorTests)}\t Nombre d\'erreurs : {nbError} / {nbErrorTests}{Style.RESET_ALL}') diff --git a/tests/aLaMain.vsl b/tests/aLaMain.vsl index 26ec141..29a0cda 100644 --- a/tests/aLaMain.vsl +++ b/tests/aLaMain.vsl @@ -1 +1 @@ - FUNC INT main() RETURN 0 + 1 + 2 \ No newline at end of file + FUNC INT main() RETURN 0 + 1 \ No newline at end of file diff --git a/tests/fragment0/add0.test_ret b/tests/fragment0/add0.test_ret new file mode 100644 index 0000000..3f10ffe --- /dev/null +++ b/tests/fragment0/add0.test_ret @@ -0,0 +1 @@ +15 \ No newline at end of file diff --git a/tests/fragment0/add0.vsl b/tests/fragment0/add0.vsl new file mode 100644 index 0000000..5d8a496 --- /dev/null +++ b/tests/fragment0/add0.vsl @@ -0,0 +1 @@ +FUNC INT main() RETURN 7 + 8 \ No newline at end of file diff --git a/tests/fragment0/add1.test_ret b/tests/fragment0/add1.test_ret new file mode 100644 index 0000000..c5b431b --- /dev/null +++ b/tests/fragment0/add1.test_ret @@ -0,0 +1 @@ +50 \ No newline at end of file diff --git a/tests/fragment0/add1.vsl b/tests/fragment0/add1.vsl new file mode 100644 index 0000000..6255c8f --- /dev/null +++ b/tests/fragment0/add1.vsl @@ -0,0 +1 @@ +FUNC INT main() RETURN 7 + 8 + 5 + 10+10+ 10 \ No newline at end of file diff --git a/tests/testlevel1/level1block.test_ret b/tests/fragment0/const0.test_ret similarity index 100% rename from tests/testlevel1/level1block.test_ret rename to tests/fragment0/const0.test_ret diff --git a/tests/testlevel1/level1function.vsl b/tests/fragment0/const0.vsl similarity index 100% rename from tests/testlevel1/level1function.vsl rename to tests/fragment0/const0.vsl diff --git a/tests/fragment0/const1.test_ret b/tests/fragment0/const1.test_ret new file mode 100644 index 0000000..f70d7bb --- /dev/null +++ b/tests/fragment0/const1.test_ret @@ -0,0 +1 @@ +42 \ No newline at end of file diff --git a/tests/fragment0/const1.vsl b/tests/fragment0/const1.vsl new file mode 100644 index 0000000..5449f32 --- /dev/null +++ b/tests/fragment0/const1.vsl @@ -0,0 +1 @@ +FUNC INT main() RETURN 42 diff --git a/tests/fragment0/div0.test_ret b/tests/fragment0/div0.test_ret new file mode 100644 index 0000000..bf0d87a --- /dev/null +++ b/tests/fragment0/div0.test_ret @@ -0,0 +1 @@ +4 \ No newline at end of file diff --git a/tests/fragment0/div0.vsl b/tests/fragment0/div0.vsl new file mode 100644 index 0000000..650861b --- /dev/null +++ b/tests/fragment0/div0.vsl @@ -0,0 +1 @@ +FUNC INT main() RETURN 20/5 \ No newline at end of file diff --git a/tests/fragment0/div1.test_ret b/tests/fragment0/div1.test_ret new file mode 100644 index 0000000..d8263ee --- /dev/null +++ b/tests/fragment0/div1.test_ret @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/tests/fragment0/div1.vsl b/tests/fragment0/div1.vsl new file mode 100644 index 0000000..8f20f33 --- /dev/null +++ b/tests/fragment0/div1.vsl @@ -0,0 +1 @@ +FUNC INT main() RETURN 12 / 3 / 2 \ No newline at end of file diff --git a/tests/testlevel1/level1if1.test_ret b/tests/fragment0/mod.test_ret similarity index 100% rename from tests/testlevel1/level1if1.test_ret rename to tests/fragment0/mod.test_ret diff --git a/tests/fragment0/mod.vsl b/tests/fragment0/mod.vsl new file mode 100644 index 0000000..ab0befc --- /dev/null +++ b/tests/fragment0/mod.vsl @@ -0,0 +1 @@ +FUNC INT main() RETURN 21 % 5 \ No newline at end of file diff --git a/tests/fragment0/mult1.test_ret b/tests/fragment0/mult1.test_ret new file mode 100644 index 0000000..2edeafb --- /dev/null +++ b/tests/fragment0/mult1.test_ret @@ -0,0 +1 @@ +20 \ No newline at end of file diff --git a/tests/fragment0/mult1.vsl b/tests/fragment0/mult1.vsl new file mode 100644 index 0000000..df12e11 --- /dev/null +++ b/tests/fragment0/mult1.vsl @@ -0,0 +1 @@ +FUNC INT main() RETURN 4*5 \ No newline at end of file diff --git a/tests/fragment0/mult2.test_ret b/tests/fragment0/mult2.test_ret new file mode 100644 index 0000000..86ee83a --- /dev/null +++ b/tests/fragment0/mult2.test_ret @@ -0,0 +1 @@ +40 \ No newline at end of file diff --git a/tests/fragment0/mult2.vsl b/tests/fragment0/mult2.vsl new file mode 100644 index 0000000..7311b86 --- /dev/null +++ b/tests/fragment0/mult2.vsl @@ -0,0 +1 @@ +FUNC INT main() RETURN 4*5*2 \ No newline at end of file diff --git a/tests/fragment0/paren.test_ret b/tests/fragment0/paren.test_ret new file mode 100644 index 0000000..8bc6583 --- /dev/null +++ b/tests/fragment0/paren.test_ret @@ -0,0 +1 @@ +120 \ No newline at end of file diff --git a/tests/fragment0/paren.vsl b/tests/fragment0/paren.vsl new file mode 100644 index 0000000..1ee7349 --- /dev/null +++ b/tests/fragment0/paren.vsl @@ -0,0 +1 @@ +FUNC INT main() RETURN 4 * (6 + 4) * 3 \ No newline at end of file diff --git a/tests/fragment0/priority1.test_ret b/tests/fragment0/priority1.test_ret new file mode 100644 index 0000000..7c09198 --- /dev/null +++ b/tests/fragment0/priority1.test_ret @@ -0,0 +1 @@ +37 \ No newline at end of file diff --git a/tests/fragment0/priority1.vsl b/tests/fragment0/priority1.vsl new file mode 100644 index 0000000..ddfb99b --- /dev/null +++ b/tests/fragment0/priority1.vsl @@ -0,0 +1 @@ +FUNC INT main() RETURN 4 + 6 * 5 + 3 \ No newline at end of file diff --git a/tests/fragment0/priority2.test_ret b/tests/fragment0/priority2.test_ret new file mode 100644 index 0000000..301160a --- /dev/null +++ b/tests/fragment0/priority2.test_ret @@ -0,0 +1 @@ +8 \ No newline at end of file diff --git a/tests/fragment0/priority2.vsl b/tests/fragment0/priority2.vsl new file mode 100644 index 0000000..1e6a480 --- /dev/null +++ b/tests/fragment0/priority2.vsl @@ -0,0 +1 @@ +FUNC INT main() RETURN 1 + 2 * (4 + 5 % 3 + 2) - 3 - 16 / 8 - 4 \ No newline at end of file diff --git a/tests/fragment0/sub0.test_ret b/tests/fragment0/sub0.test_ret new file mode 100644 index 0000000..e440e5c --- /dev/null +++ b/tests/fragment0/sub0.test_ret @@ -0,0 +1 @@ +3 \ No newline at end of file diff --git a/tests/fragment0/sub0.vsl b/tests/fragment0/sub0.vsl new file mode 100644 index 0000000..78b7338 --- /dev/null +++ b/tests/fragment0/sub0.vsl @@ -0,0 +1 @@ +FUNC INT main() RETURN 8-5 \ No newline at end of file diff --git a/tests/fragment0/sub1.test_ret b/tests/fragment0/sub1.test_ret new file mode 100644 index 0000000..615be70 --- /dev/null +++ b/tests/fragment0/sub1.test_ret @@ -0,0 +1 @@ +85 \ No newline at end of file diff --git a/tests/fragment0/sub1.vsl b/tests/fragment0/sub1.vsl new file mode 100644 index 0000000..7536083 --- /dev/null +++ b/tests/fragment0/sub1.vsl @@ -0,0 +1 @@ +FUNC INT main() RETURN 100 + (10 - 20 - 5) \ No newline at end of file diff --git a/tests/testlevel1/level1if2.test_ret b/tests/fragment1/assign1.test_ret similarity index 100% rename from tests/testlevel1/level1if2.test_ret rename to tests/fragment1/assign1.test_ret diff --git a/tests/fragment1/assign1.vsl b/tests/fragment1/assign1.vsl new file mode 100644 index 0000000..545d8d0 --- /dev/null +++ b/tests/fragment1/assign1.vsl @@ -0,0 +1,5 @@ +FUNC INT main() { + INT x + x := 1 + RETURN x +} \ No newline at end of file diff --git a/tests/testlevel1/level1print2.test_out b/tests/fragment1/assign2.test_ret similarity index 100% rename from tests/testlevel1/level1print2.test_out rename to tests/fragment1/assign2.test_ret diff --git a/tests/fragment1/assign2.vsl b/tests/fragment1/assign2.vsl new file mode 100644 index 0000000..f668639 --- /dev/null +++ b/tests/fragment1/assign2.vsl @@ -0,0 +1,6 @@ +FUNC INT main() { + INT x, y + x := 1 + y := x + RETURN y +} \ No newline at end of file diff --git a/tests/testlevel1/level1function.test_ret b/tests/fragment1/block.test_ret similarity index 100% rename from tests/testlevel1/level1function.test_ret rename to tests/fragment1/block.test_ret diff --git a/tests/testlevel1/level1block.vsl b/tests/fragment1/block.vsl similarity index 100% rename from tests/testlevel1/level1block.vsl rename to tests/fragment1/block.vsl diff --git a/tests/fragment1/decl.test_ret b/tests/fragment1/decl.test_ret new file mode 100644 index 0000000..d8263ee --- /dev/null +++ b/tests/fragment1/decl.test_ret @@ -0,0 +1 @@ +2 \ No newline at end of file diff --git a/tests/fragment1/decl.vsl b/tests/fragment1/decl.vsl new file mode 100644 index 0000000..ddfafcb --- /dev/null +++ b/tests/fragment1/decl.vsl @@ -0,0 +1,4 @@ +FUNC INT main() { + INT x + RETURN 2 +} \ No newline at end of file diff --git a/tests/testlevel1/hello_world.test_out b/tests/fragment1/hello_world.test_out similarity index 100% rename from tests/testlevel1/hello_world.test_out rename to tests/fragment1/hello_world.test_out diff --git a/tests/testlevel1/hello_world.vsl b/tests/fragment1/hello_world.vsl similarity index 100% rename from tests/testlevel1/hello_world.vsl rename to tests/fragment1/hello_world.vsl diff --git a/tests/fragment1/if1.test_ret b/tests/fragment1/if1.test_ret new file mode 100644 index 0000000..56a6051 --- /dev/null +++ b/tests/fragment1/if1.test_ret @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/tests/testlevel1/level1if1.vsl b/tests/fragment1/if1.vsl similarity index 100% rename from tests/testlevel1/level1if1.vsl rename to tests/fragment1/if1.vsl diff --git a/tests/fragment1/if2.test_ret b/tests/fragment1/if2.test_ret new file mode 100644 index 0000000..56a6051 --- /dev/null +++ b/tests/fragment1/if2.test_ret @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/tests/testlevel1/level1if2.vsl b/tests/fragment1/if2.vsl similarity index 100% rename from tests/testlevel1/level1if2.vsl rename to tests/fragment1/if2.vsl diff --git a/tests/testlevel1/level1print1.test_out b/tests/fragment1/print1.test_out similarity index 100% rename from tests/testlevel1/level1print1.test_out rename to tests/fragment1/print1.test_out diff --git a/tests/testlevel1/level1print1.vsl b/tests/fragment1/print1.vsl similarity index 100% rename from tests/testlevel1/level1print1.vsl rename to tests/fragment1/print1.vsl diff --git a/tests/fragment1/print2.test_out b/tests/fragment1/print2.test_out new file mode 100644 index 0000000..56a6051 --- /dev/null +++ b/tests/fragment1/print2.test_out @@ -0,0 +1 @@ +1 \ No newline at end of file diff --git a/tests/testlevel1/level1print2.vsl b/tests/fragment1/print2.vsl similarity index 100% rename from tests/testlevel1/level1print2.vsl rename to tests/fragment1/print2.vsl diff --git a/tests/testlevel1/level1print3.test_out b/tests/fragment1/print3.test_out similarity index 100% rename from tests/testlevel1/level1print3.test_out rename to tests/fragment1/print3.test_out diff --git a/tests/testlevel1/level1print3.vsl b/tests/fragment1/print3.vsl similarity index 100% rename from tests/testlevel1/level1print3.vsl rename to tests/fragment1/print3.vsl diff --git a/tests/testlevel1/level1expr.test_out b/tests/fragment1/print4.test_out similarity index 91% rename from tests/testlevel1/level1expr.test_out rename to tests/fragment1/print4.test_out index ec77679..ee7c4b2 100644 --- a/tests/testlevel1/level1expr.test_out +++ b/tests/fragment1/print4.test_out @@ -5,3 +5,4 @@ 5+1 = 6 5* (5+7) = 60 5* 5+7 = 32 +-2 = -2 \ No newline at end of file diff --git a/tests/testlevel1/level1expr.vsl b/tests/fragment1/print4.vsl similarity index 93% rename from tests/testlevel1/level1expr.vsl rename to tests/fragment1/print4.vsl index b95181a..db3459c 100644 --- a/tests/testlevel1/level1expr.vsl +++ b/tests/fragment1/print4.vsl @@ -6,5 +6,6 @@ FUNC VOID main() { PRINT 5,"+",1," = ", 5+1 ,"\n" PRINT 5,"* (",5,"+",7,") = ", 5*(5+7) ,"\n" PRINT 5,"* ",5,"+",7," = ", 5 * 5 + 7 ,"\n" + PRINT "-2 = ", -2 } diff --git a/tests/testlevel2/level2read.test_in b/tests/fragment1/read0.test_in similarity index 100% rename from tests/testlevel2/level2read.test_in rename to tests/fragment1/read0.test_in diff --git a/tests/testlevel2/level2read.test_out b/tests/fragment1/read0.test_out similarity index 100% rename from tests/testlevel2/level2read.test_out rename to tests/fragment1/read0.test_out diff --git a/tests/testlevel2/level2read.vsl b/tests/fragment1/read0.vsl similarity index 100% rename from tests/testlevel2/level2read.vsl rename to tests/fragment1/read0.vsl diff --git a/tests/testlevel2/level2assign.test_in b/tests/fragment1/read1.test_in similarity index 100% rename from tests/testlevel2/level2assign.test_in rename to tests/fragment1/read1.test_in diff --git a/tests/testlevel2/level2assign.test_out b/tests/fragment1/read1.test_out similarity index 100% rename from tests/testlevel2/level2assign.test_out rename to tests/fragment1/read1.test_out diff --git a/tests/testlevel2/level2assign.vsl b/tests/fragment1/read1.vsl similarity index 100% rename from tests/testlevel2/level2assign.vsl rename to tests/fragment1/read1.vsl diff --git a/tests/fragment1/read2.test_in b/tests/fragment1/read2.test_in new file mode 100644 index 0000000..04453bb --- /dev/null +++ b/tests/fragment1/read2.test_in @@ -0,0 +1,3 @@ +2 +7 + diff --git a/tests/fragment1/read2.test_out b/tests/fragment1/read2.test_out new file mode 100644 index 0000000..c69bc78 --- /dev/null +++ b/tests/fragment1/read2.test_out @@ -0,0 +1 @@ +x vaut 2 et y vaut 7 \ No newline at end of file diff --git a/tests/fragment1/read2.vsl b/tests/fragment1/read2.vsl new file mode 100644 index 0000000..a7555ff --- /dev/null +++ b/tests/fragment1/read2.vsl @@ -0,0 +1,5 @@ +FUNC VOID main() { + INT x,y + READ x, y + PRINT "x vaut ",x," et y vaut ",y + } \ No newline at end of file diff --git a/tests/testlevel1/level1sequence.test_out b/tests/fragment1/sequence.test_out similarity index 100% rename from tests/testlevel1/level1sequence.test_out rename to tests/fragment1/sequence.test_out diff --git a/tests/testlevel1/level1sequence.vsl b/tests/fragment1/sequence.vsl similarity index 100% rename from tests/testlevel1/level1sequence.vsl rename to tests/fragment1/sequence.vsl diff --git a/tests/testlevel1/level1proto.test_ret b/tests/fragment1/while1.test_ret similarity index 100% rename from tests/testlevel1/level1proto.test_ret rename to tests/fragment1/while1.test_ret diff --git a/tests/testlevel1/level1while1.vsl b/tests/fragment1/while1.vsl similarity index 100% rename from tests/testlevel1/level1while1.vsl rename to tests/fragment1/while1.vsl diff --git a/tests/fragment1/while2.test_ret b/tests/fragment1/while2.test_ret new file mode 100644 index 0000000..3ca9062 --- /dev/null +++ b/tests/fragment1/while2.test_ret @@ -0,0 +1 @@ +84 \ No newline at end of file diff --git a/tests/fragment1/while2.vsl b/tests/fragment1/while2.vsl new file mode 100644 index 0000000..7c6f421 --- /dev/null +++ b/tests/fragment1/while2.vsl @@ -0,0 +1,10 @@ +FUNC INT main() { + INT x, y x := + 42 y:=0 + WHILE x DO { + x := x - 1 + y := y + 2 + } DONE + RETURN y +} + diff --git a/tests/testlevel2/level2call.test_out b/tests/fragment2/call.test_out similarity index 100% rename from tests/testlevel2/level2call.test_out rename to tests/fragment2/call.test_out diff --git a/tests/testlevel2/level2call.vsl b/tests/fragment2/call.vsl similarity index 100% rename from tests/testlevel2/level2call.vsl rename to tests/fragment2/call.vsl diff --git a/tests/testlevel2/level2call2.test_out b/tests/fragment2/call2.test_out similarity index 100% rename from tests/testlevel2/level2call2.test_out rename to tests/fragment2/call2.test_out diff --git a/tests/testlevel2/level2call2.vsl b/tests/fragment2/call2.vsl similarity index 100% rename from tests/testlevel2/level2call2.vsl rename to tests/fragment2/call2.vsl diff --git a/tests/testlevel2/level2expr.test_out b/tests/fragment2/call3expr.test_out similarity index 100% rename from tests/testlevel2/level2expr.test_out rename to tests/fragment2/call3expr.test_out diff --git a/tests/testlevel2/level2expr.vsl b/tests/fragment2/call3expr.vsl similarity index 100% rename from tests/testlevel2/level2expr.vsl rename to tests/fragment2/call3expr.vsl diff --git a/tests/testlevel2/level2if1.test_out b/tests/fragment2/call4if.test_out similarity index 100% rename from tests/testlevel2/level2if1.test_out rename to tests/fragment2/call4if.test_out diff --git a/tests/testlevel2/level2if1.vsl b/tests/fragment2/call4if.vsl similarity index 100% rename from tests/testlevel2/level2if1.vsl rename to tests/fragment2/call4if.vsl diff --git a/tests/testlevel1/level1while1.test_ret b/tests/fragment2/proto1.test_ret similarity index 100% rename from tests/testlevel1/level1while1.test_ret rename to tests/fragment2/proto1.test_ret diff --git a/tests/testlevel1/level1proto1.vsl b/tests/fragment2/proto1.vsl similarity index 100% rename from tests/testlevel1/level1proto1.vsl rename to tests/fragment2/proto1.vsl diff --git a/tests/testlevel2/level2proto.test_out b/tests/fragment2/proto2.test_out similarity index 100% rename from tests/testlevel2/level2proto.test_out rename to tests/fragment2/proto2.test_out diff --git a/tests/testlevel2/level2proto.vsl b/tests/fragment2/proto2.vsl similarity index 100% rename from tests/testlevel2/level2proto.vsl rename to tests/fragment2/proto2.vsl diff --git a/tests/testlevel3/level3tab1.test_in b/tests/fragment3/tab1.test_in similarity index 100% rename from tests/testlevel3/level3tab1.test_in rename to tests/fragment3/tab1.test_in diff --git a/tests/testlevel3/level3tab1.test_out b/tests/fragment3/tab1.test_out similarity index 100% rename from tests/testlevel3/level3tab1.test_out rename to tests/fragment3/tab1.test_out diff --git a/tests/testlevel3/level3tab1.vsl b/tests/fragment3/tab1.vsl similarity index 100% rename from tests/testlevel3/level3tab1.vsl rename to tests/fragment3/tab1.vsl diff --git a/tests/testlevel3/level3tab2.test_in b/tests/fragment3/tab2.test_in similarity index 100% rename from tests/testlevel3/level3tab2.test_in rename to tests/fragment3/tab2.test_in diff --git a/tests/testlevel3/level3tab2.test_out b/tests/fragment3/tab2.test_out similarity index 100% rename from tests/testlevel3/level3tab2.test_out rename to tests/fragment3/tab2.test_out diff --git a/tests/testlevel3/level3tab2.vsl b/tests/fragment3/tab2.vsl similarity index 100% rename from tests/testlevel3/level3tab2.vsl rename to tests/fragment3/tab2.vsl diff --git a/tests/testlevel3/level3tab3.test_in b/tests/fragment3/tab3.test_in similarity index 100% rename from tests/testlevel3/level3tab3.test_in rename to tests/fragment3/tab3.test_in diff --git a/tests/testlevel3/level3tab3.test_out b/tests/fragment3/tab3.test_out similarity index 100% rename from tests/testlevel3/level3tab3.test_out rename to tests/fragment3/tab3.test_out diff --git a/tests/testlevel3/level3tab3.vsl b/tests/fragment3/tab3.vsl similarity index 100% rename from tests/testlevel3/level3tab3.vsl rename to tests/fragment3/tab3.vsl diff --git a/tests/testlevel3/level3tab4.test_in b/tests/fragment3/tab4.test_in similarity index 100% rename from tests/testlevel3/level3tab4.test_in rename to tests/fragment3/tab4.test_in diff --git a/tests/testlevel3/level3tab4.test_out b/tests/fragment3/tab4.test_out similarity index 100% rename from tests/testlevel3/level3tab4.test_out rename to tests/fragment3/tab4.test_out diff --git a/tests/testlevel3/level3tab4.vsl b/tests/fragment3/tab4.vsl similarity index 100% rename from tests/testlevel3/level3tab4.vsl rename to tests/fragment3/tab4.vsl diff --git a/tests/testlevel3/level3tab5.test_in b/tests/fragment3/tab5.test_in similarity index 100% rename from tests/testlevel3/level3tab5.test_in rename to tests/fragment3/tab5.test_in diff --git a/tests/testlevel3/level3tab5.test_out b/tests/fragment3/tab5.test_out similarity index 100% rename from tests/testlevel3/level3tab5.test_out rename to tests/fragment3/tab5.test_out diff --git a/tests/testlevel3/level3tab5.vsl b/tests/fragment3/tab5.vsl similarity index 100% rename from tests/testlevel3/level3tab5.vsl rename to tests/fragment3/tab5.vsl diff --git a/tests/testlevelerror/test_decl_scope.vsl b/tests/testSemanticError/test_decl_scope.vsl similarity index 100% rename from tests/testlevelerror/test_decl_scope.vsl rename to tests/testSemanticError/test_decl_scope.vsl diff --git a/tests/testlevelerror/test_decl_scope2.vsl b/tests/testSemanticError/test_decl_scope2.vsl similarity index 100% rename from tests/testlevelerror/test_decl_scope2.vsl rename to tests/testSemanticError/test_decl_scope2.vsl diff --git a/tests/testlevelerror/test_decl_scope3.vsl b/tests/testSemanticError/test_decl_scope3.vsl similarity index 100% rename from tests/testlevelerror/test_decl_scope3.vsl rename to tests/testSemanticError/test_decl_scope3.vsl diff --git a/tests/testlevelerror/test_func_redecl.vsl b/tests/testSemanticError/test_func_redecl.vsl similarity index 100% rename from tests/testlevelerror/test_func_redecl.vsl rename to tests/testSemanticError/test_func_redecl.vsl diff --git a/tests/testlevelerror/test_incompat_proto.vsl b/tests/testSemanticError/test_incompat_proto.vsl similarity index 100% rename from tests/testlevelerror/test_incompat_proto.vsl rename to tests/testSemanticError/test_incompat_proto.vsl diff --git a/tests/testlevelerror/test_incompat_proto2.vsl b/tests/testSemanticError/test_incompat_proto2.vsl similarity index 100% rename from tests/testlevelerror/test_incompat_proto2.vsl rename to tests/testSemanticError/test_incompat_proto2.vsl diff --git a/tests/testlevelerror/test_incompat_proto3.vsl b/tests/testSemanticError/test_incompat_proto3.vsl similarity index 100% rename from tests/testlevelerror/test_incompat_proto3.vsl rename to tests/testSemanticError/test_incompat_proto3.vsl diff --git a/tests/testlevelerror/test_incompat_proto4.vsl b/tests/testSemanticError/test_incompat_proto4.vsl similarity index 100% rename from tests/testlevelerror/test_incompat_proto4.vsl rename to tests/testSemanticError/test_incompat_proto4.vsl diff --git a/tests/testlevelerror/test_incompat_proto5.vsl b/tests/testSemanticError/test_incompat_proto5.vsl similarity index 100% rename from tests/testlevelerror/test_incompat_proto5.vsl rename to tests/testSemanticError/test_incompat_proto5.vsl diff --git a/tests/testlevelerror/test_invalid_assign.vsl b/tests/testSemanticError/test_invalid_assign.vsl similarity index 100% rename from tests/testlevelerror/test_invalid_assign.vsl rename to tests/testSemanticError/test_invalid_assign.vsl diff --git a/tests/testlevelerror/test_invalid_assign2.vsl b/tests/testSemanticError/test_invalid_assign2.vsl similarity index 100% rename from tests/testlevelerror/test_invalid_assign2.vsl rename to tests/testSemanticError/test_invalid_assign2.vsl diff --git a/tests/testlevelerror/test_invalid_call.vsl b/tests/testSemanticError/test_invalid_call.vsl similarity index 100% rename from tests/testlevelerror/test_invalid_call.vsl rename to tests/testSemanticError/test_invalid_call.vsl diff --git a/tests/testlevelerror/test_invalid_call2.vsl b/tests/testSemanticError/test_invalid_call2.vsl similarity index 100% rename from tests/testlevelerror/test_invalid_call2.vsl rename to tests/testSemanticError/test_invalid_call2.vsl diff --git a/tests/testlevelerror/test_invalid_call3.vsl b/tests/testSemanticError/test_invalid_call3.vsl similarity index 100% rename from tests/testlevelerror/test_invalid_call3.vsl rename to tests/testSemanticError/test_invalid_call3.vsl diff --git a/tests/testlevelerror/test_invalid_recursion.vsl b/tests/testSemanticError/test_invalid_recursion.vsl similarity index 100% rename from tests/testlevelerror/test_invalid_recursion.vsl rename to tests/testSemanticError/test_invalid_recursion.vsl diff --git a/tests/testlevelerror/test_invalid_return.vsl b/tests/testSemanticError/test_invalid_return.vsl similarity index 100% rename from tests/testlevelerror/test_invalid_return.vsl rename to tests/testSemanticError/test_invalid_return.vsl diff --git a/tests/testlevelerror/test_undecl_func.vsl b/tests/testSemanticError/test_undecl_func.vsl similarity index 100% rename from tests/testlevelerror/test_undecl_func.vsl rename to tests/testSemanticError/test_undecl_func.vsl diff --git a/tests/testlevelerror/test_undecl_var.vsl b/tests/testSemanticError/test_undecl_var.vsl similarity index 100% rename from tests/testlevelerror/test_undecl_var.vsl rename to tests/testSemanticError/test_undecl_var.vsl diff --git a/tests/testlevelerror/test_var_redecl.vsl b/tests/testSemanticError/test_var_redecl.vsl similarity index 100% rename from tests/testlevelerror/test_var_redecl.vsl rename to tests/testSemanticError/test_var_redecl.vsl diff --git a/tests/testlevel3/level3block2.test_out b/tests/testlevel3/level3block2.test_out deleted file mode 100644 index e69de29..0000000 diff --git a/tests/testlevel4/level4testcarre.test_out b/tests/testsAdvanced/carre.test_out similarity index 100% rename from tests/testlevel4/level4testcarre.test_out rename to tests/testsAdvanced/carre.test_out diff --git a/tests/testlevel4/level4testcarre.vsl b/tests/testsAdvanced/carre.vsl similarity index 100% rename from tests/testlevel4/level4testcarre.vsl rename to tests/testsAdvanced/carre.vsl diff --git a/tests/testsAdvanced/diverge.test_ret b/tests/testsAdvanced/diverge.test_ret new file mode 100644 index 0000000..c227083 --- /dev/null +++ b/tests/testsAdvanced/diverge.test_ret @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/tests/testsAdvanced/diverge.vsl b/tests/testsAdvanced/diverge.vsl new file mode 100644 index 0000000..f5bbe11 --- /dev/null +++ b/tests/testsAdvanced/diverge.vsl @@ -0,0 +1,6 @@ +FUNC VOID main() { + INT x + PRINT "Toto" + WHILE 1 DO { + x := 1 } DONE + } diff --git a/tests/testsAdvanced/divergeDifficile.test_ret b/tests/testsAdvanced/divergeDifficile.test_ret new file mode 100644 index 0000000..c227083 --- /dev/null +++ b/tests/testsAdvanced/divergeDifficile.test_ret @@ -0,0 +1 @@ +0 \ No newline at end of file diff --git a/tests/testlevel4/level4diverge.vsl b/tests/testsAdvanced/divergeDifficile.vsl similarity index 100% rename from tests/testlevel4/level4diverge.vsl rename to tests/testsAdvanced/divergeDifficile.vsl diff --git a/tests/testlevel4/level4testfact.test_out b/tests/testsAdvanced/fact.test_out similarity index 100% rename from tests/testlevel4/level4testfact.test_out rename to tests/testsAdvanced/fact.test_out diff --git a/tests/testlevel4/level4testfact.vsl b/tests/testsAdvanced/fact.vsl similarity index 100% rename from tests/testlevel4/level4testfact.vsl rename to tests/testsAdvanced/fact.vsl diff --git a/tests/testlevel4/level4testfact2.test_out b/tests/testsAdvanced/fact2.test_out similarity index 100% rename from tests/testlevel4/level4testfact2.test_out rename to tests/testsAdvanced/fact2.test_out diff --git a/tests/testlevel4/level4testfact2.vsl b/tests/testsAdvanced/fact2.vsl similarity index 100% rename from tests/testlevel4/level4testfact2.vsl rename to tests/testsAdvanced/fact2.vsl diff --git a/tests/testsAdvanced/fact3.test_in b/tests/testsAdvanced/fact3.test_in new file mode 100644 index 0000000..9a03714 --- /dev/null +++ b/tests/testsAdvanced/fact3.test_in @@ -0,0 +1 @@ +10 \ No newline at end of file diff --git a/tests/testsAdvanced/fact3.test_out b/tests/testsAdvanced/fact3.test_out new file mode 100644 index 0000000..52e3f12 --- /dev/null +++ b/tests/testsAdvanced/fact3.test_out @@ -0,0 +1,10 @@ +Que vaut n ?f(0) = 1 +f(1) = 1 +f(2) = 2 +f(3) = 6 +f(4) = 24 +f(5) = 120 +f(6) = 720 +f(7) = 5040 +f(8) = 40320 +f(9) = 362880 diff --git a/tests/testsAdvanced/fact3.vsl b/tests/testsAdvanced/fact3.vsl new file mode 100644 index 0000000..25e3e45 --- /dev/null +++ b/tests/testsAdvanced/fact3.vsl @@ -0,0 +1,30 @@ + PROTO INT fact(k) + FUNC VOID affichetab(taille, t[]) { + INT i + i := 0 + WHILE taille - i + DO { + PRINT "f(", i, ") = ", t[i], "\n" + i := i+1 + } + DONE + } + FUNC VOID main() { + INT n + PRINT "Que vaut n ?" + READ n + { + INT i, t[n] + i := 0 + WHILE n - i + DO { + t[i] := fact(i) + i := i+1 + } + DONE + affichetab(n, t) + } + } + FUNC INT fact(n) + IF n THEN RETURN n* fact(n-1) + ELSE RETURN 1 FI diff --git a/tests/testlevel4/level4testhanoi.test_out b/tests/testsAdvanced/hanoi.test_out similarity index 100% rename from tests/testlevel4/level4testhanoi.test_out rename to tests/testsAdvanced/hanoi.test_out diff --git a/tests/testlevel4/level4testhanoi.vsl b/tests/testsAdvanced/hanoi.vsl similarity index 100% rename from tests/testlevel4/level4testhanoi.vsl rename to tests/testsAdvanced/hanoi.vsl diff --git a/tests/testlevel4/level4testheap.test_in b/tests/testsAdvanced/heapsort.test_in similarity index 100% rename from tests/testlevel4/level4testheap.test_in rename to tests/testsAdvanced/heapsort.test_in diff --git a/tests/testlevel4/level4testheap.test_out b/tests/testsAdvanced/heapsort.test_out similarity index 100% rename from tests/testlevel4/level4testheap.test_out rename to tests/testsAdvanced/heapsort.test_out diff --git a/tests/testlevel4/level4testheap.vsl b/tests/testsAdvanced/heapsort.vsl similarity index 100% rename from tests/testlevel4/level4testheap.vsl rename to tests/testsAdvanced/heapsort.vsl diff --git a/tests/testlevel3/level3block.test_in b/tests/testsAdvanced/portee.test_in similarity index 100% rename from tests/testlevel3/level3block.test_in rename to tests/testsAdvanced/portee.test_in diff --git a/tests/testlevel3/level3block.test_out b/tests/testsAdvanced/portee.test_out similarity index 100% rename from tests/testlevel3/level3block.test_out rename to tests/testsAdvanced/portee.test_out diff --git a/tests/testlevel3/level3block.vsl b/tests/testsAdvanced/portee.vsl similarity index 100% rename from tests/testlevel3/level3block.vsl rename to tests/testsAdvanced/portee.vsl diff --git a/tests/testlevel3/level3block1.test_out b/tests/testsAdvanced/portee2.test_out similarity index 100% rename from tests/testlevel3/level3block1.test_out rename to tests/testsAdvanced/portee2.test_out diff --git a/tests/testlevel3/level3block1.vsl b/tests/testsAdvanced/portee2.vsl similarity index 100% rename from tests/testlevel3/level3block1.vsl rename to tests/testsAdvanced/portee2.vsl diff --git a/tests/testlevel4/level4t1.test_out b/tests/testsAdvanced/portee3.test_out similarity index 100% rename from tests/testlevel4/level4t1.test_out rename to tests/testsAdvanced/portee3.test_out diff --git a/tests/testlevel4/level4t1.vsl b/tests/testsAdvanced/portee3.vsl similarity index 100% rename from tests/testlevel4/level4t1.vsl rename to tests/testsAdvanced/portee3.vsl diff --git a/tests/testlevel4/level4testtri.test_in b/tests/testsAdvanced/tri.test_in similarity index 100% rename from tests/testlevel4/level4testtri.test_in rename to tests/testsAdvanced/tri.test_in diff --git a/tests/testlevel4/level4testtri.test_out b/tests/testsAdvanced/tri.test_out similarity index 100% rename from tests/testlevel4/level4testtri.test_out rename to tests/testsAdvanced/tri.test_out diff --git a/tests/testlevel4/level4testtri.vsl b/tests/testsAdvanced/tri.vsl similarity index 100% rename from tests/testlevel4/level4testtri.vsl rename to tests/testsAdvanced/tri.vsl