]> gitweb.michael.orlitzky.com - spline3.git/blobdiff - src/Grid.hs
Fix more hlint issues in Grid tests.
[spline3.git] / src / Grid.hs
index 94b9e1de7715bd4107a52904dff3ab803a0cd1a7..66275491fd5c58d64fd0db110c15702211862b1a 100644 (file)
@@ -5,7 +5,6 @@
 module Grid (
   cube_at,
   grid_tests,
-  make_grid,
   slow_tests,
   zoom
   )
@@ -28,14 +27,13 @@ import Cube (Cube(Cube),
              find_containing_tetrahedron,
              tetrahedra,
              tetrahedron)
-import Examples (trilinear, trilinear9x9x9, zeros, naturals_1d)
+import Examples (trilinear, trilinear9x9x9, zeros)
 import FunctionValues (make_values, value_at)
 import Point (Point(..))
 import ScaleFactor (ScaleFactor)
 import Tetrahedron (
   Tetrahedron(v0,v1,v2,v3),
   c,
-  contains_point,
   polynomial,
   )
 import Values (Values3D, dims, empty3d, zoom_shape)
@@ -54,14 +52,7 @@ instance Arbitrary Grid where
     arbitrary = do
       (Positive h') <- arbitrary :: Gen (Positive Double)
       fvs <- arbitrary :: Gen Values3D
-      return (make_grid h' fvs)
-
-
--- | The constructor that we want people to use.
---   Ignore non-positive grid sizes for performance.
-make_grid :: Double -> Values3D -> Grid
-make_grid grid_size values =
-  Grid grid_size values
+      return $ Grid h' fvs
 
 
 
@@ -120,7 +111,7 @@ zoom_result :: Values3D -> ScaleFactor -> R.DIM3 -> Double
 zoom_result v3d (sfx, sfy, sfz) (R.Z R.:. m R.:. n R.:. o) =
   f p
   where
-    g = make_grid 1 v3d
+    g = Grid 1 v3d
     offset = (h g)/2
     m' = (fromIntegral m) / (fromIntegral sfx) - offset
     n' = (fromIntegral n) / (fromIntegral sfy) - offset
@@ -181,7 +172,7 @@ trilinear_c0_t0_tests =
        testCase "v3 is correct" test_trilinear_f0_t0_v3]
     ]
   where
-    g = make_grid 1 trilinear
+    g = Grid 1 trilinear
     cube = cube_at g 1 1 1
     t = tetrahedron cube 0
 
@@ -296,7 +287,7 @@ test_trilinear_reproduced =
                       let j' = fromIntegral j,
                       let k' = fromIntegral k]
     where
-      g = make_grid 1 trilinear
+      g = Grid 1 trilinear
       cs = [ cube_at g ci cj ck | ci <- [0..2], cj <- [0..2], ck <- [0..2] ]
 
 
@@ -314,7 +305,7 @@ test_zeros_reproduced =
                       t0 <- tetrahedra c0,
                       let p = polynomial t0 ]
     where
-      g = make_grid 1 zeros
+      g = Grid 1 zeros
       cs = [ cube_at g ci cj ck | ci <- [0..2], cj <- [0..2], ck <- [0..2] ]
 
 
@@ -332,29 +323,10 @@ test_trilinear9x9x9_reproduced =
               let j' = (fromIntegral j) * 0.5,
               let k' = (fromIntegral k) * 0.5]
     where
-      g = make_grid 1 trilinear
+      g = Grid 1 trilinear
       c0 = 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:
---
---   b1 (tetrahedron c 20) (0, 17.5, 0.5)
---   -0.0
---
-test_tetrahedra_collision_sensitivity :: Assertion
-test_tetrahedra_collision_sensitivity =
-  assertTrue "tetrahedron collision tests isn't too sensitive" $
-             contains_point t20 p
-  where
-    g = make_grid 1 naturals_1d
-    cube = cube_at g 0 18 0
-    p = Point 0 17.5 0.5
-    t20 = tetrahedron cube 20
-
 
 prop_cube_indices_never_go_out_of_bounds :: Grid -> Gen Bool
 prop_cube_indices_never_go_out_of_bounds g =
@@ -391,7 +363,7 @@ prop_cube_indices_never_go_out_of_bounds g =
 --   in opposite directions, one of them has to have negative volume!
 prop_c0120_identity :: Grid -> Property
 prop_c0120_identity g =
-  and [xsize >= 3, ysize >= 3, zsize >= 3] ==>
+  xsize >= 3 && ysize >= 3 && zsize >= 3 ==>
     c t0 0 1 2 0 ~= (c t0 1 0 2 0 + c t10 1 0 0 2) / 2
   where
     fvs = function_values g
@@ -406,7 +378,7 @@ prop_c0120_identity g =
 --   'prop_c0120_identity'.
 prop_c0111_identity :: Grid -> Property
 prop_c0111_identity g =
-  and [xsize >= 3, ysize >= 3, zsize >= 3] ==>
+  xsize >= 3 && ysize >= 3 && zsize >= 3 ==>
     c t0 0 1 1 1 ~= (c t0 1 0 1 1 + c t10 1 0 1 1) / 2
   where
     fvs = function_values g
@@ -421,7 +393,7 @@ prop_c0111_identity g =
 --   'prop_c0120_identity'.
 prop_c0201_identity :: Grid -> Property
 prop_c0201_identity g =
-  and [xsize >= 3, ysize >= 3, zsize >= 3] ==>
+  xsize >= 3 && ysize >= 3 && zsize >= 3 ==>
     c t0 0 2 0 1 ~= (c t0 1 1 0 1 + c t10 1 1 1 0) / 2
   where
     fvs = function_values g
@@ -436,7 +408,7 @@ prop_c0201_identity g =
 --   'prop_c0120_identity'.
 prop_c0102_identity :: Grid -> Property
 prop_c0102_identity g =
-  and [xsize >= 3, ysize >= 3, zsize >= 3] ==>
+  xsize >= 3 && ysize >= 3 && zsize >= 3 ==>
     c t0 0 1 0 2 ~= (c t0 1 0 0 2 + c t10 1 0 2 0) / 2
   where
     fvs = function_values g
@@ -451,7 +423,7 @@ prop_c0102_identity g =
 --   'prop_c0120_identity'.
 prop_c0210_identity :: Grid -> Property
 prop_c0210_identity g =
-  and [xsize >= 3, ysize >= 3, zsize >= 3] ==>
+  xsize >= 3 && ysize >= 3 && zsize >= 3 ==>
     c t0 0 2 1 0 ~= (c t0 1 1 1 0 + c t10 1 1 0 1) / 2
   where
     fvs = function_values g
@@ -466,7 +438,7 @@ prop_c0210_identity g =
 --   'prop_c0120_identity'.
 prop_c0300_identity :: Grid -> Property
 prop_c0300_identity g =
-  and [xsize >= 3, ysize >= 3, zsize >= 3] ==>
+  xsize >= 3 && ysize >= 3 && zsize >= 3 ==>
     c t0 0 3 0 0 ~= (c t0 1 2 0 0 + c t10 1 2 0 0) / 2
   where
     fvs = function_values g
@@ -495,8 +467,6 @@ grid_tests =
     testGroup "Grid Tests" [
       trilinear_c0_t0_tests,
       p80_29_properties,
-      testCase "tetrahedra collision test isn't too sensitive"
-        test_tetrahedra_collision_sensitivity,
       testProperty "cube indices within bounds"
         prop_cube_indices_never_go_out_of_bounds ]