summaryrefslogtreecommitdiff
path: root/Thue/Test.hs
blob: 0273c48117f67f29f7b14437e27a0df4a473970d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
module Thue.Test (
	parserTests,
	extractInfixTests,
	tests
    ) where


import Test.HUnit
import Text.Parsec.Error
import Thue.Parser
import Thue.Interpreter


instance Eq Text.Parsec.Error.ParseError




parser0 = (Right (ThueProgram [ThueRule "a" "b"] "a")) ~=? (parseThue "a::=b\n::=\na")

parser1 = (Right (ThueProgram [] "b")) ~=? (parseThue "::=\nb")



extractInfix0 = Nothing ~=? (extractInfix [1,2] [3,4,5])

extractInfix1 = (Just ([1,2],[5,6])) ~=? (extractInfix [3,4] [1,2,3,4,5,6])

extractInfix2 = (Just ([],[3,4])) ~=? (extractInfix [0,1,2] [0,1,2,3,4])

extractInfix3 = (Just ([1],[])) ~=? (extractInfix [2,3] [1,2,3])

extractInfix4 = (Just ([],[1])) ~=? (extractInfix [] [1])

extractInfix5 = (Just ("before","after")) ~=? (extractInfix "middle" "beforemiddleafter")



parserTests :: Test
parserTests = TestList [parser0, parser1]



extractInfixTests :: Test
extractInfixTests = TestList [extractInfix0, extractInfix1, extractInfix2, extractInfix3, extractInfix4, extractInfix5]



tests :: Test
tests = case (parserTests, extractInfixTests) of
	(TestList a, TestList b) -> TestList (a ++ b)