@@ -9,12 +9,13 @@ import qualified Data.HashSet as HS
99import qualified Data.Map as M
1010import System.Exit
1111import Data.UUID.V4 (nextRandom)
12+import Data.Either (isRight)
1213
1314main = do
1415 counts <- runTestTT (TestList tests)
1516 if errors counts + failures counts > 0 then exitFailure else exitSuccess
1617 where
17− tests = map (\(tutd, expected) -> TestCase $ assertTutdEqual basicDatabaseContext tutd expected) simpleRelTests ++ map (\(tutd, expected) -> TestCase $ assertTutdEqual dateExamples tutd expected) dateExampleRelTests ++ [transactionGraphTest1]
18+ tests = map (\(tutd, expected) -> TestCase $ assertTutdEqual basicDatabaseContext tutd expected) simpleRelTests ++ map (\(tutd, expected) -> TestCase $ assertTutdEqual dateExamples tutd expected) dateExampleRelTests ++ [transactionGraphBasicTest, transactionGraphAddCommitTest]
1819 simpleRelTests = [("x:=true", Right relationTrue),
1920 ("x:=false", Right relationFalse),
2021 ("x:=true union false", Right relationTrue),
@@ -53,10 +54,28 @@ assertTutdEqual databaseContext tutd expected = assertEqual tutd interpreted exp
5354 (Just err, _) -> Left err
5455 (Nothing, context) -> Right $ (relationVariables context) M.! "x"
5556
56−transactionGraphTest1 = TestCase $ do
57+transactionGraphBasicTest = TestCase $ do
5758 (discon, graph) <- dateExamplesGraph
5859 assertEqual "validate bootstrapped graph" (validateGraph graph) Nothing
59−
60+
61+--add a new transaction to the graph, validate it is in the graph
62+transactionGraphAddCommitTest = TestCase $ do
63+ (discon@(DisconnectedTransaction firstUUID context), graph) <- dateExamplesGraph
64+ freshUUID <- nextRandom
65+ case interpret context "x:=S" of
66+ (Just err, newContext) -> assertFailure (show err)
67+ (Nothing, newContext) -> do
68+ let discon = newDisconnectedTransaction firstUUID newContext
69+ let addTrans = addDisconnectedTransaction freshUUID "master" discon graph
70+ case addTrans of
71+ Left err -> assertFailure (show err)
72+ Right (newTrans, graph) -> do
73+ assertBool "transaction in graph" (isRight $ transactionForUUID freshUUID graph)
74+ assertEqual "validate fresh commit with deleted S" (validateGraph graph) Nothing
75+ assertEqual "ensure S was deleted in newContext" (M.lookup "x" (relationVariables (transactionContext newTrans))) (Just s)
76+
77+--test rollback, jump, branch
78+
6079dateExamplesGraph :: IO (DisconnectedTransaction, TransactionGraph)
6180dateExamplesGraph = do
6281 firstTransactionUUID <- nextRandom