forked from exercism/sml
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest.sml
151 lines (133 loc) · 8.54 KB
/
test.sml
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
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
(* version 1.0.0 *)
use "testlib.sml";
use "twelve-days.sml";
infixr |>
fun x |> f = f x
val testsuite =
describe "twelve-days" [
describe "verse" [
test "first day a partridge in a pear tree"
(fn _ => let
val expected =
"On the first day of Christmas my true love gave to me: a Partridge in a Pear Tree."
in
recite (1, 1) |> Expect.equalTo expected
end),
test "second day two turtle doves"
(fn _ => let
val expected =
"On the second day of Christmas my true love gave to me: two Turtle Doves, and a Partridge in a Pear Tree."
in
recite (2, 2) |> Expect.equalTo expected
end),
test "third day three french hens"
(fn _ => let
val expected =
"On the third day of Christmas my true love gave to me: three French Hens, two Turtle Doves, and a Partridge in a Pear Tree."
in
recite (3, 3) |> Expect.equalTo expected
end),
test "fourth day four calling birds"
(fn _ => let
val expected =
"On the fourth day of Christmas my true love gave to me: four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree."
in
recite (4, 4) |> Expect.equalTo expected
end),
test "fifth day five gold rings"
(fn _ => let
val expected =
"On the fifth day of Christmas my true love gave to me: five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree."
in
recite (5, 5) |> Expect.equalTo expected
end),
test "sixth day six geese-a-laying"
(fn _ => let
val expected =
"On the sixth day of Christmas my true love gave to me: six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree."
in
recite (6, 6) |> Expect.equalTo expected
end),
test "seventh day seven swans-a-swimming"
(fn _ => let
val expected =
"On the seventh day of Christmas my true love gave to me: seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree."
in
recite (7, 7) |> Expect.equalTo expected
end),
test "eighth day eight maids-a-milking"
(fn _ => let
val expected =
"On the eighth day of Christmas my true love gave to me: eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree."
in
recite (8, 8) |> Expect.equalTo expected
end),
test "ninth day nine ladies dancing"
(fn _ => let
val expected =
"On the ninth day of Christmas my true love gave to me: nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree."
in
recite (9, 9) |> Expect.equalTo expected
end),
test "tenth day ten lords-a-leaping"
(fn _ => let
val expected =
"On the tenth day of Christmas my true love gave to me: ten Lords-a-Leaping, nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree."
in
recite (10, 10) |> Expect.equalTo expected
end),
test "eleventh day eleven pipers piping"
(fn _ => let
val expected =
"On the eleventh day of Christmas my true love gave to me: eleven Pipers Piping, ten Lords-a-Leaping, nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree."
in
recite (11, 11) |> Expect.equalTo expected
end),
test "twelfth day twelve drummers drumming"
(fn _ => let
val expected =
"On the twelfth day of Christmas my true love gave to me: twelve Drummers Drumming, eleven Pipers Piping, ten Lords-a-Leaping, nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree."
in
recite (12, 12) |> Expect.equalTo expected
end)
],
describe "lyrics" [
test "recites first three verses of the song"
(fn _ => let
val expected =
"On the first day of Christmas my true love gave to me: a Partridge in a Pear Tree.\n\
\On the second day of Christmas my true love gave to me: two Turtle Doves, and a Partridge in a Pear Tree.\n\
\On the third day of Christmas my true love gave to me: three French Hens, two Turtle Doves, and a Partridge in a Pear Tree."
in
recite (1, 3) |> Expect.equalTo expected
end),
test "recites three verses from the middle of the song"
(fn _ => let
val expected =
"On the fourth day of Christmas my true love gave to me: four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n\
\On the fifth day of Christmas my true love gave to me: five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n\
\On the sixth day of Christmas my true love gave to me: six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree."
in
recite (4, 6) |> Expect.equalTo expected
end),
test "recites the whole song"
(fn _ => let
val expected =
"On the first day of Christmas my true love gave to me: a Partridge in a Pear Tree.\n\
\On the second day of Christmas my true love gave to me: two Turtle Doves, and a Partridge in a Pear Tree.\n\
\On the third day of Christmas my true love gave to me: three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n\
\On the fourth day of Christmas my true love gave to me: four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n\
\On the fifth day of Christmas my true love gave to me: five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n\
\On the sixth day of Christmas my true love gave to me: six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n\
\On the seventh day of Christmas my true love gave to me: seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n\
\On the eighth day of Christmas my true love gave to me: eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n\
\On the ninth day of Christmas my true love gave to me: nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n\
\On the tenth day of Christmas my true love gave to me: ten Lords-a-Leaping, nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n\
\On the eleventh day of Christmas my true love gave to me: eleven Pipers Piping, ten Lords-a-Leaping, nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree.\n\
\On the twelfth day of Christmas my true love gave to me: twelve Drummers Drumming, eleven Pipers Piping, ten Lords-a-Leaping, nine Ladies Dancing, eight Maids-a-Milking, seven Swans-a-Swimming, six Geese-a-Laying, five Gold Rings, four Calling Birds, three French Hens, two Turtle Doves, and a Partridge in a Pear Tree."
in
recite (1, 12) |> Expect.equalTo expected
end)
]
]
val _ = Test.run testsuite