X-Git-Url: https://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FFunctionValues.hs;fp=src%2FFunctionValues.hs;h=e9da25ffc235171c89bd6b878162d681554d5e0a;hb=9849853e69c46b46996e8c775d15661b2aba27a8;hp=00bb0a828d3072f3d4d4b2cdc51c8c4e2ccd2549;hpb=c3d4eba6aa5ada928b351e9ec7c12c3077808ba7;p=spline3.git diff --git a/src/FunctionValues.hs b/src/FunctionValues.hs index 00bb0a8..e9da25f 100644 --- a/src/FunctionValues.hs +++ b/src/FunctionValues.hs @@ -7,6 +7,7 @@ module FunctionValues ( make_values, rotate, function_values_tests, + function_values_properties, value_at ) where @@ -15,10 +16,11 @@ import Prelude hiding (LT) import Test.HUnit import Test.Framework (Test, testGroup) import Test.Framework.Providers.HUnit (testCase) +import Test.Framework.Providers.QuickCheck2 (testProperty) import Test.QuickCheck (Arbitrary(..), choose) import Assertions (assertTrue) -import Cardinal ( Cardinal(..) ) +import Cardinal ( Cardinal(..), cwx, cwy, cwz ) import Examples (trilinear) import Values (Values3D, dims, idx) @@ -314,3 +316,68 @@ function_values_tests :: Test.Framework.Test function_values_tests = testGroup "FunctionValues Tests" [ testCase "test directions" test_directions ] + + +prop_x_rotation_doesnt_affect_front :: FunctionValues -> Bool +prop_x_rotation_doesnt_affect_front fv0 = + expr1 == expr2 + where + fv1 = rotate cwx fv0 + expr1 = front fv0 + expr2 = front fv1 + +prop_x_rotation_doesnt_affect_back :: FunctionValues -> Bool +prop_x_rotation_doesnt_affect_back fv0 = + expr1 == expr2 + where + fv1 = rotate cwx fv0 + expr1 = back fv0 + expr2 = back fv1 + + +prop_y_rotation_doesnt_affect_left :: FunctionValues -> Bool +prop_y_rotation_doesnt_affect_left fv0 = + expr1 == expr2 + where + fv1 = rotate cwy fv0 + expr1 = left fv0 + expr2 = left fv1 + +prop_y_rotation_doesnt_affect_right :: FunctionValues -> Bool +prop_y_rotation_doesnt_affect_right fv0 = + expr1 == expr2 + where + fv1 = rotate cwy fv0 + expr1 = right fv0 + expr2 = right fv1 + + +prop_z_rotation_doesnt_affect_down :: FunctionValues -> Bool +prop_z_rotation_doesnt_affect_down fv0 = + expr1 == expr2 + where + fv1 = rotate cwz fv0 + expr1 = down fv0 + expr2 = down fv1 + + +prop_z_rotation_doesnt_affect_top :: FunctionValues -> Bool +prop_z_rotation_doesnt_affect_top fv0 = + expr1 == expr2 + where + fv1 = rotate cwz fv0 + expr1 = top fv0 + expr2 = top fv1 + + +function_values_properties :: Test.Framework.Test +function_values_properties = + let tp = testProperty + in + testGroup "FunctionValues Properties" [ + tp "x rotation doesn't affect front" prop_x_rotation_doesnt_affect_front, + tp "x rotation doesn't affect back" prop_x_rotation_doesnt_affect_back, + tp "y rotation doesn't affect left" prop_y_rotation_doesnt_affect_left, + tp "y rotation doesn't affect right" prop_y_rotation_doesnt_affect_right, + tp "z rotation doesn't affect top" prop_z_rotation_doesnt_affect_top, + tp "z rotation doesn't affect down" prop_z_rotation_doesnt_affect_down ]