on master help sign in
add transaction graph expr test
01345d5AgentM
test/TutorialD/Interpreter.hs+29−8
@@ -32,7 +32,7 @@ main = do
32 tcounts <- runTestTT (TestList tests)
32 tcounts <- runTestTT (TestList tests)
33 if errors tcounts + failures tcounts > 0 then exitFailure else exitSuccess
33 if errors tcounts + failures tcounts > 0 then exitFailure else exitSuccess
34 where
34 where
35− tests = map (\(tutd, expected) -> TestCase $ assertTutdEqual basicDatabaseContext expected tutd) simpleRelTests ++ map (\(tutd, expected) -> TestCase $ assertTutdEqual dateExamples expected tutd) dateExampleRelTests ++ [transactionGraphBasicTest, transactionGraphAddCommitTest, transactionRollbackTest, transactionJumpTest, transactionBranchTest, simpleJoinTest, testNotification, testTypeConstructors, testMergeTransactions, testComments]
35+ tests = map (\(tutd, expected) -> TestCase $ assertTutdEqual basicDatabaseContext expected tutd) simpleRelTests ++ map (\(tutd, expected) -> TestCase $ assertTutdEqual dateExamples expected tutd) dateExampleRelTests ++ [transactionGraphBasicTest, transactionGraphAddCommitTest, transactionRollbackTest, transactionJumpTest, transactionBranchTest, simpleJoinTest, testNotification, testTypeConstructors, testMergeTransactions, testComments, testTransGraphRelationalExpr]
36 simpleRelTests = [("x:=true", Right relationTrue),
36 simpleRelTests = [("x:=true", Right relationTrue),
37 ("x:=false", Right relationFalse),
37 ("x:=false", Right relationFalse),
38 ("x:=true union false", Right relationTrue),
38 ("x:=true union false", Right relationTrue),
@@ -164,7 +164,7 @@ transactionRollbackTest :: Test
164transactionRollbackTest = TestCase $ do
164transactionRollbackTest = TestCase $ do
165 (sessionId, dbconn) <- dateExamplesConnection emptyNotificationCallback
165 (sessionId, dbconn) <- dateExamplesConnection emptyNotificationCallback
166 graph <- transactionGraph dbconn
166 graph <- transactionGraph dbconn
167− maybeErr <- executeDatabaseContextExpr sessionId dbconn (Assign "x" (RelationVariable "s"))
167+ maybeErr <- executeDatabaseContextExpr sessionId dbconn (Assign "x" (RelationVariable "s" ()))
168 case maybeErr of
168 case maybeErr of
169 Just err -> assertFailure (show err)
169 Just err -> assertFailure (show err)
170 Nothing -> do
170 Nothing -> do
@@ -179,7 +179,7 @@ transactionJumpTest :: Test
179transactionJumpTest = TestCase $ do
179transactionJumpTest = TestCase $ do
180 (sessionId, dbconn) <- dateExamplesConnection emptyNotificationCallback
180 (sessionId, dbconn) <- dateExamplesConnection emptyNotificationCallback
181 (DisconnectedTransaction firstUUID _) <- disconnectedTransaction sessionId dbconn
181 (DisconnectedTransaction firstUUID _) <- disconnectedTransaction sessionId dbconn
182− maybeErr <- executeDatabaseContextExpr sessionId dbconn (Assign "x" (RelationVariable "s"))
182+ maybeErr <- executeDatabaseContextExpr sessionId dbconn (Assign "x" (RelationVariable "s" ()))
183 case maybeErr of
183 case maybeErr of
184 Just err -> assertFailure (show err)
184 Just err -> assertFailure (show err)
185 Nothing -> do
185 Nothing -> do
@@ -197,10 +197,10 @@ transactionBranchTest :: Test
197transactionBranchTest = TestCase $ do
197transactionBranchTest = TestCase $ do
198 (sessionId, dbconn) <- dateExamplesConnection emptyNotificationCallback
198 (sessionId, dbconn) <- dateExamplesConnection emptyNotificationCallback
199 mapM_ (\x -> x >>= maybeFail) [executeGraphExpr sessionId dbconn (Branch "test"),
199 mapM_ (\x -> x >>= maybeFail) [executeGraphExpr sessionId dbconn (Branch "test"),
200− executeDatabaseContextExpr sessionId dbconn (Assign "x" (RelationVariable "s")),
200+ executeDatabaseContextExpr sessionId dbconn (Assign "x" (RelationVariable "s" ())),
201 commit sessionId dbconn,
201 commit sessionId dbconn,
202 executeGraphExpr sessionId dbconn (JumpToHead "master"),
202 executeGraphExpr sessionId dbconn (JumpToHead "master"),
203− executeDatabaseContextExpr sessionId dbconn (Assign "y" (RelationVariable "s"))
203+ executeDatabaseContextExpr sessionId dbconn (Assign "y" (RelationVariable "s" ()))
204 ]
204 ]
205 graph <- transactionGraph dbconn
205 graph <- transactionGraph dbconn
206 assertBool "master branch exists" $ isJust (transactionForHead "master" graph)
206 assertBool "master branch exists" $ isJust (transactionForHead "master" graph)
@@ -252,7 +252,7 @@ testNotification :: Test
252testNotification = TestCase $ do
252testNotification = TestCase $ do
253 notifmvar <- newEmptyMVar
253 notifmvar <- newEmptyMVar
254 let notifCallback mvar = \_ _ -> putMVar mvar ()
254 let notifCallback mvar = \_ _ -> putMVar mvar ()
255− relvarx = RelationVariable "x"
255+ relvarx = RelationVariable "x" ()
256 (sess, conn) <- dateExamplesConnection (notifCallback notifmvar)
256 (sess, conn) <- dateExamplesConnection (notifCallback notifmvar)
257 let check' x = x >>= maybe (pure ()) (\err -> assertFailure (show err))
257 let check' x = x >>= maybe (pure ()) (\err -> assertFailure (show err))
258 check' $ executeDatabaseContextExpr sess conn (Assign "x" (ExistingRelation relationTrue))
258 check' $ executeDatabaseContextExpr sess conn (Assign "x" (ExistingRelation relationTrue))
@@ -286,7 +286,7 @@ testMergeTransactions = TestCase $ do
286 case mkRelationFromList (attributesFromList [Attribute "conflict" IntAtomType]) [[IntAtom 1],[IntAtom 2]] of
286 case mkRelationFromList (attributesFromList [Attribute "conflict" IntAtomType]) [[IntAtom 1],[IntAtom 2]] of
287 Left err -> assertFailure (show err)
287 Left err -> assertFailure (show err)
288 Right conflictCheck -> do
288 Right conflictCheck -> do
289− eRv <- executeRelationalExpr sessionId dbconn (RelationVariable "conflictrv")
289+ eRv <- executeRelationalExpr sessionId dbconn (RelationVariable "conflictrv" ())
290 case eRv of
290 case eRv of
291 Left err -> assertFailure (show err)
291 Left err -> assertFailure (show err)
292 Right conflictrv -> assertEqual "conflict union merge relvar" conflictCheck conflictrv
292 Right conflictrv -> assertEqual "conflict union merge relvar" conflictCheck conflictrv
@@ -298,4 +298,25 @@ testComments = TestCase $ do
298 ":branch testbranch --test comment\n",
298 ":branch testbranch --test comment\n",
299 ":jumphead {- test comment -} master"]
299 ":jumphead {- test comment -} master"]
300
300
301−
301+-- create a graph and query from two disparate contexts
302+testTransGraphRelationalExpr :: Test
303+testTransGraphRelationalExpr = TestCase $ do
304+ (sessionId, dbconn) <- dateExamplesConnection emptyNotificationCallback
305+ mapM_ (executeTutorialD sessionId dbconn) [
306+ ":commit",
307+ ":branch testbranch",
308+ "insert s relation{tuple{city \"Boston\", s# \"S9\", sname \"Smithers\", status 50}}",
309+ ":commit"
310+ ]
311+ let masterMarker = TransactionIdHeadNameLookup "master"
312+ testBranchMarker = TransactionIdHeadNameLookup "testbranch"
313+ sattrs = attributesFromList [Attribute "city" TextAtomType,
314+ Attribute "sname" TextAtomType,
315+ Attribute "s#" TextAtomType,
316+ Attribute "status" IntAtomType]
317+ expectedRel = mkRelationFromList sattrs [[TextAtom "Boston",
318+ TextAtom "Smithers",
319+ TextAtom "S9",
320+ IntAtom 50]]
321+ diff <- executeTransGraphRelationalExpr sessionId dbconn (Difference (RelationVariable "s" testBranchMarker) (RelationVariable "s" masterMarker))
322+ assertEqual "difference in s" expectedRel diff
test/TutorialD/Interpreter/TestBase.hs+1−1
@@ -19,7 +19,7 @@ dateExamplesConnection callback = do
19 case eSessionId of
19 case eSessionId of
20 Left err -> error (show err)
20 Left err -> error (show err)
21 Right sessionId -> do
21 Right sessionId -> do
22− mapM_ (\(rvName,rvRel) -> executeDatabaseContextExpr sessionId conn (Assign rvName (ExistingRelation rvRel))) (M.toList (Base.relationVariables dateExamples))
22+ mapM_ (\(rvName,rvRel) -> executeDatabaseContextExpr sessionId conn (Assign rvName (Base.ExistingRelation rvRel))) (M.toList (Base.relationVariables dateExamples))
23 mapM_ (\(idName,incDep) -> executeDatabaseContextExpr sessionId conn (AddInclusionDependency idName incDep)) (M.toList incDeps)
23 mapM_ (\(idName,incDep) -> executeDatabaseContextExpr sessionId conn (AddInclusionDependency idName incDep)) (M.toList incDeps)
24 --skipping atom functions for now- there are no atom function manipulation operators yet
24 --skipping atom functions for now- there are no atom function manipulation operators yet
25 commit sessionId conn >>= maybeFail
25 commit sessionId conn >>= maybeFail