WACC/src/test/wacc/imports.scala
2025-05-24 22:13:16 +01:00

122 lines
6.0 KiB
Scala

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))
}