Skip to content

Commit 1f3ca4d

Browse files
authored
Merge pull request #9 from danslapman/tests
Add various tests
2 parents 0cb5772 + 89a2d4e commit 1f3ca4d

File tree

3 files changed

+71
-1
lines changed

3 files changed

+71
-1
lines changed

test/HashSetUtilsSpec.hs

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
module HashSetUtilsSpec (hashSetTestCases) where
2+
3+
import qualified Data.HashMap.Strict as HM
4+
import Data.HashSet
5+
import HashSetUtils
6+
import Test.HUnit
7+
8+
testMaybeNesEmptyHashSet :: Test
9+
testMaybeNesEmptyHashSet = TestCase $ assertEqual "maybeNes empty HashSet" Nothing (maybeNes (empty :: HashSet Int))
10+
11+
testMaybeNesNonEmptyHashSet :: Test
12+
testMaybeNesNonEmptyHashSet = TestCase $ assertEqual "maybeNes non-empty HashSet" (Just $ (fromList [1, 2, 3] :: HashSet Int)) (maybeNes $ fromList [1, 2, 3])
13+
14+
fromHashMapTest :: Test
15+
fromHashMapTest = TestCase $ assertEqual "fromHashMap" (fromList [(1, "a"), (2, "b"), (3, "c")] :: HashSet (Int, String)) (fromHashMap $ HM.fromList [(1, "a"), (2, "b"), (3, "c")])
16+
17+
hashSetTestCases :: Test
18+
hashSetTestCases =
19+
TestList
20+
[ testMaybeNesEmptyHashSet,
21+
testMaybeNesNonEmptyHashSet,
22+
fromHashMapTest
23+
]

test/SequenceUtilsSpec.hs

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
module SequenceUtilsSpec (seqTestCases) where
2+
3+
import Data.Sequence
4+
import SequenceUtils
5+
import Test.HUnit
6+
7+
testMaybeNesEmptySequence :: Test
8+
testMaybeNesEmptySequence = TestCase $ assertEqual "maybeNes empty sequence" Nothing (maybeNes (empty :: Seq Int))
9+
10+
testMaybeNesNonEmptySequence :: Test
11+
testMaybeNesNonEmptySequence = TestCase $ assertEqual "maybeNes non-empty sequence" (Just $ fromList [1, 2, 3]) (maybeNes $ fromList [1, 2, 3])
12+
13+
testUniqEmptySequence :: Test
14+
testUniqEmptySequence = TestCase $ assertEqual "uniq empty sequence" (empty :: Seq Int) (uniq (empty :: Seq Int))
15+
16+
testUniqNonEmptySequence :: Test
17+
testUniqNonEmptySequence = TestCase $ assertEqual "uniq non-empty sequence" (fromList [1, 2, 3]) (uniq $ fromList [1, 2, 2, 3])
18+
19+
testMapMaybeEmptySequence :: Test
20+
testMapMaybeEmptySequence = TestCase $ assertEqual "mapMaybe empty sequence" (empty :: Seq Int) (mapMaybe (const Nothing) (empty :: Seq Int))
21+
22+
testMapMaybeNonEmptySequence :: Test
23+
testMapMaybeNonEmptySequence = TestCase $ assertEqual "mapMaybe non-empty sequence" (fromList [1, 3]) (mapMaybe (\x -> if x == 2 then Nothing else Just x) $ fromList [1, 2, 3])
24+
25+
seqTestCases :: Test
26+
seqTestCases =
27+
TestList
28+
[ testMaybeNesEmptySequence,
29+
testMaybeNesNonEmptySequence,
30+
testUniqEmptySequence,
31+
testUniqNonEmptySequence,
32+
testMapMaybeEmptySequence,
33+
testMapMaybeNonEmptySequence
34+
]

test/Spec.hs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,17 @@
1+
import HashSetUtilsSpec
2+
import SequenceUtilsSpec
13
import Test.HUnit
4+
import System.Exit (exitFailure)
5+
6+
processCounts :: Counts -> IO ()
7+
processCounts counts = do
8+
if errors counts + failures counts == 0
9+
then return ()
10+
else exitFailure
211

312
main :: IO ()
4-
main = putStrLn "Test suite not yet implemented"
13+
main = do
14+
hsCounts <- runTestTT hashSetTestCases
15+
processCounts hsCounts
16+
seqCounts <- runTestTT seqTestCases
17+
processCounts seqCounts

0 commit comments

Comments
 (0)