X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FTests%2FFunctionValues.hs;h=40d2502fceb1eb51dc09feab6e311eb20d5aedee;hb=26f0a2204a0bdb41b1d6aa5430544c404b77e638;hp=ce9a35105a24656e790a40cff1ad0030a1ca0da1;hpb=33998c9e4eac925df771d224befc5c0974f877bf;p=spline3.git diff --git a/src/Tests/FunctionValues.hs b/src/Tests/FunctionValues.hs index ce9a351..40d2502 100644 --- a/src/Tests/FunctionValues.hs +++ b/src/Tests/FunctionValues.hs @@ -1,39 +1,55 @@ module Tests.FunctionValues where +import Test.HUnit import Test.QuickCheck +import Assertions +import Examples import FunctionValues +-- | We perform addition with the function values contained in a +-- FunctionValues object. If we choose random doubles near the machine +-- min/max, we risk overflowing or underflowing the 'Double'. This +-- places a reasonably safe limit on the maximum size of our generated +-- 'Double' members. +max_double :: Double +max_double = 10000.0 + +-- | See 'max_double'. +min_double :: Double +min_double = (-1) * max_double + + instance Arbitrary FunctionValues where arbitrary = do - front' <- arbitrary :: Gen Double - back' <- arbitrary :: Gen Double - left' <- arbitrary :: Gen Double - right' <- arbitrary :: Gen Double - top' <- arbitrary :: Gen Double - down' <- arbitrary :: Gen Double - front_left' <- arbitrary :: Gen Double - front_right' <- arbitrary :: Gen Double - front_top' <- arbitrary :: Gen Double - front_down' <- arbitrary :: Gen Double - back_left' <- arbitrary :: Gen Double - back_right' <- arbitrary :: Gen Double - back_top' <- arbitrary :: Gen Double - back_down' <- arbitrary :: Gen Double - left_top' <- arbitrary :: Gen Double - left_down' <- arbitrary :: Gen Double - right_top' <- arbitrary :: Gen Double - right_down' <- arbitrary :: Gen Double - front_left_top' <- arbitrary :: Gen Double - front_left_down' <- arbitrary :: Gen Double - front_right_top' <- arbitrary :: Gen Double - front_right_down' <- arbitrary :: Gen Double - back_left_top' <- arbitrary :: Gen Double - back_left_down' <- arbitrary :: Gen Double - back_right_top' <- arbitrary :: Gen Double - back_right_down' <- arbitrary :: Gen Double - interior' <- arbitrary :: Gen Double + front' <- choose (min_double, max_double) + back' <- choose (min_double, max_double) + left' <- choose (min_double, max_double) + right' <- choose (min_double, max_double) + top' <- choose (min_double, max_double) + down' <- choose (min_double, max_double) + front_left' <- choose (min_double, max_double) + front_right' <- choose (min_double, max_double) + front_top' <- choose (min_double, max_double) + front_down' <- choose (min_double, max_double) + back_left' <- choose (min_double, max_double) + back_right' <- choose (min_double, max_double) + back_top' <- choose (min_double, max_double) + back_down' <- choose (min_double, max_double) + left_top' <- choose (min_double, max_double) + left_down' <- choose (min_double, max_double) + right_top' <- choose (min_double, max_double) + right_down' <- choose (min_double, max_double) + front_left_top' <- choose (min_double, max_double) + front_left_down' <- choose (min_double, max_double) + front_right_top' <- choose (min_double, max_double) + front_right_down' <- choose (min_double, max_double) + back_left_top' <- choose (min_double, max_double) + back_left_down' <- choose (min_double, max_double) + back_right_top' <- choose (min_double, max_double) + back_right_down' <- choose (min_double, max_double) + interior' <- choose (min_double, max_double) return empty_values { front = front', back = back', @@ -62,3 +78,39 @@ instance Arbitrary FunctionValues where back_right_top = back_right_top', back_right_down = back_right_down', interior = interior' } + + + + +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]