Added comments to the tests for checkInitVar, and added a couple more tests
This commit is contained in:
parent
cf0cc81ae4
commit
6fbca55569
|
@ -143,33 +143,69 @@ buildTestFlowGraph ns es start end v
|
|||
testInitVar :: Test
|
||||
testInitVar = TestList
|
||||
[
|
||||
-- Single node, x not touched
|
||||
testInitVarPass 0 [(0,[],[],[])] [] 0 0 "x"
|
||||
-- Single node, x written to
|
||||
,testInitVarPass 1 [(0,[],[],[Plain "x"])] [] 0 0 "x"
|
||||
-- Single node, x read from (FAIL)
|
||||
,testInitVarFail 2 [(0,[Plain "x"],[],[])] [] 0 0 "x"
|
||||
-- Single node, x read from and written to (FAIL - x must be written to before the read.
|
||||
-- This line is akin to x = x + 1, so x must be written to beforehand)
|
||||
,testInitVarFail 3 [(0,[Plain "x"],[],[Plain "x"])] [] 0 0 "x"
|
||||
|
||||
-- Two nodes, x written to then read
|
||||
,testInitVarPass 10 [(0,[],[],[Plain "x"]), (1,[Plain "x"],[],[])] [(0,1,ESeq)] 0 1 "x"
|
||||
-- Two nodes, x read then written to (FAIL)
|
||||
,testInitVarFail 11 [(0,[],[],[Plain "x"]), (1,[Plain "x"],[],[])] [(1,0,ESeq)] 1 0 "x"
|
||||
-- Two nodes, x maybe-written to then read (FAIL)
|
||||
,testInitVarFail 12 [(0,[],[Plain "x"],[]), (1,[Plain "x"],[],[])] [(0,1,ESeq)] 0 1 "x"
|
||||
-- As test 10 (x written to then read) but using the par edges.
|
||||
,testInitVarPass 13 [(0,[],[],[Plain "x"]), (1,[Plain "x"],[],[])] [(0,1,EStartPar 0)] 0 1 "x"
|
||||
,testInitVarPass 14 [(0,[],[],[Plain "x"]), (1,[Plain "x"],[],[])] [(0,1,EEndPar 0)] 0 1 "x"
|
||||
|
||||
,testInitVarPass 20 [(0,[],[],[]),(1,[],[],[Plain "x"]), (2,[],[],[Plain "x"]), (3,[Plain "x"],[],[])] [(0,1,ESeq),(0,2,ESeq),(1,3,ESeq),(2,3,ESeq)] 0 3 "x"
|
||||
,testInitVarFail 21 [(0,[],[],[]),(1,[],[],[]), (2,[],[],[Plain "x"]), (3,[Plain "x"],[],[])] [(0,1,ESeq),(0,2,ESeq),(1,3,ESeq),(2,3,ESeq)] 0 3 "x"
|
||||
,testInitVarFail 22 [(0,[],[],[]),(1,[],[Plain "x"],[]), (2,[],[],[Plain "x"]), (3,[Plain "x"],[],[])] [(0,1,ESeq),(0,2,ESeq),(1,3,ESeq),(2,3,ESeq)] 0 3 "x"
|
||||
,testInitVarPass 23 [(0,[],[],[]),(1,[],[],[]), (2,[],[],[Plain "x"]), (3,[Plain "x"],[],[])] [(0,1,ESeq),(0,2,ESeq),(2,3,ESeq)] 0 3 "x"
|
||||
,testInitVarPass 24 [(0,[],[],[Plain "x"]),(1,[],[],[]), (2,[],[],[]), (3,[Plain "x"],[],[])] [(0,1,ESeq),(0,2,ESeq),(1,3,ESeq),(2,3,ESeq)] 0 3 "x"
|
||||
,testInitVarFail 25 [(0,[],[],[]),(1,[],[],[]), (2,[],[],[]), (3,[Plain "x"],[],[])] [(0,1,ESeq),(0,2,ESeq),(1,3,ESeq),(2,3,ESeq)] 0 3 "x"
|
||||
-- Diamond tests (0 branches to 1 and 2, which both merge to 3):
|
||||
-- x written to in 0 and 1, then read in 3
|
||||
,testInitVarPass 20 [(0,[],[],[]),(1,[],[],[Plain "x"]), (2,[],[],[Plain "x"]), (3,[Plain "x"],[],[])]
|
||||
[(0,1,ESeq),(0,2,ESeq),(1,3,ESeq),(2,3,ESeq)] 0 3 "x"
|
||||
-- x written to only in 2 then read in 3 (FAIL)
|
||||
,testInitVarFail 21 [(0,[],[],[]),(1,[],[],[]), (2,[],[],[Plain "x"]), (3,[Plain "x"],[],[])]
|
||||
[(0,1,ESeq),(0,2,ESeq),(1,3,ESeq),(2,3,ESeq)] 0 3 "x"
|
||||
-- x definitely written to in 2, but not 1 (FAIL)
|
||||
,testInitVarFail 22 [(0,[],[],[]),(1,[],[Plain "x"],[]), (2,[],[],[Plain "x"]), (3,[Plain "x"],[],[])]
|
||||
[(0,1,ESeq),(0,2,ESeq),(1,3,ESeq),(2,3,ESeq)] 0 3 "x"
|
||||
-- like test 21, but the link missing from 1 to 3, so test will pass
|
||||
,testInitVarPass 23 [(0,[],[],[]),(1,[],[],[]), (2,[],[],[Plain "x"]), (3,[Plain "x"],[],[])]
|
||||
[(0,1,ESeq),(0,2,ESeq),(2,3,ESeq)] 0 3 "x"
|
||||
-- variable written to in 0, read in 3
|
||||
,testInitVarPass 24 [(0,[],[],[Plain "x"]),(1,[],[],[]), (2,[],[],[]), (3,[Plain "x"],[],[])]
|
||||
[(0,1,ESeq),(0,2,ESeq),(1,3,ESeq),(2,3,ESeq)] 0 3 "x"
|
||||
-- variable never written to, but read in 3
|
||||
,testInitVarFail 25 [(0,[],[],[]),(1,[],[],[]), (2,[],[],[]), (3,[Plain "x"],[],[])]
|
||||
[(0,1,ESeq),(0,2,ESeq),(1,3,ESeq),(2,3,ESeq)] 0 3 "x"
|
||||
-- variable written to in 2 and 3, but read in 1 (FAIL):
|
||||
,testInitVarFail 26 [(0,[],[],[]),(1,[Plain "x"],[],[]), (2,[],[],[Plain "x"]), (3,[],[],[Plain "x"])]
|
||||
[(0,1,ESeq),(0,2,ESeq),(1,3,ESeq),(2,3,ESeq)] 0 3 "x"
|
||||
|
||||
-- This would fail CREW, but that's not what we're testing here:
|
||||
-- Test parallel diamonds:
|
||||
-- written to in 1 and 2, read in 3
|
||||
-- This would fail CREW, but that's not what we're testing here:
|
||||
,testInitVarPass 30 [(0,[],[],[]),(1,[],[],[Plain "x"]), (2,[],[],[Plain "x"]), (3,[Plain "x"],[],[])]
|
||||
[(0,1,EStartPar 0),(0,2,EStartPar 0),(1,3,EEndPar 0),(2,3,EEndPar 0)] 0 3 "x"
|
||||
-- written to in 1, read in 3
|
||||
,testInitVarPass 31 [(0,[],[],[]),(1,[],[],[Plain "x"]), (2,[],[],[]), (3,[Plain "x"],[],[])]
|
||||
[(0,1,EStartPar 0),(0,2,EStartPar 0),(1,3,EEndPar 0),(2,3,EEndPar 0)] 0 3 "x"
|
||||
-- written to in 0, read in 3
|
||||
,testInitVarPass 32 [(0,[],[],[Plain "x"]),(1,[],[],[]), (2,[],[],[]), (3,[Plain "x"],[],[])]
|
||||
[(0,1,EStartPar 0),(0,2,EStartPar 0),(1,3,EEndPar 0),(2,3,EEndPar 0)] 0 3 "x"
|
||||
-- never written to, but read in 3:
|
||||
,testInitVarFail 33 [(0,[],[],[]),(1,[],[],[]), (2,[],[],[]), (3,[Plain "x"],[],[])]
|
||||
[(0,1,EStartPar 0),(0,2,EStartPar 0),(1,3,EEndPar 0),(2,3,EEndPar 0)] 0 3 "x"
|
||||
-- written to in 1, read in 2 (again, would fail CREW) (FAIL):
|
||||
,testInitVarFail 34 [(0,[],[],[]),(1,[],[],[Plain "x"]), (2,[Plain "x"],[],[]), (3,[],[],[])]
|
||||
[(0,1,EStartPar 0),(0,2,EStartPar 0),(1,3,EEndPar 0),(2,3,EEndPar 0)] 0 3 "x"
|
||||
-- written to in 1, read in 2 and 3 (again, would fail CREW) (FAIL):
|
||||
,testInitVarFail 35 [(0,[],[],[]),(1,[],[],[Plain "x"]), (2,[Plain "x"],[],[]), (3,[Plain "x"],[],[])]
|
||||
[(0,1,EStartPar 0),(0,2,EStartPar 0),(1,3,EEndPar 0),(2,3,EEndPar 0)] 0 3 "x"
|
||||
|
||||
|
||||
-- TODO add tests with loops (and work out how to represent par loops)
|
||||
|
|
Loading…
Reference in New Issue
Block a user