From 6255e7e4f26a5db1edf4f2f6fd29f11efbdfbfa1 Mon Sep 17 00:00:00 2001 From: Felix Dilke Date: Wed, 11 Feb 2026 17:46:35 +0000 Subject: [PATCH] more tests for digesting queries --- .../test/Test/Datalog/DigestedQuerySpec.hs | 45 ++++++++++++++++++- 1 file changed, 44 insertions(+), 1 deletion(-) diff --git a/haskell-experiments/test/Test/Datalog/DigestedQuerySpec.hs b/haskell-experiments/test/Test/Datalog/DigestedQuerySpec.hs index af59af1..5b9c283 100644 --- a/haskell-experiments/test/Test/Datalog/DigestedQuerySpec.hs +++ b/haskell-experiments/test/Test/Datalog/DigestedQuerySpec.hs @@ -17,7 +17,7 @@ import Datalog.DigestedQuery (digestQuery) spec :: Spec spec = do describe "DigestedQuery" $ do - it "can digest basic queries" $ do + it "can digest a basic query" $ do digestQuery "?- parent(alice,X)." `shouldBe` DigestedQuery { allBoundVariables = ["X"], numSoughtVariables = 1, @@ -31,3 +31,46 @@ spec = do } ] } + it "can digest a query with all variables explicitly sought" $ do + digestQuery "?- knows(a,X), friend(X,Y) → X,Y." `shouldBe` DigestedQuery { + allBoundVariables = ["X", "Y"], + numSoughtVariables = 2, + conditions = [ + DigestedQueryCondition { + __relation = "knows", + _entries = [ + DigestedQueryEntryConstant $ Sym "a", + DigestedQueryEntryVariable 0 + ] + }, + DigestedQueryCondition { + __relation = "friend", + _entries = [ + DigestedQueryEntryVariable 0, + DigestedQueryEntryVariable 1 + ] + } + ] + } + it "can digest a query with unsought variables" $ do + digestQuery "?- edge(A,B), edge(B,C) → A,C ." `shouldBe` DigestedQuery { + allBoundVariables = ["A", "C", "B"], + numSoughtVariables = 2, + conditions = [ + DigestedQueryCondition { + __relation = "edge", + _entries = [ + DigestedQueryEntryVariable 0, + DigestedQueryEntryVariable 2 + ] + }, + DigestedQueryCondition { + __relation = "edge", + _entries = [ + DigestedQueryEntryVariable 2, + DigestedQueryEntryVariable 1 + ] + } + ] + } +