AlgoRhythm-0.1.0.0: test/TChaos.hs
{-# LANGUAGE GADTs #-}
module TChaos where
import Control.Monad.Trans.State
import qualified Generate as Gen
import Test.Framework (Test, testGroup)
import Test.Framework.Providers.HUnit (testCase)
import Test.HUnit hiding (Test)
import Utils.Vec
-- | Tests if the Chaos function correctly updates every iteration.
chaosTests :: Test
chaosTests = testGroup "Chaos"
[ testCase "chaos1" $ do
let mapping = Gen.defaultMapping {Gen.pcSel=Gen.chaos1Selector, Gen.octSel=Gen.chaos1Selector}
(_, genState) <- runStateT Gen.bSolo (Gen.chaosState Gen.chaos1 mapping)
let chaosState = Gen.state genState
let ds = Gen.variables chaosState
case Gen.updateFunctions chaosState of
(f :. Nil) -> do
let expectedVs = [ -1.0
, -0.9521
, -0.7695677377609997
, -0.15610097331134187
, 0.9524321761768165
, -0.7708027147284231
, -0.15981449614634702
, 0.9501420518882291
, -0.7622971584238392
, -0.1343593712063227
]
let actualVs = reverse
$ snd
$ foldr (\_ (d',vs) -> (f d' :. Nil, f d' : vs)) (ds, []) [(1 :: Int)..10]
actualVs @?= expectedVs
]