-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTests.fs
32 lines (26 loc) · 1022 Bytes
/
Tests.fs
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
module Tests
open Xunit
open Parser
let tokenize (input: string) =
List.ofArray (input.Split [|' '|])
let checkParse str lst =
match tokenize str with
| Expression(exp, []) ->
Assert.True(Set.isEmpty (Set.difference (eval exp) (Set.ofList lst)))
| _ -> failwith("didn't parse")
[<Fact>]
let ``Basic set ops`` () =
checkParse "[ SUM a.txt ]" [1;2;3]
checkParse "[ SUM a.txt b.txt c.txt ]" [1;2;3;4;5]
checkParse "[ INT a.txt b.txt c.txt ]" [3]
checkParse "[ DIF a.txt b.txt c.txt ]" [1]
[<Fact>]
let ``Basic ops combinations`` () =
checkParse "[ SUM a.txt [ INT b.txt ] ]" [1;2;3;4]
checkParse "[ INT [ SUM b.txt c.txt ] a.txt ]" [2; 3]
checkParse "[ DIF a.txt [ INT b.txt c.txt ] c.txt ]" [1; 2]
[<Fact>]
let ``Other tests`` () =
checkParse "[ SUM [ DIF a.txt b.txt c.txt ] [ INT b.txt c.txt ] ]" [1;3;4]
checkParse "[ DIF a.txt [ SUM b.txt c.txt ] [ INT a.txt b.txt ] c.txt b.txt ]" [1]
checkParse "[ SUM a.txt [ INT a.txt b.txt ] a.txt ]" [1;2;3]