diff --git a/test/HashSetUtilsSpec.hs b/test/HashSetUtilsSpec.hs new file mode 100644 index 0000000..545bd74 --- /dev/null +++ b/test/HashSetUtilsSpec.hs @@ -0,0 +1,23 @@ +module HashSetUtilsSpec (hashSetTestCases) where + +import qualified Data.HashMap.Strict as HM +import Data.HashSet +import HashSetUtils +import Test.HUnit + +testMaybeNesEmptyHashSet :: Test +testMaybeNesEmptyHashSet = TestCase $ assertEqual "maybeNes empty HashSet" Nothing (maybeNes (empty :: HashSet Int)) + +testMaybeNesNonEmptyHashSet :: Test +testMaybeNesNonEmptyHashSet = TestCase $ assertEqual "maybeNes non-empty HashSet" (Just $ (fromList [1, 2, 3] :: HashSet Int)) (maybeNes $ fromList [1, 2, 3]) + +fromHashMapTest :: Test +fromHashMapTest = TestCase $ assertEqual "fromHashMap" (fromList [(1, "a"), (2, "b"), (3, "c")] :: HashSet (Int, String)) (fromHashMap $ HM.fromList [(1, "a"), (2, "b"), (3, "c")]) + +hashSetTestCases :: Test +hashSetTestCases = + TestList + [ testMaybeNesEmptyHashSet, + testMaybeNesNonEmptyHashSet, + fromHashMapTest + ] \ No newline at end of file diff --git a/test/SequenceUtilsSpec.hs b/test/SequenceUtilsSpec.hs new file mode 100644 index 0000000..e4018fe --- /dev/null +++ b/test/SequenceUtilsSpec.hs @@ -0,0 +1,34 @@ +module SequenceUtilsSpec (seqTestCases) where + +import Data.Sequence +import SequenceUtils +import Test.HUnit + +testMaybeNesEmptySequence :: Test +testMaybeNesEmptySequence = TestCase $ assertEqual "maybeNes empty sequence" Nothing (maybeNes (empty :: Seq Int)) + +testMaybeNesNonEmptySequence :: Test +testMaybeNesNonEmptySequence = TestCase $ assertEqual "maybeNes non-empty sequence" (Just $ fromList [1, 2, 3]) (maybeNes $ fromList [1, 2, 3]) + +testUniqEmptySequence :: Test +testUniqEmptySequence = TestCase $ assertEqual "uniq empty sequence" (empty :: Seq Int) (uniq (empty :: Seq Int)) + +testUniqNonEmptySequence :: Test +testUniqNonEmptySequence = TestCase $ assertEqual "uniq non-empty sequence" (fromList [1, 2, 3]) (uniq $ fromList [1, 2, 2, 3]) + +testMapMaybeEmptySequence :: Test +testMapMaybeEmptySequence = TestCase $ assertEqual "mapMaybe empty sequence" (empty :: Seq Int) (mapMaybe (const Nothing) (empty :: Seq Int)) + +testMapMaybeNonEmptySequence :: Test +testMapMaybeNonEmptySequence = TestCase $ assertEqual "mapMaybe non-empty sequence" (fromList [1, 3]) (mapMaybe (\x -> if x == 2 then Nothing else Just x) $ fromList [1, 2, 3]) + +seqTestCases :: Test +seqTestCases = + TestList + [ testMaybeNesEmptySequence, + testMaybeNesNonEmptySequence, + testUniqEmptySequence, + testUniqNonEmptySequence, + testMapMaybeEmptySequence, + testMapMaybeNonEmptySequence + ] \ No newline at end of file diff --git a/test/Spec.hs b/test/Spec.hs index 4e50657..46da303 100644 --- a/test/Spec.hs +++ b/test/Spec.hs @@ -1,4 +1,17 @@ +import HashSetUtilsSpec +import SequenceUtilsSpec import Test.HUnit +import System.Exit (exitFailure) + +processCounts :: Counts -> IO () +processCounts counts = do + if errors counts + failures counts == 0 + then return () + else exitFailure main :: IO () -main = putStrLn "Test suite not yet implemented" \ No newline at end of file +main = do + hsCounts <- runTestTT hashSetTestCases + processCounts hsCounts + seqCounts <- runTestTT seqTestCases + processCounts seqCounts \ No newline at end of file