module TestLexer(tests) where import Test.HUnit import Parser.Lexer emptyTokenList :: [Token] emptyTokenList = [] testCommentSomething = TestCase $ assertEqual "scan '/*Something*/'" emptyTokenList $ alexScanTokens "/*Something*/" testEmptyComment = TestCase $ assertEqual "scan '/*x*/'" emptyTokenList $ alexScanTokens "/**/" testLineComment = TestCase $ assertEqual "scan '// comment'" emptyTokenList $ alexScanTokens "// comment" testLineCommentEnds = TestCase $ assertEqual "scan '// com\\n'" emptyTokenList $ alexScanTokens "// com\n" testIdentifier = TestCase $ assertEqual "scan 'identifier'" [IDENTIFIER "identifier"] $ alexScanTokens "identifier" testShortIdentifier = TestCase $ assertEqual "scan 'i'" [IDENTIFIER "i"] $ alexScanTokens "i" testIdentifierWithNumber = TestCase $ assertEqual "scan 'i2'" [IDENTIFIER "i2"] $ alexScanTokens "i2" testKeywordBreak = TestCase $ assertEqual "scan 'break'" [BREAK] $ alexScanTokens "break" testKeywordInt = TestCase $ assertEqual "scan 'int'" [INT] $ alexScanTokens "int" tests = TestList [ TestLabel "TestCommentSomething" testCommentSomething, TestLabel "TestEmptyComment" testEmptyComment, TestLabel "TestLineComment" testLineComment, TestLabel "TestLineCommentEnds" testLineCommentEnds, TestLabel "TestIdentifier" testIdentifier, TestLabel "TestShortIdentifier" testShortIdentifier, TestLabel "TestIdentifierWithNumber" testIdentifierWithNumber, TestLabel "TestKeywordBreak" testKeywordBreak, TestLabel "TestKeywordInt" testKeywordInt ]