packages feed

leveldb-haskell-fork-0.3.1: tests/tests.hs

{-# 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 ()