Cover our utility functons with unit tests
This commit is contained in:
parent
a56355b1f9
commit
a102423515
3 changed files with 36 additions and 1 deletions
|
|
@ -1,8 +1,30 @@
|
|||
-- | Internal module in order to facilitate testability.
|
||||
module HCat.Internal where
|
||||
|
||||
-- | @parseArgs@ takes a list of strings and returns a single FilePath if there was exactly one element.
|
||||
--
|
||||
-- >>> parseArgs ["foo"]
|
||||
-- Right "foo"
|
||||
parseArgs :: [String] -> Either String FilePath
|
||||
parseArgs args = case args of
|
||||
[] -> Left "No filename given!"
|
||||
[arg] -> Right arg
|
||||
_ -> Left "Only a single file is supported"
|
||||
|
||||
-- | @chunksOf n@ splits a list into chunks of at most @n@ items.
|
||||
--
|
||||
-- >>> chunksOf 3 "abcdefgh"
|
||||
-- ["abc","def","gh"]
|
||||
--
|
||||
-- >>> chunksOf 0 "abcdefgh"
|
||||
-- []
|
||||
--
|
||||
-- >>> chunksOf (-1) "abcdefgh"
|
||||
-- []
|
||||
chunksOf :: Int -> [a] -> [[a]]
|
||||
chunksOf _ [] = []
|
||||
chunksOf n xs@(_ : _)
|
||||
| n <= 0 = []
|
||||
| otherwise =
|
||||
let (chunk, rest) = splitAt n xs
|
||||
in chunk : chunksOf n rest
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue