mcmc-0.2.4: test/Mcmc/ProposalSpec.hs
-- |
-- Module : Mcmc.ProposalSpec
-- Description : Unit tests for Mcmc.Proposal
-- Copyright : (c) Dominik Schrempf, 2020
-- License : GPL-3.0-or-later
--
-- Maintainer : dominik.schrempf@gmail.com
-- Stability : unstable
-- Portability : portable
--
-- Creation date: Thu Jun 25 11:46:05 2020.
module Mcmc.ProposalSpec
( spec,
)
where
import Mcmc.Proposal
import Mcmc.Proposal.Slide
import System.Random.MWC
import Test.Hspec
p1 :: Proposal Double
p1 = slideSymmetric 1.0 "test1" 1 True
p2 :: Proposal Double
p2 = slideSymmetric 1.0 "test2" 3 True
c :: Cycle Double
c = fromList [p1, p2]
spec :: Spec
spec =
describe "getNIterations" $
it "returns the correct number of proposals in a cycle" $
do
g <- create
l1 <- length . head <$> getNIterations c 1 g
l1 `shouldBe` 4
l2 <- length . head <$> getNIterations (setOrder RandomReversibleO c) 1 g
l2 `shouldBe` 8
o3 <- head <$> getNIterations (setOrder SequentialReversibleO c) 1 g
length o3 `shouldBe` 8
o3 `shouldBe` [p1, p2, p2, p2, p2, p2, p2, p1]