{-| Module : Data.Number.ER.RnToRm.UnitDom.Base.Tests.Properties.Bounds Description : (testing) properties of bounding operations Copyright : (c) 2007-2008 Michal Konecny License : BSD3 Maintainer : mik@konecny.aow.cz Stability : experimental Portability : portable Quickcheck properties of bounding operations, ie constant bounds and binary min/max. -} 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