MazesOfMonad-1.0: src/MoresmauJP/Util/ListsTests.hs
-- | List utilites hunit tests
-- (c) JP Moresmau 2009
module MoresmauJP.Util.ListsTests where
import Control.Monad.Identity
import MoresmauJP.Util.Lists
import MoresmauJP.Util.Random
import Test.HUnit
listsTests =TestList [testRandomPickp,testRandomPickpn]
testRandomPickp=TestLabel "Test RandomPick" (TestCase (do
let rw=mkTestWrapper [2]
let r=runIdentity $ evalRandT (randomPickp [4,5,6,7]) rw
assertEqual "r is not first" 4 r
let rw=mkTestWrapper [1]
let r=runIdentity $ evalRandT (randomPickp [4,5,6,7]) rw
assertEqual "r is not last" 7 r
let rw=mkTestWrapper [1,2,2,2]
let r=runIdentity $ evalRandT (randomPickp [4,5,6,7]) rw
assertEqual "r is not second" 5 r
))
testRandomPickpn=TestLabel "Test RandomPickn" (TestCase (do
let rw=mkTestWrapper [2]
let r=runIdentity $ evalRandT (randomPickpn [4,5,6,7] 1) rw
assertEqual "r is not first" [4] r
let rw=mkTestWrapper [1]
let r=runIdentity $ evalRandT (randomPickpn [4,5,6,7] 1) rw
assertEqual "r is not last" [7] r
let rw=mkTestWrapper [1,2,2,2]
let r=runIdentity $ evalRandT (randomPickpn [4,5,6,7] 1) rw
assertEqual "r is not second" [5] r
let rw=mkTestWrapper [2,2,2,1,2,2]
let r=runIdentity $ evalRandT (randomPickpn [4,5,6,7] 2) rw
assertEqual "r is not 5,4" [5,4] r
let rw=mkTestWrapper [2,2,1,2,2,2]
let r=runIdentity $ evalRandT (randomPickpn [4,5,6,7] 2) rw
assertEqual "r is not 4,7" [4,7] r
))