X-Git-Url: https://gitweb.michael.orlitzky.com/?p=spline3.git;a=blobdiff_plain;f=src%2FFunctionValues.hs;h=dc1f0d00f6fd7cc4a6bc36fa67b54efd5d2037d7;hp=6d98e95a99c4f9019f29e036f947b7b91393e00d;hb=83ef0aaeae074756e4ee90d72d3e27e74e136061;hpb=c27b3d00fadd62a710668465722c58bb8087c418 diff --git a/src/FunctionValues.hs b/src/FunctionValues.hs index 6d98e95..dc1f0d0 100644 --- a/src/FunctionValues.hs +++ b/src/FunctionValues.hs @@ -1,6 +1,8 @@ {-# LANGUAGE BangPatterns #-} + -- | The FunctionValues module contains the 'FunctionValues' type and -- the functions used to manipulate it. +-- module FunctionValues ( FunctionValues(..), empty_values, @@ -9,26 +11,30 @@ module FunctionValues ( rotate, function_values_tests, function_values_properties, - value_at - ) + value_at ) where -import Prelude hiding (LT) -import Test.HUnit (Assertion) -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(..), cwx, cwy, cwz ) -import Examples (trilinear) -import Values (Values3D, dims, idx) +import Prelude hiding ( LT ) +import Test.Tasty ( TestTree, testGroup ) +import Test.Tasty.HUnit ( Assertion, testCase ) +import Test.Tasty.QuickCheck ( Arbitrary( arbitrary ), choose, testProperty ) + +import Assertions ( assertTrue ) +import Cardinal ( + Cardinal(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, Sum, + Difference, Product, Quotient ), + cwx, + cwy, + cwz ) +import Examples ( trilinear ) +import Values ( Values3D, dims, idx ) -- | The FunctionValues type represents the value of our function f at -- the 27 points surrounding (and including) the center of a -- cube. Each value of f can be accessed by the name of its -- direction. +-- data FunctionValues = FunctionValues { front :: !Double, back :: !Double, @@ -250,14 +256,6 @@ value_at v3d !i !j !k 2*(value_at v3d i j 0) - (value_at v3d i j 1) else 2*(value_at v3d i j (k-1)) - (value_at v3d i j (k-2)) - - | otherwise = - let istr = show i - jstr = show j - kstr = show k - coordstr = "(" ++ istr ++ "," ++ jstr ++ "," ++ kstr ++ ")" - in - error $ "value_at called outside of domain: " ++ coordstr where (dim_i, dim_j, dim_k) = dims v3d @@ -377,9 +375,9 @@ test_directions = back_right_top fvs == 15] -function_values_tests :: Test.Framework.Test +function_values_tests :: TestTree function_values_tests = - testGroup "FunctionValues Tests" + testGroup "FunctionValues tests" [ testCase "test directions" test_directions ] @@ -435,14 +433,24 @@ prop_z_rotation_doesnt_affect_top fv0 = expr2 = top fv1 -function_values_properties :: Test.Framework.Test +function_values_properties :: TestTree 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 ] + testGroup "FunctionValues properties" [ + testProperty + "x rotation doesn't affect front" + prop_x_rotation_doesnt_affect_front, + testProperty + "x rotation doesn't affect back" + prop_x_rotation_doesnt_affect_back, + testProperty + "y rotation doesn't affect left" + prop_y_rotation_doesnt_affect_left, + testProperty + "y rotation doesn't affect right" + prop_y_rotation_doesnt_affect_right, + testProperty + "z rotation doesn't affect top" + prop_z_rotation_doesnt_affect_top, + testProperty + "z rotation doesn't affect down" + prop_z_rotation_doesnt_affect_down ]