import Examples
import FunctionValues (value_at)
import Grid
+import Point (Point)
import Tetrahedron
+import ThreeDimensional
-- | Check the value of c0030 for tetrahedron0 belonging to the
g = make_grid 1 trilinear
c0 = fromJust $ cube_at g 1 1 1
+
+-- | The point 'p' in this test lies on the boundary of tetrahedra 12 and 15.
+-- However, the 'contains_point' test fails due to some numerical innacuracy.
+-- This bug should have been fixed by setting a positive tolerance level.
+--
+-- Example from before the fix:
+--
+-- > b0 (tetrahedron12 c) p
+-- -2.168404344971019e-18
+-- > b0 (tetrahedron15 c) p
+-- -3.4694469519536365e-18
+--
+test_tetrahedra_collision_sensitivity :: Assertion
+test_tetrahedra_collision_sensitivity =
+ assertTrue "tetrahedron collision tests aren't too sensitive" $
+ contains_point t12 p &&
+ contains_point t15 p
+ where
+ g = make_grid 1 trilinear
+ c = cube_at g 0 17 1
+ p = (0, 16.75, 0.5) :: Point
+ t12 = tetrahedron12 c
+ t15 = tetrahedron15 c
tc "trilinear f0_t0_v3" test_trilinear_f0_t0_v3,
tc "trilinear reproduced" test_trilinear_reproduced,
tc "zeros reproduced" test_zeros_reproduced,
- tc "trilinear9x9x9 reproduced" test_trilinear9x9x9_reproduced ]
+ tc "trilinear9x9x9 reproduced" test_trilinear9x9x9_reproduced,
+ tc "tetrahedra collision test isn't too sensitive"
+ test_tetrahedra_collision_sensitivity ]
misc_tests :: Test.Framework.Test