expiring-cache-map-0.0.6.1: tests/InvalidateTestCommon.hs
{-# LANGUAGE OverloadedStrings #-}
module InvalidateTestCommon (test1Common, test2Common) where
import qualified Data.ByteString.Char8 as BS
import Control.Concurrent (threadDelay)
test1Common lookup1 invalidate1 keysCached1 invalidateCache1 = do
b <- lookup1 ("file1" :: BS.ByteString)
b <- lookup1 "file2"
b <- lookup1 "file3"
listShouldBe 3
-- Repeat
b <- lookup1 "file2"
b <- lookup1 "file3"
listShouldBe 3
v <- invalidate1 "file2"
putStrLn $ show v
listShouldBe 2
b <- lookup1 "file2"
b <- lookup1 "file3"
listShouldBe 3
kv <- invalidateCache1
putStrLn $ show kv
listShouldBe 0
return ()
where
listShouldBe count = do
l <- keysCached1
if (length l) == count
then putStrLn $ show l
else error "Lists not the same length"
test2Common lookup2 keysCached2 keysNotExpired2 = do
b <- lookup2 ("file1" :: BS.ByteString)
b <- lookup2 "file2"
b <- lookup2 "file3"
l <- keysCached2
listCount 3 l
threadDelay 2
l <- keysNotExpired2
listCount 0 l
return ()
where
listCount count l = do
if (length l) == count
then putStrLn $ show l
else error "Not the same length"