more quickcheck fun

This commit is contained in:
Joey Hess 2012-12-19 16:36:19 -04:00
parent bf71d42681
commit ddb0adb998
3 changed files with 30 additions and 13 deletions

View file

@ -17,7 +17,8 @@ module Annex.Content.Direct (
removeCache,
genCache,
toCache,
Cache
Cache(..),
prop_read_show_direct
) where
import Common.Annex
@ -123,6 +124,10 @@ readCache s = case words s of
<*> readish mtime
_ -> Nothing
-- for quickcheck
prop_read_show_direct :: Cache -> Bool
prop_read_show_direct c = readCache (showCache c) == Just c
genCache :: FilePath -> IO (Maybe Cache)
genCache f = catchDefaultIO Nothing $ toCache <$> getFileStatus f

View file

@ -15,7 +15,6 @@ import qualified Annex
import qualified Annex.Branch
import qualified Annex.Queue
import Annex.Content
import Annex.Content.Direct
import Annex.Direct
import Annex.CatFile
import qualified Git.Command

35
test.hs
View file

@ -51,21 +51,18 @@ import qualified Utility.Format
import qualified Utility.Verifiable
import qualified Utility.Process
import qualified Utility.Misc
import qualified Annex.Content.Direct
import Data.Time.Clock.POSIX
import System.Posix.Types
-- instances for quickcheck
instance Arbitrary Types.Key.Key where
arbitrary = do
n <- arbitrary
b <- elements ['A'..'Z']
return Types.Key.Key {
Types.Key.keyName = n,
Types.Key.keyBackendName = [b],
Types.Key.keySize = Nothing,
Types.Key.keyMtime = Nothing
}
arbitrary = Types.Key.Key
<$> arbitrary
<*> ((\b -> [b]) <$> elements ['A'..'Z']) -- BACKEND
<*> ((abs <$>) <$> arbitrary) -- size cannot be negative
<*> arbitrary
instance Arbitrary Logs.Transfer.TransferInfo where
arbitrary = Logs.Transfer.TransferInfo
@ -78,10 +75,25 @@ instance Arbitrary Logs.Transfer.TransferInfo where
<*> arbitrary
instance Arbitrary POSIXTime where
arbitrary = arbitrarySizedIntegral
arbitrary = abs <$> arbitrarySizedIntegral
instance Arbitrary ProcessID where
arbitrary = arbitraryBoundedIntegral
arbitrary = abs <$> arbitraryBoundedIntegral
instance Arbitrary Annex.Content.Direct.Cache where
arbitrary = Annex.Content.Direct.Cache
<$> arbitrary
<*> arbitrary
<*> arbitrary
instance Arbitrary EpochTime where
arbitrary = abs <$> arbitrarySizedIntegral
instance Arbitrary FileID where
arbitrary = abs <$> arbitrarySizedIntegral
instance Arbitrary FileOffset where
arbitrary = abs <$> arbitrarySizedIntegral
main :: IO ()
main = do
@ -115,6 +127,7 @@ quickcheck = TestLabel "quickcheck" $ TestList
, qctest "prop_verifiable_sane" Utility.Verifiable.prop_verifiable_sane
, qctest "prop_segment_regressionTest" Utility.Misc.prop_segment_regressionTest
, qctest "prop_read_write_transferinfo" Logs.Transfer.prop_read_write_transferinfo
, qctest "prop_read_show_direct" Annex.Content.Direct.prop_read_show_direct
]
blackbox :: Test