import org.scalatest.flatspec.AnyFlatSpec import wacc.frontend.syntax.ImportHandler class importsTest extends CodeGeneratorTestSuite { /* Wrapper for uniform testing */ def test(input: os.Path): (Boolean, String) = { // Create the importHandler instance val importHandler = ImportHandler() super.test(input, None, Some(importHandler)) } // IGNORE SET: Contains files/directories to ignore in testing val ignoreSet: Set[os.Path] = Set() // ---------------------------------------------------- // Testing programs with syntax errors // ---------------------------------------------------- behavior of "TESTING IMPORT HANDLER IN syntaxErr" genTest("Import Handler", ignoreSet, test, "fail", os.list(invalidSyntaxArray)) genTest("Import Handler", ignoreSet, test, "fail", os.list(invalidSyntaxBasic)) genTest("Import Handler", ignoreSet, test, "fail", os.list(invalidSyntaxExpressions)) genTest("Import Handler", ignoreSet, test, "fail", os.list(invalidSyntaxFunction)) genTest("Import Handler", ignoreSet, test, "fail", os.list(invalidSyntaxIf)) genTest("Import Handler", ignoreSet, test, "fail", os.list(invalidSyntaxLiteral)) genTest("Import Handler", ignoreSet, test, "fail", os.list(invalidSyntaxPairs)) genTest("Import Handler", ignoreSet, test, "fail", os.list(invalidSyntaxPrint)) genTest("Import Handler", ignoreSet, test, "fail", os.list(invalidSyntaxSequence)) genTest("Import Handler", ignoreSet, test, "fail", os.list(invalidSyntaxVariables)) genTest("Import Handler", ignoreSet, test, "fail", os.list(invalidSyntaxWhile)) // ---------------------------------------------------- // Testing programs with semantic errors // ---------------------------------------------------- behavior of "TESTING IMPORT HANDLER IN semanticErr" genTest("Import Handler", ignoreSet, test, "fail", os.list(invalidSemanticArray)) genTest("Import Handler", ignoreSet, test, "fail", os.list(invalidSemanticExit)) genTest("Import Handler", ignoreSet, test, "fail", os.list(invalidSemanticExpressions)) genTest("Import Handler", ignoreSet, test, "fail", os.list(invalidSemanticFunction)) genTest("Import Handler", ignoreSet, test, "fail", os.list(invalidSemanticIf)) genTest("Import Handler", ignoreSet, test, "fail", os.list(invalidSemanticIO)) genTest("Import Handler", ignoreSet, test, "fail", os.list(invalidSemanticMultiple)) genTest("Import Handler", ignoreSet, test, "fail", os.list(invalidSemanticPairs)) genTest("Import Handler", ignoreSet, test, "fail", os.list(invalidSemanticPrint)) genTest("Import Handler", ignoreSet, test, "fail", os.list(invalidSemanticRead)) genTest("Import Handler", ignoreSet, test, "fail", os.list(invalidSemanticScope)) genTest("Import Handler", ignoreSet, test, "fail", os.list(invalidSemanticVariables)) genTest("Import Handler", ignoreSet, test, "fail", os.list(invalidSemanticWhile)) // ---------------------------------------------------- // Testing valid programs // ---------------------------------------------------- behavior of "TESTING IMPORT HANDLER IN valid/basic/exit" genTest("Import Handler", ignoreSet, test, "succeed", os.list(validBasicExit)) behavior of "TESTING IMPORT HANDLER IN valid/basic/skip" genTest("Import Handler", ignoreSet, test, "succeed", os.list(validBasicSkip)) behavior of "TESTING IMPORT HANDLER IN valid/expressions" genTest("Import Handler", ignoreSet, test, "succeed", os.list(validExpression)) behavior of "TESTING IMPORT HANDLER IN valid/function/nested_functions" genTest("Import Handler", ignoreSet, test, "succeed", os.list(validFunctionNestFuns)) behavior of "TESTING IMPORT HANDLER IN valid/function/simple_functions" genTest("Import Handler", ignoreSet, test, "succeed", os.list(validFunctionSimpFuns)) behavior of "TESTING IMPORT HANDLER IN valid/function/overload_functions" genTest("Import Handler", ignoreSet, test, "succeed", os.list(validFunctionOverFuns)) behavior of "TESTING IMPORT HANDLER IN valid/function/imported_functions" genTest("Import Handler", ignoreSet, test, "succeed", os.list(validFunctionImports)) behavior of "TESTING IMPORT HANDLER IN valid/if" genTest("Import Handler", ignoreSet, test, "succeed", os.list(validIf)) behavior of "TESTING IMPORT HANDLER IN valid/IO/print" genTest("Import Handler", ignoreSet, test, "succeed", os.list(validIOPrint)) behavior of "TESTING IMPORT HANDLER IN valid/IO/read" genTest("Import Handler", ignoreSet, test, "succeed", os.list(validIORead)) behavior of "TESTING IMPORT HANDLER IN valid/IO/special" genTest("Import Handler", ignoreSet, test, "succeed", os.list(validIOSpecial)) behavior of "TESTING IMPORT HANDLER IN valid/pairs" genTest("Import Handler", ignoreSet, test, "succeed", os.list(validPair)) behavior of "TESTING IMPORT HANDLER IN valid/runtimeErr/arrayOutOfBounds" genTest("Import Handler", ignoreSet, test, "succeed", os.list(validRTEArrOOB)) behavior of "TESTING IMPORT HANDLER IN valid/runtimeErr/badChar" genTest("Import Handler", ignoreSet, test, "succeed", os.list(validRTEBadChar)) behavior of "TESTING IMPORT HANDLER IN valid/runtimeErr/divideByZero" genTest("Import Handler", ignoreSet, test, "succeed", os.list(validRTEDivByZero)) behavior of "TESTING IMPORT HANDLER IN valid/runtimeErr/integerOverflow" genTest("Import Handler", ignoreSet, test, "succeed", os.list(validRTEIntOverflow)) behavior of "TESTING IMPORT HANDLER IN valid/runtimeErr/nullDereference" genTest("Import Handler", ignoreSet, test, "succeed", os.list(validRTENullDereference)) behavior of "TESTING IMPORT HANDLER IN valid/scope" genTest("Import Handler", ignoreSet, test, "succeed", os.list(validScope)) behavior of "TESTING IMPORT HANDLER IN valid/sequence" genTest("Import Handler", ignoreSet, test, "succeed", os.list(validSequence)) behavior of "TESTING IMPORT HANDLER IN valid/variables" genTest("Import Handler", ignoreSet, test, "succeed", os.list(validVariables)) behavior of "TESTING IMPORT HANDLER IN valid/while" genTest("Import Handler", ignoreSet, test, "succeed", os.list(validWhile)) }