@@ -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
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)
@@ -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)
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))