Skip to content

Commit 18fff8a

Browse files
committed
More comprehensive tests for Traversable Array
1 parent fc997ed commit 18fff8a

File tree

1 file changed

+13
-9
lines changed

1 file changed

+13
-9
lines changed

test/Main.purs

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ module Test.Main where
22

33
import Prelude
44

5-
import Control.Monad.Eff (Eff)
5+
import Control.Monad.Eff (Eff, foreachE)
66
import Control.Monad.Eff.Console (CONSOLE, log)
77

88
import Data.Bifoldable (class Bifoldable, bifoldl, bifoldr, bifoldMap, bifoldrDefault, bifoldlDefault, bifoldMapDefaultR, bifoldMapDefaultL)
@@ -17,7 +17,7 @@ import Data.Traversable (class Traversable, sequenceDefault, traverse, sequence,
1717

1818
import Math (abs)
1919

20-
import Test.Assert (ASSERT, assert)
20+
import Test.Assert (ASSERT, assert, assert')
2121

2222
foreign import arrayFrom1UpTo :: Int -> Array Int
2323

@@ -41,8 +41,9 @@ main = do
4141
log "Test foldrDefault"
4242
testFoldableFoldlDefault 20
4343

44-
log "Test traversableArray instance"
45-
testTraversableArrayWith 20
44+
foreachE [1,2,3,4,5,10,20] \i -> do
45+
log $ "Test traversableArray instance with an array of size: " <> show i
46+
testTraversableArrayWith i
4647

4748
log "Test traversableArray instance is stack safe"
4849
testTraversableArrayWith 20000
@@ -125,11 +126,14 @@ testTraversableFWith :: forall f e. (Traversable f, Eq (f Int)) =>
125126
testTraversableFWith f n = do
126127
let dat = f n
127128

128-
assert $ traverse Just dat == Just dat
129-
assert $ traverse pure dat == [dat]
130-
assert $ traverse (\x -> if x < 10 then Just x else Nothing) dat == Nothing
131-
assert $ sequence (map Just dat) == traverse Just dat
132-
assert $ (traverse pure dat :: Unit -> f Int) unit == dat
129+
assert' "traverse Just == Just" $ traverse Just dat == Just dat
130+
assert' "traverse pure == pure" $ traverse pure dat == [dat]
131+
assert' "traverse (const Nothing) == const Nothing" $
132+
traverse (const Nothing :: Int -> Maybe Int) dat == Nothing
133+
assert' "sequence <<< map f == traverse f" $
134+
sequence (map Just dat) == traverse Just dat
135+
assert' "underlying applicative" $
136+
(traverse pure dat :: Unit -> f Int) unit == dat
133137

134138
testTraversableArrayWith :: forall eff. Int -> Eff (assert :: ASSERT | eff) Unit
135139
testTraversableArrayWith = testTraversableFWith arrayFrom1UpTo

0 commit comments

Comments
 (0)