1module TutorialD.Interpreter.TestBase where
2import ProjectM36.Client
4import TutorialD.Interpreter
5import TutorialD.Interpreter.Base
6import qualified ProjectM36.Base as Base
7import ProjectM36.DateExamples
9import qualified Data.Map as M
12dateExamplesConnection :: NotificationCallback -> IO (SessionId, Connection)
13dateExamplesConnection callback = do
14 dbconn <- connectProjectM36 (InProcessConnectionInfo NoPersistence callback [])
15 let incDeps = Base.inclusionDependencies dateExamples
17 Left err -> error (show err)
19 eSessionId <- createSessionAtHead conn "master"
21 Left err -> error (show err)
23 mapM_ (\(rvName,rvRel) -> executeDatabaseContextExpr sessionId conn (Assign rvName (Base.ExistingRelation rvRel))) (M.toList (Base.relationVariables dateExamples))
24 mapM_ (\(idName,incDep) -> executeDatabaseContextExpr sessionId conn (AddInclusionDependency idName incDep)) (M.toList incDeps)
25 --skipping atom functions for now- there are no atom function manipulation operators yet
26 commit sessionId conn >>= eitherFail
27 pure (sessionId, conn)
29executeTutorialD :: SessionId -> Connection -> Text -> IO ()
30executeTutorialD sessionId conn tutd = case parseTutorialD tutd of
31 Left err -> assertFailure (show tutd ++ ": " ++ show err)
33 result <- evalTutorialD sessionId conn UnsafeEvaluation parsed
35 QuitResult -> assertFailure "quit?"
36 DisplayResult _ -> assertFailure "display?"
37 DisplayIOResult _ -> assertFailure "displayIO?"
38 DisplayRelationResult _ -> assertFailure "displayrelation?"
39 DisplayParseErrorResult _ _ -> assertFailure "displayparseerrorresult?"
40 DisplayErrorResult err -> assertFailure (show err)
41 QuietSuccessResult -> pure ()
43expectTutorialDErr :: SessionId -> Connection -> (Text -> Bool) -> Text -> IO ()
44expectTutorialDErr sessionId conn matchFunc tutd = case parseTutorialD tutd of
45 Left err -> assertFailure (show tutd ++ ": " ++ show err)
47 result <- evalTutorialD sessionId conn UnsafeEvaluation parsed
49 QuitResult -> assertFailure "quit?"
50 DisplayResult _ -> assertFailure "display?"
51 DisplayIOResult _ -> assertFailure "displayIO?"
52 DisplayRelationResult _ -> assertFailure "displayrelation?"
53 DisplayParseErrorResult _ _ -> assertFailure "displayparseerrorresult?"
54 DisplayErrorResult err -> assertBool ("match error on: " ++ unpack err) (matchFunc err)
55 QuietSuccessResult -> pure ()
57eitherFail :: Either RelationalError a -> IO ()
58eitherFail (Left err) = assertFailure (show err)
59eitherFail (Right _) = pure ()
keysesc to close
- j k
- move down, up
- enter
- open
- esc
- back, or up a level
- 1 2 3 4
- readme, files, commits, refs
- /
- filter
- y
- copy the clone command
- c
- compare the chosen commit with another (or shift-click both)
- ?
- show or hide this list