{-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE FlexibleInstances #-} module Main where import System.Process(system) import Test.Hspec import Test.Hspec.Expectations import Test.Hspec.QuickCheck (prop) import Test.QuickCheck import Control.Monad (liftM, void) import Control.Monad.IO.Class (MonadIO (liftIO)) import Data.Default import Database.LevelDB import Control.Monad.Reader initializeDB :: MonadResource m => m DB initializeDB = open "/tmp/leveltest" defaultOptions{ createIfMissing = True , cacheSize= 2048 } main :: IO () main = hspec $ do it "cleanup" $ cleanup >>= shouldReturn (return()) describe "Basic DB Functionality" $ do it "should put items into the database and retrieve them" $ do let res = runResourceT $ do db <- initializeDB put db def "zzz" "zzz" get db def "zzz" res `shouldReturn` (Just "zzz") testDBPath :: String testDBPath = "/tmp/haskell-leveldb-tests" cleanup :: IO () cleanup = system ("rm -fr " ++ testDBPath) >> return ()