module Main where
import TestUtil
import Test.HUnit hiding (path)
import Database.TokyoCabinet
import Database.TokyoCabinet.Storable
import qualified Data.ByteString.Char8 as S
import qualified Data.ByteString.Lazy.Char8 as L
import Data.Int
import Data.Word
import Control.Monad.Trans (liftIO)
e @=?: a = liftIO $ e @=? a
check :: (TCDB tc, Eq a, Storable a) => tc -> a -> a -> TCM ()
check tc k v = do put tc k v
get tc k >>= (Just v @=?:)
iterinit tc
iternext tc >>= (Just k @=?:)
bdb :: TCM BDB
bdb = new
hdb :: TCM HDB
hdb = new
fdb :: TCM FDB
fdb = new
string = "100"
bstring = S.pack "100"
lstring = L.pack "100000"
int = 100 :: Int
int8 = 100 :: Int8
int16 = 100 :: Int16
int32 = 100 :: Int32
int64 = 100 :: Int64
word8 = 100 :: Word8
word16 = 100 :: Word16
word32 = 100 :: Word32
word64 = 100 :: Word64
double = 100 :: Double
float = 100 :: Float
char = '1'
dbname tc = "foo" ++ (defaultExtension tc)
make_check :: (TCDB tc, Eq a, Storable a) => TCM tc -> a -> IO Bool
make_check tcm k = runTCM $ do
tc <- tcm
liftIO $ withoutFile (dbname tc) $ \fn ->
runTCM $ do
open tc fn [OWRITER, OCREAT]
check tc k k
close tc
tests = test [
make_check bdb string
, make_check hdb string
, make_check fdb string
, make_check bdb bstring
, make_check hdb bstring
, make_check fdb bstring
, make_check bdb lstring
, make_check hdb lstring
, make_check fdb lstring
, make_check bdb int
, make_check hdb int
, make_check fdb int
, make_check bdb [int]
, make_check hdb [int]
, make_check fdb [int]
, make_check bdb int8
, make_check hdb int8
, make_check fdb int8
, make_check bdb [int8]
, make_check hdb [int8]
, make_check fdb [int8]
, make_check bdb int16
, make_check hdb int16
, make_check fdb int16
, make_check bdb [int16]
, make_check hdb [int16]
, make_check fdb [int16]
, make_check bdb int32
, make_check hdb int32
, make_check fdb int32
, make_check bdb [int32]
, make_check hdb [int32]
, make_check fdb [int32]
, make_check bdb int64
, make_check hdb int64
, make_check fdb int64
, make_check bdb [int64]
, make_check hdb [int64]
, make_check fdb [int64]
, make_check bdb word8
, make_check hdb word8
, make_check fdb word8
, make_check bdb [word8]
, make_check hdb [word8]
, make_check fdb [word8]
, make_check bdb word16
, make_check hdb word16
, make_check fdb word16
, make_check bdb [word16]
, make_check hdb [word16]
, make_check fdb [word16]
, make_check bdb word32
, make_check hdb word32
, make_check fdb word32
, make_check bdb [word32]
, make_check hdb [word32]
, make_check fdb [word32]
, make_check bdb word64
, make_check hdb word64
, make_check fdb word64
, make_check bdb [word64]
, make_check hdb [word64]
, make_check fdb [word64]
, make_check bdb double
, make_check hdb double
, make_check bdb [double]
, make_check hdb [double]
, make_check bdb float
, make_check hdb float
, make_check bdb [float]
, make_check hdb [float]
, make_check bdb char
, make_check hdb char
, make_check fdb char
, make_check bdb [char]
, make_check hdb [char]
, make_check fdb [char]
]
main = runTestTT tests