From: Michael Orlitzky Date: Fri, 6 May 2011 20:38:39 +0000 (-0400) Subject: Add an Arbitrary instance for Cardinal two Cardinal tests. X-Git-Tag: 0.0.1~340 X-Git-Url: https://gitweb.michael.orlitzky.com/?a=commitdiff_plain;h=25d751371c1e01905abc25f1031a2bb6ef847a39;p=spline3.git Add an Arbitrary instance for Cardinal two Cardinal tests. --- diff --git a/src/Tests/Cardinal.hs b/src/Tests/Cardinal.hs new file mode 100644 index 0000000..cf1be4e --- /dev/null +++ b/src/Tests/Cardinal.hs @@ -0,0 +1,63 @@ +module Tests.Cardinal +where + +import Control.Monad (liftM, liftM2) +import Prelude hiding (LT) +import Test.QuickCheck + +import Cardinal + + + +instance Arbitrary Cardinal where + arbitrary = oneof [f,b,l,r,d,t,fl,fr,fd,ft,bl,br,bd,bt,ld,lt, + rd,rt,fld,flt,frd,frt,bld,blt,brd,brt,i, + scalar,csum,cdiff,cprod,cquot] + where + f = return F + b = return B + l = return L + r = return R + d = return D + t = return T + fl = return FL + fr = return FR + fd = return FD + ft = return FT + bl = return BL + br = return BR + bd = return BD + bt = return BT + ld = return LD + lt = return LT + rd = return RD + rt = return RT + fld = return FLD + flt = return FLT + frd = return FRD + frt = return FRT + bld = return BLD + blt = return BLT + brd = return BRD + brt = return BRT + i = return I + scalar = liftM Scalar arbitrary + csum = liftM2 Sum arbitrary arbitrary + cdiff = liftM2 Difference arbitrary arbitrary + cprod = liftM2 Product arbitrary arbitrary + cquot = liftM2 Quotient arbitrary arbitrary + + +prop_ccwx_rotation_changes_direction :: Cardinal -> Property +prop_ccwx_rotation_changes_direction c = + -- The front and back faces are unchanged by x-rotation. + c `elem` [L, R, D, T, FL, FR, FD, FT, BL, BR, BD, BT, LD, LT, + RD, RT, FLD, FLT, FRD, FRT, BLD, BLT, BRD, BRT] + ==> ccwx c /= c + +prop_cwx_rotation_changes_direction :: Cardinal -> Property +prop_cwx_rotation_changes_direction c = + -- The front and back faces are unchanged by x-rotation. + c `elem` [L, R, D, T, FL, FR, FD, FT, BL, BR, BD, BT, LD, LT, + RD, RT, FLD, FLT, FRD, FRT, BLD, BLT, BRD, BRT] + ==> cwx c /= c