X-Git-Url: https://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FTests%2FCardinal.hs;fp=src%2FTests%2FCardinal.hs;h=cf1be4effc8fabb2a613b3f177e462050e133526;hb=25d751371c1e01905abc25f1031a2bb6ef847a39;hp=0000000000000000000000000000000000000000;hpb=c88ec8e43960514d27a6368d864a68e07eb18e50;p=spline3.git 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