{-# OPTIONS_GHC -F -pgmF htfpp #-} {-# LANGUAGE TypeOperators #-} import Control.Monad.Random (mkStdGen) import Data.Ratio import Test.Framework import Markov import Markov.Example import Markov.Extra main = htfMain htf_thisModulesTests test_fromLists = assertEqual [ (0.5060975609756099, FromLists 'a') , (0.29268292682926833, FromLists 'l') , (0.201219512195122, FromLists 't') ] (chain [pure (FromLists 't') :: (Product Double, FromLists)] !! 100) test_m0Simple = assertEqual [ [0] , [-1,1] , [-2,0,2] ] (take 3 $ chain0 [Simple 0]) test_pdSimple = assertEqual [ [(1.0,0)] , [(0.5,-1),(0.5,1)] , [(0.25,-2),(0.5,0),(0.25,2)] ] (take 3 $ chain [pure 0 :: (Product Double, Simple)]) test_piSimple = assertEqual [ [(1,0)] , [(1,-1),(1,1)] , [(1,-2),(2,0),(1,2)] ] (take 3 $ chain [pure 0 :: (Product Int, Simple)]) test_siSimple = assertEqual [ (0,0), (0,1), (0,2), (1,-1), (1,0), (2,-2) ] (chain [pure 0 :: (Sum Int, Simple)] !! 2) test_HMM = assertEqual [ ((Product $ 3243 % 200000, Merge "aaa"),Room 1) , ((Product $ 9729 % 500000, Merge "aaa"),Room 2) , ((Product $ 4501 % 250000, Merge "aaa"),Room 3) ] (filter (\((_,Merge xs),_) -> xs == "aaa") $ chain [1 >*< Merge "" >*< 1 :: Product Rational :* Merge String :* Room] !! 3) test_expLoss = assertEqual (expectedLoss [pure $ initial [1,0,3] :: (Product Double, FillBin)]) 2 test_expLossMore = assertEqual 9.764425505050506 (expectedLoss [pure $ initial [1,0,3,2,2,5] :: (Product Double, FillBin)]) test_randomPath = assertEqual (0.1648351648351649, Urn (2,13)) (randomPath (mkStdGen 70) (Urn (2,5)) !! 8 :: (Product Double, Urn))