summaryrefslogtreecommitdiff
path: root/Thue/Test.hs
blob: 2e30f6b5df05db6e32766f625c1d8c1cc0f52f5e (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
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
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 = TestCase (assertEqual ""
                                (Right (ThueProgram [ThueRule "a" "b"] "a"))
                                (parseThue "a::=b\n::=\na"))

parser1 = TestCase (assertEqual ""
                                (Right (ThueProgram [] "b"))
                                (parseThue "::=\nb"))



extractInfix0 = TestCase (assertEqual ""
                                    Nothing
                                    (extractInfix [1,2] [3,4,5]))

extractInfix1 = TestCase (assertEqual ""
                                    (Just ([1,2],[5,6]))
                                    (extractInfix [3,4] [1,2,3,4,5,6]))

extractInfix2 = TestCase (assertEqual ""
                                    (Just ([],[3,4]))
                                    (extractInfix [0,1,2] [0,1,2,3,4]))

extractInfix3 = TestCase (assertEqual ""
                                    (Just ([1],[]))
                                    (extractInfix [2,3] [1,2,3]))

extractInfix4 = TestCase (assertEqual ""
                                    (Just ([],[1]))
                                    (extractInfix [] [1]))

extractInfix5 = TestCase (assertEqual ""
                                    (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)