122 lines
6.0 KiB
Scala
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))
|
|
}
|