hcat/test/spec/HCatSpec.hs
Alexander Kobjolke 8f76ec738e flake: Attempt to run doctests
Reviewed-by: Alexander Kobjolke <me@failco.de>
2023-08-24 00:00:31 +02:00

27 lines
959 B
Haskell

-- {-# LANGUAGE GHC2021 #-}
module HCatSpec (spec) where
import HCat.Internal (chunksOf, parseArgs)
import Test.Hspec
import Test.Hspec.QuickCheck (prop)
import Test.QuickCheck (Positive (getPositive))
spec :: Spec
spec = do
describe "parseArgs" do
it "returns the filename if given a single argument" do
parseArgs ["foo"] `shouldBe` Right "foo"
parseArgs [] `shouldBe` Left "No filename given!"
parseArgs ["foo", "bar"] `shouldBe` Left "Only a single file is supported"
describe "chunksOf" $ do
prop "each chunk contains at most N items" $ \n xs ->
let chunkLengths = length <$> chunksOf n (xs :: [Int])
in case chunkLengths of
[] -> pure ()
ns -> maximum ns `shouldSatisfy` (<= n)
prop "the sum of all lengths is equal to the length of the input" $ \n xs ->
let chunkLengths = length <$> chunksOf (getPositive n) (xs :: [Int])
in sum chunkLengths `shouldBe` length xs