on master help sign in
more merge tests passing
c1dd302AgentM
test/TransactionGraph/Merge.hs+12−3
@@ -2,6 +2,7 @@
2{-# LANGUAGE OverloadedStrings #-}
2{-# LANGUAGE OverloadedStrings #-}
3import Test.HUnit
3import Test.HUnit
4import ProjectM36.Base
4import ProjectM36.Base
5+import ProjectM36.Transaction
5import ProjectM36.TransactionGraph
6import ProjectM36.TransactionGraph
6import ProjectM36.TransactionGraph.Show
7import ProjectM36.TransactionGraph.Show
7import ProjectM36.TransactionGraph.Show.Dot
8import ProjectM36.TransactionGraph.Show.Dot
@@ -158,8 +159,9 @@ testUnionMergeStrategy = TestCase $ do
158 -- add inclusion dependency in branchA
159 -- add inclusion dependency in branchA
159
160
160 let updatedBranchBContext = (transactionContext branchBTrans) {relationVariables = M.insert branchBOnlyRelVarName branchBOnlyRelVar (relationVariables (transactionContext branchBTrans)) }
161 let updatedBranchBContext = (transactionContext branchBTrans) {relationVariables = M.insert branchBOnlyRelVarName branchBOnlyRelVar (relationVariables (transactionContext branchBTrans)) }
161− updatedBranchAContext = (transactionContext branchATrans) {inclusionDependencies = M.insert "branchAOnlyIncDep" branchAOnlyIncDep (inclusionDependencies (transactionContext branchATrans)) }
162+ updatedBranchAContext = (transactionContext branchATrans) {inclusionDependencies = M.insert branchAOnlyIncDepName branchAOnlyIncDep (inclusionDependencies (transactionContext branchATrans)) }
162 branchBOnlyRelVar = relationTrue
163 branchBOnlyRelVar = relationTrue
164+ branchAOnlyIncDepName = "branchAOnlyIncDep"
163 branchBOnlyRelVarName = "branchBOnlyRelVar"
165 branchBOnlyRelVarName = "branchBOnlyRelVar"
164 branchAOnlyIncDep = InclusionDependency (ExistingRelation relationTrue) (ExistingRelation relationTrue)
166 branchAOnlyIncDep = InclusionDependency (ExistingRelation relationTrue) (ExistingRelation relationTrue)
165
167
@@ -168,9 +170,16 @@ testUnionMergeStrategy = TestCase $ do
168 assertEqual "branchBOnlyRelVar should appear in the merge" (M.lookup branchBOnlyRelVarName (relationVariables mergeContext1)) (Just relationTrue)
170 assertEqual "branchBOnlyRelVar should appear in the merge" (M.lookup branchBOnlyRelVarName (relationVariables mergeContext1)) (Just relationTrue)
169
171
170 (_, graph'') <- addTransaction "branchA" (Transaction (fakeUUID 4) (TransactionInfo (transactionUUID branchATrans) S.empty) updatedBranchAContext) graph'
172 (_, graph'') <- addTransaction "branchA" (Transaction (fakeUUID 4) (TransactionInfo (transactionUUID branchATrans) S.empty) updatedBranchAContext) graph'
171− let eMergeGraph = mergeTransactions (fakeUUID 5) (fakeUUID 1) UnionMergeStrategy ("branchA", "branchB") graph''
173+ let eMergeGraph = mergeTransactions (fakeUUID 5) (fakeUUID 3) UnionMergeStrategy ("branchA", "branchB") graph''
172 case eMergeGraph of
174 case eMergeGraph of
173 Left err -> assertFailure ("expected merge success: " ++ show err)
175 Left err -> assertFailure ("expected merge success: " ++ show err)
174− Right (mergeDiscon, mergeGraph) -> pure ()
176+ Right (mergeDiscon, mergeGraph) -> do
177+ -- check that the new merge transaction has the correct parents
178+ mergeTrans <- assertEither $ transactionForUUID (fakeUUID 5) mergeGraph
179+ let mergeContext = transactionContext mergeTrans
180+ assertEqual "merge transaction parents" (transactionParentIds mergeTrans) (S.fromList [fakeUUID 3, fakeUUID 4])
181+ -- check that the new merge tranasction has elements from both A and B branches
182+ assertEqual "merge transaction relvars" (Just relationTrue) (M.lookup branchBOnlyRelVarName (relationVariables mergeContext))
183+ assertEqual "merge transaction incdeps" (Just branchAOnlyIncDep) (M.lookup branchAOnlyIncDepName (inclusionDependencies mergeContext))
175
184
176
185