packages feed

exp-pairs-0.1.5.0: tests/Process.hs

module Process where

import Math.ExpPairs.Process

import Test.Tasty
import Test.Tasty.SmallCheck as SC
import Test.Tasty.QuickCheck as QC hiding (Positive)

import Instances ()

testReadShow :: Path -> Bool
testReadShow p@(Path _ xs) = read (concatMap show xs) == p

testOrd :: Path -> Path -> Bool
testOrd p1 p2 = compare p1 p2 == compare (x1 / z1) (x2 / z2)
  && compare (y2 / z2) (y1 / z1) == compare (x1 / z1) (x2 / z2)
  where
    (x1, y1, z1) = evalPath p1 (1, 4, 6)
    (x2, y2, z2) = evalPath p2 (1, 4, 6)

testSuite :: TestTree
testSuite = testGroup "Process"
  [ adjustOption (\(SC.SmallCheckDepth n) -> SC.SmallCheckDepth (n `min` 13)) $
      SC.testProperty "read . show == id" testReadShow
  , QC.testProperty "read . show == id" testReadShow
  , adjustOption (\(SC.SmallCheckDepth n) -> SC.SmallCheckDepth (n `min` 8)) $
      SC.testProperty "Ord of Processes" testOrd
  , QC.testProperty "Ord of Processes" testOrd
  ]