@@ -9,12 +9,13 @@ import qualified Data.HashSet as HS
9import qualified Data.Map as M
9import qualified Data.Map as M
10import System.Exit
10import System.Exit
11import Data.UUID.V4 (nextRandom)
11import Data.UUID.V4 (nextRandom)
12+import Data.Either (isRight)
14 counts <- runTestTT (TestList tests)
15 counts <- runTestTT (TestList tests)
15 if errors counts + failures counts > 0 then exitFailure else exitSuccess
16 if errors counts + failures counts > 0 then exitFailure else exitSuccess
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]
18 simpleRelTests = [("x:=true", Right relationTrue),
19 simpleRelTests = [("x:=true", Right relationTrue),
19 ("x:=false", Right relationFalse),
20 ("x:=false", Right relationFalse),
20 ("x:=true union false", Right relationTrue),
21 ("x:=true union false", Right relationTrue),
@@ -53,10 +54,28 @@ assertTutdEqual databaseContext tutd expected = assertEqual tutd interpreted exp
53 (Just err, _) -> Left err
54 (Just err, _) -> Left err
54 (Nothing, context) -> Right $ (relationVariables context) M.! "x"
55 (Nothing, context) -> Right $ (relationVariables context) M.! "x"
56−transactionGraphTest1 = TestCase $ do
57+transactionGraphBasicTest = TestCase $ do
57 (discon, graph) <- dateExamplesGraph
58 (discon, graph) <- dateExamplesGraph
58 assertEqual "validate bootstrapped graph" (validateGraph graph) Nothing
59 assertEqual "validate bootstrapped graph" (validateGraph graph) Nothing
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
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)
77+--test rollback, jump, branch
60dateExamplesGraph :: IO (DisconnectedTransaction, TransactionGraph)
79dateExamplesGraph :: IO (DisconnectedTransaction, TransactionGraph)
61dateExamplesGraph = do
80dateExamplesGraph = do
62 firstTransactionUUID <- nextRandom
81 firstTransactionUUID <- nextRandom