31 lines
1.5 KiB
Haskell
31 lines
1.5 KiB
Haskell
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
|
|
] |