packages feed

rocksdb-haskell-1.0.0: tests/tests.hs

{-# LANGUAGE OverloadedStrings #-}

module Main where

import           Control.Monad.IO.Class       (MonadIO (liftIO))
import           Control.Monad.Trans.Resource (MonadResource, runResourceT)
import           Data.Default
import           System.Process               (system)
import           System.IO.Temp               (withSystemTempDirectory)
import           Test.Hspec
import           Test.Hspec.Expectations
import           Test.Hspec.QuickCheck        (prop)
import           Test.QuickCheck

import           Database.RocksDB

initializeDB :: MonadResource m => FilePath -> m DB
initializeDB path =
    open
        path
        defaultOptions
        {createIfMissing = True, compression = NoCompression}

main :: IO ()
main =  hspec $ do

  describe "Basic DB Functionality" $ do
    it "should put items into the database and retrieve them" $  do
      runResourceT $ withSystemTempDirectory "rocksdb" $ \path -> do
        db <- initializeDB path

        put db def "zzz" "zzz"
        get db def "zzz"
      `shouldReturn` (Just "zzz")