@@ -331,10 +331,22 @@ testTransGraphRelationalExpr = TestCase $ do
331331 diff <- executeTransGraphRelationalExpr sessionId dbconn (Difference (RelationVariable "s" testBranchMarker) (RelationVariable "s" masterMarker))
332332 assertEqual "difference in s" expectedRel diff
333333
334− --test graph traversal (head backtracking
334+ --test graph traversal (head backtracking)
335335 let testBranchBacktrack = TransactionIdHeadNameLookup "testbranch" [TransactionIdHeadParentBacktrack 1]
336336 backtrackRel <- executeTransGraphRelationalExpr sessionId dbconn (Equals (RelationVariable "s" testBranchBacktrack) (RelationVariable "s" masterMarker))
337337 assertEqual "backtrack to master" (Right relationTrue) backtrackRel
338+
339+ --test branch deletion
340+ mapM_ (executeTutorialD sessionId dbconn) [
341+ ":jumphead master",
342+ ":deletebranch testbranch"]
343+ eEvald <- case parseTutorialD ":jumphead testbranch" of
344+ Left _ -> assertFailure "jumphead parse error" >> error "x"
345+ Right parsed -> evalTutorialD sessionId dbconn UnsafeEvaluation parsed
346+ case eEvald of
347+ DisplayErrorResult err -> assertEqual "testbranch deletion" (show (NoSuchHeadNameError "testbranch")) (unpack err)
348+ _ -> assertFailure "failed to delete branch"
349+
338350
339351testMultiAttributeRename :: Test
340352testMultiAttributeRename = TestCase $ assertTutdEqual dateExamples renamedRel "x:=s rename {city as town, status as price} where false"
@@ -393,4 +405,4 @@ testFunctionalDependencies = TestCase $ do
393405 executeTutorialD sessionId dbconn "insert s relation{tuple{city \"Boston\", s# \"S6\", sname \"Stevens\", status 30}}"
394406 --insert an constraint-violating tuple
395407 let expectedError = InclusionDependencyCheckError "sname_status_A"
396− expectTutorialDErr sessionId dbconn expectedError "insert s relation{tuple{city \"Boston\", s# \"S7\", sname \"Jones\", status 20}}"
408+ expectTutorialDErr sessionId dbconn expectedError "insert s relation{tuple{city \"Boston\", s# \"S7\", sname \"Jones\", status 20}}"