a framework to enable sensible query enfgine tests
This commit is contained in:
parent
872a9ee791
commit
a9ff3b4a5f
@ -65,9 +65,9 @@ withFacts =
|
||||
withFactsAndRules :: [Text] -> [Text] -> InMemoryDB
|
||||
withFactsAndRules facts = foldr (addRule . extractRule) (withFacts facts)
|
||||
|
||||
query :: forall db . (DatalogDB db) => db -> Text -> Text
|
||||
query db qText =
|
||||
case parseDatalog qText of
|
||||
Right (Query texts literals) -> "#NYI"
|
||||
Right otherStatement -> throw $ NonQueryException qText otherStatement
|
||||
Left ex -> throw $ CannotParseStatementException qText ex
|
||||
-- query :: forall db . (DatalogDB db) => db -> Text -> Text
|
||||
-- query db qText =
|
||||
-- case parseDatalog qText of
|
||||
-- Right (Query texts literals) -> "#NYI"
|
||||
-- Right otherStatement -> throw $ NonQueryException qText otherStatement
|
||||
-- Left ex -> throw $ CannotParseStatementException qText ex
|
||||
|
||||
@ -178,14 +178,6 @@ spec = do
|
||||
`shouldBe` Set.empty
|
||||
Set.fromList (relationNames db) `shouldBe` Set.fromList [ "equivalent" ]
|
||||
|
||||
it "can do basic queries" do
|
||||
let db :: InMemoryDB =
|
||||
InMemoryDB.withFacts
|
||||
[ "parent(\"alice\", \"bob\")."
|
||||
, "parent(\"bob\", \"carol\")."
|
||||
]
|
||||
query db "?- parent(alice,X)." `shouldBe` "#NYI" -- ideally, 'bob'
|
||||
|
||||
(<<$>>) :: (Functor f1, Functor f2) => (a -> b) -> f1 (f2 a) -> f1 (f2 b)
|
||||
(<<$>>) = fmap fmap fmap
|
||||
|
||||
|
||||
@ -14,9 +14,25 @@
|
||||
module Test.Datalog.NaiveQESpec where
|
||||
|
||||
import Test.Hspec
|
||||
import Datalog.InMemoryDB (InMemoryDB)
|
||||
import qualified Datalog.InMemoryDB as InMemoryDB
|
||||
import Datalog.QueryEngine (QueryEngine(query))
|
||||
import qualified Datalog.QueryEngine as QueryEngine
|
||||
import qualified Datalog.NaiveQE as NaiveQE
|
||||
import Datalog.QueryEngine (queryEngine)
|
||||
import Datalog.NaiveQE
|
||||
|
||||
spec :: Spec
|
||||
spec = do
|
||||
describe "NaiveQESpec" do
|
||||
it "..." $ do
|
||||
1 `shouldBe` 1
|
||||
1 `shouldBe` 1
|
||||
|
||||
it "can do basic queries" do
|
||||
let db :: InMemoryDB =
|
||||
InMemoryDB.withFacts
|
||||
[ "parent(\"alice\", \"bob\")."
|
||||
, "parent(\"bob\", \"carol\")."
|
||||
]
|
||||
qe :: NaiveQE InMemoryDB = queryEngine db
|
||||
query qe "?- parent(alice,X)." `shouldBe` "#NYI" -- ideally, 'bob'
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user