ejdb2-binding-0.3.0.0: test/FoldTests.hs
module FoldTests where
import Data.Int
import qualified Database.EJDB2 as DB
import Database.EJDB2.Options
import Plant
import Prelude hiding ( id )
import Test.Tasty
import Test.Tasty.HUnit
tests :: TestTree
tests = withResource (DB.open testReadOnlyDatabaseOpts) DB.close $
\databaseIO -> testGroup "get" [ foldOnIsTreeTest databaseIO ]
testReadOnlyDatabaseOpts :: Options
testReadOnlyDatabaseOpts =
DB.minimalOptions "./test/read-only-db" [ DB.readonlyOpenFlags ]
foldOnIsTreeTest :: IO DB.Database -> TestTree
foldOnIsTreeTest databaseIO = testCase "foldOnIsTree" $ do
database <- databaseIO
let query = DB.Query "@plants/*" DB.noBind
result <- DB.fold database foldOnIsTree (0, 0) query
result @?= (1, 3)
foldOnIsTree :: (Int, Int) -> (Int64, Maybe Plant) -> (Int, Int)
foldOnIsTree acc (_, Nothing) = acc
foldOnIsTree acc@(trueCount, falseCount) (_, Just plant) =
maybe acc
(\flag -> if flag
then (trueCount + 1, falseCount)
else (trueCount, falseCount + 1))
(isTree plant)