module Test.Shape where import qualified Data.Array.Comfort.Shape.Static as Static import qualified Data.Array.Comfort.Shape.Extra as ShapeExtra import qualified Data.Array.Comfort.Shape.Test as ShapeTest import qualified Data.Array.Comfort.Shape as Shape import qualified Type.Data.Num.Unary.Literal as TypeNum import qualified Type.Data.Num.Unary as Unary import Type.Base.Proxy (Proxy) import qualified Test.QuickCheck as QC import Test.Utility (prefix) import Control.Applicative ((<$>)) simplex :: (Unary.Natural n) => Proxy n -> [(String, QC.Property)] simplex n = prefix ("Simplex." ++ show (Unary.integralFromProxy n :: Int)) (ShapeTest.tests $ (ShapeExtra.Simplex (Unary.unary n) . Shape.Range 'a' <$> QC.choose ('a','m'))) staticZeroBased :: (Unary.Natural n) => Proxy n -> [(String, QC.Property)] staticZeroBased n = prefix ("Static.ZeroBased." ++ show (Unary.integralFromProxy n :: Int)) (ShapeTest.tests $ return $ Static.ZeroBased $ Unary.unary n) tests :: [(String, QC.Property)] tests = simplex TypeNum.u0 ++ simplex TypeNum.u1 ++ simplex TypeNum.u2 ++ simplex TypeNum.u3 ++ simplex TypeNum.u4 ++ staticZeroBased TypeNum.u1 ++ staticZeroBased TypeNum.u2 ++ staticZeroBased TypeNum.u23 ++ []