X-Git-Url: https://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FFunctionValues.hs;fp=src%2FFunctionValues.hs;h=00bb0a828d3072f3d4d4b2cdc51c8c4e2ccd2549;hb=1f20ae355d28b53fc2e1e31c4bd131e9ede00a87;hp=895f9253a42506398c5594a3bd8b864baa32099a;hpb=dd58892d526586bc436b88d18a54b954be032761;p=spline3.git diff --git a/src/FunctionValues.hs b/src/FunctionValues.hs index 895f925..00bb0a8 100644 --- a/src/FunctionValues.hs +++ b/src/FunctionValues.hs @@ -1,12 +1,25 @@ -- | The FunctionValues module contains the 'FunctionValues' type and -- the functions used to manipulate it. -module FunctionValues +module FunctionValues ( + FunctionValues, + empty_values, + eval, + make_values, + rotate, + function_values_tests, + value_at + ) where import Prelude hiding (LT) +import Test.HUnit +import Test.Framework (Test, testGroup) +import Test.Framework.Providers.HUnit (testCase) import Test.QuickCheck (Arbitrary(..), choose) -import Cardinal +import Assertions (assertTrue) +import Cardinal ( Cardinal(..) ) +import Examples (trilinear) import Values (Values3D, dims, idx) -- | The FunctionValues type represents the value of our function f at @@ -258,3 +271,46 @@ rotate rotation fv = back_right_down = eval fv (rotation BRD), back_right_top = eval fv (rotation BRT), interior = interior fv } + + + +-- | Ensure that the trilinear values wind up where we think they +-- should. +test_directions :: Assertion +test_directions = + assertTrue "all direction functions work" (and equalities) + where + fvs = make_values trilinear 1 1 1 + equalities = [ interior fvs == 4, + front fvs == 1, + back fvs == 7, + left fvs == 2, + right fvs == 6, + down fvs == 3, + top fvs == 5, + front_left fvs == 1, + front_right fvs == 1, + front_down fvs == 1, + front_top fvs == 1, + back_left fvs == 3, + back_right fvs == 11, + back_down fvs == 5, + back_top fvs == 9, + left_down fvs == 2, + left_top fvs == 2, + right_down fvs == 4, + right_top fvs == 8, + front_left_down fvs == 1, + front_left_top fvs == 1, + front_right_down fvs == 1, + front_right_top fvs == 1, + back_left_down fvs == 3, + back_left_top fvs == 3, + back_right_down fvs == 7, + back_right_top fvs == 15] + + +function_values_tests :: Test.Framework.Test +function_values_tests = + testGroup "FunctionValues Tests" + [ testCase "test directions" test_directions ]