packages feed

lmdb-simple-0.3.1.0: test/Database/LMDB/Simple/DBRefSpec.hs

module Database.LMDB.Simple.DBRefSpec
  ( spec
  ) where

import Database.LMDB.Simple.DBRef
import Harness
import Test.Hspec

spec :: Spec
spec = beforeAll (setup >>= \(env, db) -> newDBRef env db 0) $ do

  it "starts empty" $ \ref ->
    readDBRef ref
    `shouldReturn` Nothing

  it "reads what is written" $ \ref ->
    (writeDBRef ref (Just "foo") >> readDBRef ref)
    `shouldReturn` Just "foo"

  it "reads what is modified" $ \ref ->
    (modifyDBRef_ ref (fmap (++ "bar")) >> readDBRef ref)
    `shouldReturn` Just "foobar"

  it "can be emptied with modifyDBRef" $ \ref ->
    (modifyDBRef_ ref (const Nothing) >> readDBRef ref)
    `shouldReturn` Nothing

  it "can be emptied with writeDBRef" $ \ref ->
    (writeDBRef ref (Just "baz") >> writeDBRef ref Nothing >> readDBRef ref)
    `shouldReturn` Nothing