on master help sign in
merge test success checkpoint
commit9f12c25a43e3ec6b16dc6878d6f69408defd9b4e authorAgentM <agentm@themactionfaction.com> dateTue 14 Jun 2016, 16:52 (10 years ago) parent83fc9f0
2 files changed+14−15
ProjectM36/TransactionGraph.hs+3−4 test/TransactionGraph/Merge.hs+11−11
ProjectM36/TransactionGraph.hs+3−4
@@ -316,17 +316,16 @@ mergeTransactions newUUID parentUUID mergeStrategy (headNameA, headNameB) graph
316316 disconParent <- transactionForUUID parentUUID graph
317317 let subHeads = M.filterWithKey (\k _ -> elem k [headNameA, headNameB]) (transactionHeadsForGraph graph)
318318 subGraph <- subGraphToFirstCommonAncestor graph subHeads emptyTransactionGraph transA transB
319− --traceShowM ("hello\n" ++ showGraphStructureX subGraph)
320319 case createMergeTransaction newUUID mergeStrategy subGraph (transA, transB) of
321320 Left err -> Left (MergeTransactionError err)
322321 Right mergedTrans -> case headNameForTransaction disconParent graph of
323322 Nothing -> Left (TransactionIsNotAHeadError parentUUID)
324323 Just headName -> do
325− let newDiscon = newDisconnectedTransaction mergedTransUUID (transactionContext mergedTrans)
326− mergedTransUUID = transactionUUID mergedTrans
327− (_, newGraph) <- addDisconnectedTransaction mergedTransUUID headName newDiscon graph
324+ -- why create a merge transaction and then only use the context?
325+ (newTrans, newGraph) <- addTransactionToGraph headName disconParent newUUID (transactionContext mergedTrans) graph
328326 let newGraph' = TransactionGraph newHeads (transactionsForGraph newGraph)
329327 newHeads = M.delete headNameToDelete (transactionHeadsForGraph newGraph)
328+ newDiscon = newDisconnectedTransaction newUUID (transactionContext newTrans)
330329 pure (newDiscon, newGraph')
331330
332331--TEMPORARY COPY/PASTE
test/TransactionGraph/Merge.hs+11−11
@@ -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)