on master help sign in
Created tests and fixed isMember function
commitf4ee3e7fcb0817098643c6b34cab92466584680a authornoxx <noxx@noxx-inferno.(none)> dateSat 4 May 2013, 15:42 (13 years ago) parent0f779a8
2 files changed+26−11
src/Hakyll/Core/Store.hs+10−11 tests/Hakyll/Core/Store/Tests.hs+16
src/Hakyll/Core/Store.hs+10−11
@@ -102,13 +102,13 @@ cacheLookup (Store _ (Just lru)) key = do
102102
103103
104104--------------------------------------------------------------------------------
105−cacheIsMember :: Store -> String -> Bool
106−cacheIsMember (Store _ Nothing) _ = False
107−cacheIsMember (Store _ (Just lru)) key =
108− let res = Lru.lookup key lru in
109− case Just res of
110− Nothing -> False
111− _ -> True
105+cacheIsMember :: Store -> String -> IO Bool
106+cacheIsMember (Store _ Nothing) _ = return False
107+cacheIsMember (Store _ (Just lru)) key = do
108+ res <- Lru.lookup key lru
109+ case res of
110+ Nothing -> return False
111+ _ -> return True
112112
113113
114114--------------------------------------------------------------------------------
@@ -165,10 +165,9 @@ get store identifier = do
165165--------------------------------------------------------------------------------
166166-- | Strict function
167167isMember :: Store -> [String] -> IO Bool
168−isMember store identifier
169− | cacheIsMember store key = return True
170− | otherwise = doesFileExist path
171−
168+isMember store identifier = do
169+ inCache <- cacheIsMember store key
170+ if inCache then return True else doesFileExist path
172171 where
173172 key = hash identifier
174173 path = storeDirectory store </> key
tests/Hakyll/Core/Store/Tests.hs+16
@@ -26,6 +26,7 @@ tests = testGroup "Hakyll.Core.Store.Tests"
2626 [ testProperty "simple get . set" simpleSetGet
2727 , testProperty "persistent get . set" persistentSetGet
2828 , testCase "WrongType get . set" wrongType
29+ , testCase "isMembertest . set" isMembertest
2930 ]
3031
3132
@@ -68,3 +69,18 @@ wrongType = do
6869 t == typeOf (undefined :: String)
6970 _ -> False
7071 cleanTestEnv
72+
73+
74+--------------------------------------------------------------------------------
75+
76+isMembertest :: H.Assertion
77+isMembertest = do
78+ store <- newTestStore
79+ Store.set store ["foo", "bar"] ("qux" :: String)
80+ --value <- Store.get store ["foo", "bar"] :: IO (Store.Result Int)
81+ good <- Store.isMember store ["foo", "bar"]
82+
83+ bad <- Store.isMember store ["foo", "baz"]
84+ H.assert good
85+ H.assert (not bad)
86+ cleanTestEnv