expiring-cache-map-0.0.5.3: tests/TestECMWithTestSequenceCommon.hs
{-# LANGUAGE OverloadedStrings #-}
module TestECMWithTestSequenceCommon (
someEventsOnly,
numberEventsOnly,
pattern',
pattern'',
pattern''',
pattern'''',
testLookups,
printOutEvents,
printOutFailedPattern
) where
import qualified Caching.ExpiringCacheMap.Utils.TestSequence as TestSeq
import qualified Data.ByteString.Char8 as BS
printOutFailedPattern from_where filt_events' filt_events'' filt_events''' filt_events'''' = do
putStrLn $ "Failed sequence test in " ++ from_where ++ ":"
if not (pattern' (filt_events'))
then putStrLn $ "Failed: pattern 1: " ++ (show filt_events')
else return ()
if not (pattern'' (filt_events''))
then putStrLn $ "Failed: pattern 2: " ++ (show filt_events'')
else return ()
if not (pattern''' (filt_events'''))
then putStrLn $ "Failed: pattern 3: " ++ (show filt_events''')
else return ()
if not (pattern'''' (filt_events''''))
then putStrLn $ "Failed: pattern 4: " ++ (show filt_events'''')
else return ()
return ()
printOutEvents events' events'' events''' events'''' = do
(putStrLn . show . filter someEventsOnly . reverse) events'
(putStrLn . show . filter someEventsOnly . reverse) events''
(putStrLn . show . filter someEventsOnly . reverse) events'''
(putStrLn . show . filter someEventsOnly . reverse) events''''
return ()
someEventsOnly a =
case a of
TestSeq.GetTime _ -> True
TestSeq.ReadNumber _ -> True
TestSeq.HaveNumber _ -> True
_ -> False
numberEventsOnly a =
case a of
TestSeq.ReadNumber _ -> True
TestSeq.HaveNumber _ -> True
_ -> False
pattern' c =
case c of
[ TestSeq.ReadNumber numr1,
TestSeq.GetTime _,
TestSeq.HaveNumber numh1,
TestSeq.HaveNumber numh1',
TestSeq.ReadNumber numr2,
TestSeq.GetTime _,
TestSeq.HaveNumber numh2 ]
| numr1 == numh1 && numr1 == numh1' && numr2 == numh2 -> True
_ -> False
pattern'' c =
case c of
[ TestSeq.ReadNumber numr1,
TestSeq.GetTime _,
TestSeq.HaveNumber numh1,
TestSeq.GetTime _,
TestSeq.GetTime _,
TestSeq.HaveNumber numh1',
TestSeq.ReadNumber numr2,
TestSeq.GetTime _,
TestSeq.HaveNumber numh2 ]
| numr1 == numh1 && numr1 == numh1' && numr2 == numh2 -> True
_ -> False
pattern''' c =
case c of
[ TestSeq.ReadNumber numr1,
TestSeq.GetTime _,
TestSeq.HaveNumber numh1,
TestSeq.HaveNumber numh1',
TestSeq.ReadNumber numr2,
TestSeq.GetTime _,
TestSeq.HaveNumber numh2 ]
| numr1 == numh1 && numr1 == numh1' && numr2 == numh2 -> True
_ -> False
pattern'''' c =
case c of
[ TestSeq.ReadNumber numr1,
TestSeq.GetTime _,
TestSeq.HaveNumber numh1,
TestSeq.GetTime _,
TestSeq.ReadNumber numr2,
TestSeq.GetTime _,
TestSeq.HaveNumber numh2,
TestSeq.ReadNumber numr3,
TestSeq.GetTime _,
TestSeq.HaveNumber numh3 ]
| numr1 == numh1 && numr2 == numh2 && numr3 == numh3 -> True
_ -> False
testLookups lookup = do
b <- lookup ("file1" :: BS.ByteString)
TestSeq.haveNumber b
b <- lookup "file1"
TestSeq.haveNumber b
b <- lookup "file2"
TestSeq.haveNumber b
return b