packages feed

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
	))