-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTestFlow.hs
More file actions
65 lines (60 loc) · 3.09 KB
/
TestFlow.hs
File metadata and controls
65 lines (60 loc) · 3.09 KB
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
module TestFlow where
import Flow
import NetworkData
test = let
f1 = read ("Flow (Or [And [Eq \"Src\" (Val \"a\"),Eq \"Dst\" Any,Eq \"Port\" Any]])") :: Flow
f2 = read ("Flow (Or [And [Eq \"Src\" (Val \"b\"),Eq \"Dst\" Any,Eq \"Port\" Any]])") :: Flow
f3 = read ("Flow (Or [And [Eq \"Src\" Any,Eq \"Dst\" (Val \"c\"),Eq \"Port\" Any]])") :: Flow
ff2 = read ("Flow (Or [And [Eq \"Src\" (Val \"a\"),Eq \"Dst\" Any,Eq \"Port\" Any],And [Eq \"Src\" (Val \"b\"),Eq \"Dst\" Any,Eq \"Port\" Any]])") :: Flow
ff3 = read ("Flow (Or [And [Eq \"Src\" Any,Eq \"Dst\" (Val \"c\"),Eq \"Port\" Any],And [Eq \"Src\" (Val \"a\"),Eq \"Dst\" Any,Eq \"Port\" Any]])") :: Flow
ff4 = read ("Flow (Or [And [Eq \"Src\" (Val \"a\"),Eq \"Dst\" Any,Eq \"Port\" Any],And [Eq \"Src\" (Val \"b\"),Eq \"Dst\" Any,Eq \"Port\" Any],And [Eq \"Src\" Any,Eq \"Dst\" (Val \"c\"),Eq \"Port\" Any]])") :: Flow
ff5 = read ("Flow (Or [And [Eq \"Src\" (Val \"a\"),Eq \"Dst\" Any,Eq \"Port\" Any],And [Eq \"Src\" Any,Eq \"Dst\" (Val \"c\"),Eq \"Port\" Any],And [Eq \"Src\" (Val \"e\"),Eq \"Dst\" (Val \"d\"),Eq \"Port\" Any]])") :: Flow
ff6 = read ("Flow (Or [And [Eq \"Src\" (Val \"a\"),Eq \"Dst\" Any,Eq \"Port\" (Val \"P\")],And [Eq \"Src\" (Val \"b\"),Eq \"Dst\" Any,Eq \"Port\" (Val \"P\")]])") :: Flow
ff7 = read ("Flow (Or [And [Eq \"Src\" Any,Eq \"Dst\" Any,Eq \"Port\" Any],And [Eq \"Src\" Any,Eq \"Dst\" (Val \"c\"),Eq \"Port\" Any]])") :: Flow
mostGeneralF = read ("Flow (Or [And [Eq \"Src\" Any,Eq \"Dst\" Any,Eq \"Port\" Any]])" ) :: Flow
tests = [
subset f1 ff2,
subset f1 ff3,
subset f1 mostGeneralF,
subset f1 f1,
not $ subset f1 f2,
subset ff2 ff4,
subset ff3 ff4,
subset f3 ff3,
subset ff3 ff5,
subset ff3 mostGeneralF,
not $ subset ff2 f1,
not $ subset ff3 f1,
not $ subset mostGeneralF ff3,
subset f1 $ intersect ff3 ff2,
subset f2 $ intersect ff4 ff2, --15
subset f3 $ intersect ff4 ff3,
not $ subset f2 $ intersect ff3 ff2,
not $ subset f3 $ intersect ff3 ff2,
mostGeneralF == mostGeneralF,
not $ f1 == ff2,
not $ f1 == ff3,
not $ f1 == ff4,
not $ f1 == mostGeneralF,
not $ ff3 == ff2,
not $ ff2 == ff4,
not $ ff3 == ff4,
intersect f1 ff2 == f1,
intersect ff3 mostGeneralF == ff3,
intersect mostGeneralF mostGeneralF == mostGeneralF,
intersect mostGeneralF VoidFlow == VoidFlow,
not $ intersect ff3 ff2 == f2,
not $ intersect ff3 ff2 == f3,
subset ff3 $ intersect ff3 mostGeneralF,
not $ subset ff3 $ intersect ff2 mostGeneralF,
subset VoidFlow f1,
rewrite (Eq "Port" (Val "P")) VoidFlow == VoidFlow,
rewrite (Eq "Src" (Val "b")) f1 == f2,
rewrite (Eq "Port" (Val "P")) ff2 == ff6,
rewrite (Eq "Src" Any) ff4 == ff7,
rewrite (Eq "Src" Any) mostGeneralF == mostGeneralF
]
in zip3 [1..] tests (repeat 1)
run_test = putStr $ ( foldr (\(x,y,z) acc -> "Test " ++ show x ++ "......................" ++ (if y then show z else show 0) ++ "/1" ++ "\n" ++ acc) "" test)
++ "\nTotal......................"++(show score) ++("/40\n")
score = sum $ map (\(_, _, score) -> score) $ filter (\(_, result, _) -> result) test