packages feed

safe-coupling-0.1.0.0: test/Spec/TD0.hs

{-# LANGUAGE PackageImports #-}
{-@ LIQUID "--reflection" @-}

module Spec.TD0 where

import           Test.HUnit                     ( assertEqual
                                                , (@?)
                                                , (@?=)
                                                , Assertion
                                                )
import           TD.TD0                         ( td0
                                                , ValueFunction
                                                , Transition
                                                )

import           Monad.PrM
import           Data.Dist
import "safe-coupling" Data.List

import           Prelude                 hiding ( map
                                                , repeat
                                                , foldr
                                                , fmap
                                                , mapM
                                                )

import           Numeric.Probability.Distribution
                                                ( decons )

v0 :: ValueFunction
v0 = Cons 1.0 (Cons (-1.0) Nil)

t :: Transition
t = Cons (ppure (0, 0)) (Cons (ppure (0, 0)) Nil)

unit_td0_base :: Assertion
unit_td0_base =
  v @?= v0 
  where [(v, 1)] = decons $ td0 0 v0 t

unit_td0_simple :: Assertion
unit_td0_simple =
  v @?= Cons 0.36 (Cons (-0.14) Nil)
  where 
      [(v, 1)] = decons $ td0 2 v0 t