splitmix-0.1.0.2: tests/Initialization.hs
module Main (main) where
import Control.Monad (forM_, replicateM)
import Data.List (tails)
import Test.HUnit (assertFailure)
import qualified System.Random.SplitMix as SM
import qualified System.Random.SplitMix32 as SM32
main :: IO ()
main = do
g64 <- replicateM 10 (fmap show SM.initSMGen)
putStrLn $ unlines g64
forM_ (tails g64) $ \xs' -> case xs' of
[] -> return ()
(x:xs) ->
if all (x /=) xs
then return ()
else assertFailure "ERROR: duplicate"
g32 <- replicateM 10 (fmap show SM32.initSMGen)
putStrLn $ unlines g32
forM_ (tails g32) $ \xs' -> case xs' of
[] -> return ()
(x:xs) ->
if all (x /=) xs
then return ()
else assertFailure "ERROR: duplicate"