import Test.QuickCheck
import Assertions
+import Comparisons
import Cube
+import Examples
+import FunctionValues (value_at)
import Grid
import Tetrahedron
return (make_grid h' fvs)
--- | Values of the function f(x,y,z) = 1 + x + xy + xyz taken at nine
--- points (hi, hj, jk) with h = 1. From example one in the paper.
--- Used in the next bunch of tests.
-trilinear :: [[[Double]]]
-trilinear = [ [ [ 1, 2, 3 ],
- [ 1, 3, 5 ],
- [ 1, 4, 7 ] ],
- [ [ 1, 2, 3 ],
- [ 1, 4, 7 ],
- [ 1, 6, 11 ] ],
- [ [ 1, 2, 3 ],
- [ 1, 5, 9 ],
- [ 1, 8, 15 ]]]
-
-- | Check the value of c0030 for tetrahedron0 belonging to the
-- cube centered on (1,1,1) with a grid constructed from the
-- trilinear values. See example one in the paper.
t = tetrahedron0 cube
+test_trilinear_reproduced :: Test
+test_trilinear_reproduced =
+ TestCase $ assertTrue "trilinears are reproduced correctly" $
+ and [p (i', j', k') ~= value_at trilinear i j k
+ | i <- [0..2],
+ j <- [0..2],
+ k <- [0..2],
+ let i' = fromIntegral i,
+ let j' = fromIntegral j,
+ let k' = fromIntegral k]
+ where
+ g = make_grid 1 trilinear
+ c0 = fromJust $ cube_at g 1 1 1
+ t0 = tetrahedron0 c0
+ p = polynomial t0
+
+
+test_zeros_reproduced :: Test
+test_zeros_reproduced =
+ TestCase $ assertTrue "the zero function is reproduced correctly" $
+ and [p (i', j', k') ~= value_at zeros i j k
+ | i <- [0..2],
+ j <- [0..2],
+ k <- [0..2],
+ let i' = fromIntegral i,
+ let j' = fromIntegral j,
+ let k' = fromIntegral k]
+ where
+ g = make_grid 1 zeros
+ c0 = fromJust $ cube_at g 1 1 1
+ t0 = tetrahedron0 c0
+ p = polynomial t0
+
+
-- | A list of all HUnit tests defined in this module.
grid_tests :: [Test]
grid_tests =
test_trilinear_f0_t0_v0,
test_trilinear_f0_t0_v1,
test_trilinear_f0_t0_v2,
- test_trilinear_f0_t0_v3]
+ test_trilinear_f0_t0_v3,
+ test_trilinear_reproduced,
+ test_zeros_reproduced]