module Data.Number.ER.RnToRm.UnitDom.Base.Tests.Properties.Bounds
where
import Data.Number.ER.RnToRm.UnitDom.Base.Tests.Properties.Common
import Data.Number.ER.RnToRm.UnitDom.Base.Tests.Generate
import qualified Data.Number.ER.RnToRm.UnitDom.Base as UFB
import Data.Number.ER.BasicTypes
import Data.Number.ER.BasicTypes.Tests.Generate
import Test.QuickCheck
prop_fbBounds_consistent sample reportFileName (Ix20 ix, FBSize10 (n,fb)) =
fbAtKeyPointsCanBeLeq reportFileName (ix,n,True) fb fbHigh
&&
fbAtKeyPointsCanBeLeq reportFileName (ix,n,False) fbLow fb
where
_ = [fb,sample]
fbLow = UFB.const cLow
fbHigh = UFB.const cHigh
(cLow, cHigh) = UFB.bounds ix fb
prop_fbMax_consistent sample reportFileName
(Deg20Size20 maxDegree maxSize, FBSize10 (n1,fb1), FBSize10 (n2, fb2)) =
fbAtKeyPointsPointwiseBinaryDownUpConsistent
reportFileName ((maxDegree, maxSize), n1, n2)
max fb1 fb2 (maxLow, maxHigh)
where
_ = [fb1,sample]
maxLow = UFB.maxDown maxDegree maxSize fb1 fb2
maxHigh = UFB.maxUp maxDegree maxSize fb1 fb2
prop_fbMin_consistent sample reportFileName
(Deg20Size20 maxDegree maxSize, FBSize10 (n1,fb1), FBSize10 (n2, fb2)) =
fbAtKeyPointsPointwiseBinaryDownUpConsistent
reportFileName ((maxDegree, maxSize), n1, n2)
min fb1 fb2 (minLow, minHigh)
where
_ = [fb1,sample]
minLow = UFB.minDown maxDegree maxSize fb1 fb2
minHigh = UFB.minUp maxDegree maxSize fb1 fb2