{-# OPTIONS -fno-warn-unused-do-bind #-} module Main(main) where import Test.Simple import Database.PureCDB import qualified Data.Vector as V import Control.Monad.Trans (liftIO) import qualified Data.ByteString.Char8 as B import qualified Data.IntMap as I import System.Unix.Directory (withTemporaryDirectory) import Database.PureCDB.Internal main :: IO () main = withTemporaryDirectory "/tmp/pure_cdb_XXXXXXX" $ \td -> testSimpleMain $ do plan 13 r <- liftIO $ openCDB "t/foo.cdb" is (V.findIndex ((> 0) . hLength) $ rTOC r) (Just 163) is ((cdbHash foo) `mod` 256) 163 is (hPosition $ fst $ tocFind r foo) (hPosition $ rTOC r V.! 163) v <- liftIO $ getBS r foo is (map B.unpack v) [ "bar" ] is (layoutHash 2 $ I.fromList [ (1, [ 'a', 'b' ]) ]) Nothing is (layoutHash 2 $ I.fromList [ (0, [ 'a', 'b' ]) ]) $ Just $ reverse [ (0, 'a'), (1, 'b') ] is (layoutHash 4 $ I.fromList [ (1, [ 'a', 'b' ]), (2, ['c']) ]) $ Just $ reverse [ (1, 'a'), (2, 'b'), (3, 'c') ] is (layoutHash 4 $ I.fromList [ (1, [ 'a', 'b' ]), (2, ['c', 'd']) ]) Nothing is (coalesceHash (4 :: Int) [(259, 'a'), (263, 'b')]) $ I.fromList [ (1, [ (263, 'b'), (259, 'a') ]) ] is (createHashVector 4 (0 :: Int, 'O') [(259, 'a'), (263, 'b')]) $ V.fromList [(0,'O'),(263,'b'),(259,'a'),(0,'O')] is (createHashVector 2 (0 :: Int, 'O') [(259, 'a'), (263, 'b')]) $ V.fromList [(0,'O'),(263,'b'),(259,'a')] is (createHashVector 1 (0 :: Int, 'O') [(259, 'a'), (263, 'b')]) $ V.fromList [(0,'O'),(263,'b'),(259,'a')] liftIO $ makeCDB (addBS foo (B.pack "baz")) (td ++ "/j.out") r2 <- liftIO $ openCDB $ td ++ "/j.out" v2 <- liftIO $ getBS r2 foo is (map B.unpack v2) [ "baz" ] liftIO $ closeCDB r2 liftIO $ closeCDB r where foo = B.pack "foo"