]> gitweb.michael.orlitzky.com - spline3.git/blobdiff - src/Tests/Cube.hs
A bunch more test cleanup.
[spline3.git] / src / Tests / Cube.hs
index 15103ce190019f3cee2feb006ded3690131924f3..e9e21d6fad3f5fd389050ce135b1d54d631155ff 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.
@@ -379,38 +398,28 @@ prop_c_tilde_2100_rotation_correct cube =
               (1/192)*(FD + RD + LD + BD)
 
 
--- | We know what (c t6 2 1 0 0) should be from Sorokina and Zeilfelder, p. 87.
---   This test checks the actual value based on the FunctionValues of the cube.
+-- | We know what (c t6 2 1 0 0) should be from Sorokina and
+--   Zeilfelder, p. 87.  This test checks the actual value based on
+--   the FunctionValues of the cube.
+--
+--   If 'prop_c_tilde_2100_rotation_correct' passes, then this test is
+--   even meaningful!
 prop_c_tilde_2100_correct :: Cube -> Bool
 prop_c_tilde_2100_correct cube =
-    c t6 2 1 0 0 == (3/8)*int
-                    + (1/12)*(f + r + l + b)
-                    + (1/64)*(ft + rt + lt + bt)
-                    + (7/48)*t + (1/48)*d + (1/96)*(fr + fl + br + bl)
-                    + (1/192)*(fd + rd + ld + bd)
+    c t6 2 1 0 0 == expected
     where
       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
+      expected = eval fvs $
+                  (3/8)*I +
+                  (1/12)*(F + R + L + B) +
+                  (1/64)*(FT + RT + LT + BT) +
+                  (7/48)*T +
+                  (1/48)*D +
+                  (1/96)*(FR + FL + BR + BL) +
+                  (1/192)*(FD + RD + LD + BD)
+
 
 -- Tests to check that the correct edges are incidental.
 prop_t0_shares_edge_with_t1 :: Cube -> Bool