@@ -5,6 +5,7 @@ import ProjectM36.Base
55import ProjectM36.TransactionGraph
66import ProjectM36.TransactionGraph.Show
77import ProjectM36.DateExamples
8+import ProjectM36.Error
89import qualified Data.ByteString.Lazy as BS
910import System.Exit
1011import Data.Word
@@ -20,8 +21,8 @@ main = do
2021testList :: Test
2122testList = TestList [
2223 testSubGraphToFirstAncestorBasic,
23− testSubGraphToFirstAncestorSnipBranch
24− --testSelectedBranchMerge
24+ testSubGraphToFirstAncestorSnipBranch,
25+ testSelectedBranchMerge
2526 ]
2627
2728-- | Create a transaction graph with two branches and no changes between them.
@@ -80,6 +81,7 @@ testSubGraphToFirstAncestorBasic = TestCase $ do
8081 subgraph <- assertEither $ subGraphToFirstCommonAncestor graph (transactionHeadsForGraph graph) emptyTransactionGraph transA transB
8182 assertEqual "no graph changes" subgraph graph
8283
84+-- | Test that a branch anchored at the root transaction is removed when using the first ancestor function.
8385testSubGraphToFirstAncestorSnipBranch :: Test
8486testSubGraphToFirstAncestorSnipBranch = TestCase $ do
8587 baseGraph <- basicTransactionGraph
@@ -87,21 +89,19 @@ testSubGraphToFirstAncestorSnipBranch = TestCase $ do
8789 transB <- assertMaybe (transactionForHead "branchB" baseGraph) "failed to get branchB"
8890 rootTrans <- assertEither (transactionForUUID (fakeUUID 1) baseGraph)
8991 (_, graph) <- addTransaction "branchC" (fakeUUID 12) (transactionContext transA) rootTrans baseGraph
90− subgraph <- assertEither $ subGraphToFirstCommonAncestor graph (transactionHeadsForGraph graph) emptyTransactionGraph transA transB
92+ subgraph <- assertEither $ subGraphToFirstCommonAncestor graph (transactionHeadsForGraph baseGraph) emptyTransactionGraph transA transB
9193 assertGraph subgraph
92− -- putStrLn $ showGraphStructure graph
93− putStrLn $ showGraphStructure subgraph
94− putStrLn $ showGraphStructure baseGraph
95− assertEqual "failed to snip branch" (transactionHeadsForGraph subgraph) (transactionHeadsForGraph baseGraph)
96− pure ()
94+ assertEqual "failed to snip branch" baseGraph subgraph
9795
9896testSelectedBranchMerge :: Test
9997testSelectedBranchMerge = TestCase $ do
10098 graph <- basicTransactionGraph
10199 assertGraph graph
102− -- putStrLn (showGraphStructure graph)
103100
104101 let eGraph' = mergeTransactions (fakeUUID 3) (fakeUUID 10) (SelectedBranchMergeStrategy "branchA") ("branchA", "branchB") graph
105− (_, graph') <- assertEither eGraph'
102+ (DisconnectedTransaction _ mergedContext, graph') <- assertEither eGraph'
106103 assertGraph graph'
107− pure ()
104+ --validate that the branchB was removed
105+ rootTrans <- assertEither $ transactionForUUID (fakeUUID 1) graph'
106+ assertEqual "head still available" (transactionForHead "branchB" graph') Nothing
107+ --assertEqual "bad merge" mergedContext (transactionContext rootTrans)