]> gitweb.michael.orlitzky.com - spline3.git/blobdiff - src/Tests/Cube.hs
Move the FunctionValues tests into the FunctionValues module.
[spline3.git] / src / Tests / Cube.hs
index 15103ce190019f3cee2feb006ded3690131924f3..17ea7f8857ee6e0a1bc9f079a7a19b7d8509fe57 100644 (file)
@@ -7,15 +7,34 @@ import Cardinal
 import Comparisons
 import Cube hiding (i, j, k)
 import FunctionValues
-import Misc (all_equal)
-import Tests.FunctionValues ()
+import Misc (all_equal, disjoint)
 import Tetrahedron (b0, b1, b2, b3, c, fv,
                     v0, v1, v2, v3, volume)
 
 
-
 -- Quickcheck tests.
 
+-- | The 'front_half_tetrahedra' and 'back_half_tetrahedra' should
+--   have no tetrahedra in common.
+prop_front_back_tetrahedra_disjoint :: Cube -> Bool
+prop_front_back_tetrahedra_disjoint c =
+    disjoint (front_half_tetrahedra c) (back_half_tetrahedra c)
+
+
+-- | The 'top_half_tetrahedra' and 'down_half_tetrahedra' should
+--   have no tetrahedra in common.
+prop_top_down_tetrahedra_disjoint :: Cube -> Bool
+prop_top_down_tetrahedra_disjoint c =
+    disjoint (top_half_tetrahedra c) (down_half_tetrahedra c)
+
+
+-- | The 'left_half_tetrahedra' and 'right_half_tetrahedra' should
+--   have no tetrahedra in common.
+prop_left_right_tetrahedra_disjoint :: Cube -> Bool
+prop_left_right_tetrahedra_disjoint c =
+    disjoint (left_half_tetrahedra c) (right_half_tetrahedra c)
+
+
 -- | Since the grid size is necessarily positive, all tetrahedra
 --   (which comprise cubes of positive volume) must have positive volume
 --   as well.
@@ -392,25 +411,35 @@ prop_c_tilde_2100_correct cube =
       t0 = tetrahedron0 cube
       t6 = tetrahedron6 cube
       fvs = Tetrahedron.fv t0
-      int = interior fvs
-      f = front fvs
-      r = right fvs
-      l = left fvs
-      b = back fvs
-      ft = front_top fvs
-      rt = right_top fvs
-      lt = left_top fvs
-      bt = back_top fvs
-      t = top fvs
-      d = down fvs
-      fr = front_right fvs
-      fl = front_left fvs
-      br = back_right fvs
-      bl = back_left fvs
-      fd = front_down fvs
-      rd = right_down fvs
-      ld = left_down fvs
-      bd = back_down fvs
+      (Cube _ i j k _ _) = cube
+      f  = value_at fvs (i-1) j k
+      b  = value_at fvs (i+1) j k
+      l  = value_at fvs i (j-1) k
+      r  = value_at fvs i (j+1) k
+      d  = value_at fvs i j (k-1)
+      t  = value_at fvs i j (k+1)
+      fl = value_at fvs (i-1) (j-1) k
+      fr = value_at fvs (i-1) (j+1) k
+      fd = value_at fvs (i-1) j (k-1)
+      ft = value_at fvs (i-1) j (k+1)
+      bl = value_at fvs (i+1) (j-1) k
+      br = value_at fvs (i+1) (j+1) k
+      bd = value_at fvs (i+1) j (k-1)
+      bt = value_at fvs (i+1) j (k+1)
+      ld = value_at fvs i (j-1) (k-1)
+      lt = value_at fvs i (j-1) (k+1)
+      rd = value_at fvs i (j+1) (k-1)
+      rt = value_at fvs i (j+1) (k+1)
+      fld = value_at fvs (i-1) (j-1) (k-1)
+      flt = value_at fvs (i-1) (j-1) (k+1)
+      frd = value_at fvs (i-1) (j+1) (k-1)
+      frt = value_at fvs (i-1) (j+1) (k+1)
+      bld = value_at fvs (i+1) (j-1) (k-1)
+      blt = value_at fvs (i+1) (j-1) (k+1)
+      brd = value_at fvs (i+1) (j+1) (k-1)
+      brt = value_at fvs (i+1) (j+1) (k+1)
+      int = value_at fvs i j k
+
 
 -- Tests to check that the correct edges are incidental.
 prop_t0_shares_edge_with_t1 :: Cube -> Bool