]> gitweb.michael.orlitzky.com - spline3.git/commitdiff
Define a few tests locally.
authorMichael Orlitzky <michael@orlitzky.com>
Sat, 15 Oct 2011 22:14:34 +0000 (18:14 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Sat, 15 Oct 2011 22:14:34 +0000 (18:14 -0400)
Define domain_point local to those tests.
Remove the 'xi' alias.

src/Tetrahedron.hs

index 359ade5f115624aff8ee1030b0f4e347b1135f68..e71151a1e6a1d370a1057010415976a332cc15fe 100644 (file)
@@ -119,23 +119,6 @@ polynomial t =
             ((c t 3 0 0 0) `cmult` (beta t 3 0 0 0))
 
 
--- | Returns the domain point of t with indices i,j,k,l.
---   Simply an alias for the domain_point function.
-xi :: Tetrahedron -> Int -> Int -> Int -> Int -> Point
-xi = domain_point
-
--- | Returns the domain point of t with indices i,j,k,l.
-domain_point :: Tetrahedron -> Int -> Int -> Int -> Int -> Point
-domain_point t i j k l
-   | i + j + k + l == 3 = weighted_sum `scale` (1/3)
-   | otherwise = error "domain point index out of bounds"
-   where
-     v0' = (v0 t) `scale` (fromIntegral i)
-     v1' = (v1 t) `scale` (fromIntegral j)
-     v2' = (v2 t) `scale` (fromIntegral k)
-     v3' = (v3 t) `scale` (fromIntegral l)
-     weighted_sum = v0' + v1' + v2' + v3'
-
 
 -- | The Bernstein polynomial on t with indices i,j,k,l. Denoted by a
 --   capital 'B' in the Sorokina/Zeilfelder paper.
@@ -611,39 +594,6 @@ prop_b3_v2_always_zero t =
     (volume t) > 0 ==> (b3 t) (v2 t) ~= 0
 
 
--- | Used for convenience in the next few tests; not a test itself.
-p :: Tetrahedron -> Int -> Int -> Int -> Int -> Double
-p t i j k l = (polynomial t) (xi t i j k l)
-
--- | Given in Sorokina and Zeilfelder, p. 78.
-prop_c3000_identity :: Tetrahedron -> Property
-prop_c3000_identity t =
-    (volume t) > 0 ==>
-               c t 3 0 0 0 ~= p t 3 0 0 0
-
--- | Given in Sorokina and Zeilfelder, p. 78.
-prop_c2100_identity :: Tetrahedron -> Property
-prop_c2100_identity t =
-    (volume t) > 0 ==>
-      c t 2 1 0 0 ~= (term1 - term2 + term3 - term4)
-        where
-          term1 = (1/3)*(p t 0 3 0 0)
-          term2 = (5/6)*(p t 3 0 0 0)
-          term3 = 3*(p t 2 1 0 0)
-          term4 = (3/2)*(p t 1 2 0 0)
-
--- | Given in Sorokina and Zeilfelder, p. 78.
-prop_c1110_identity :: Tetrahedron -> Property
-prop_c1110_identity t =
-    (volume t) > 0 ==>
-       c t 1 1 1 0 ~= (term1 + term2 - term3 - term4)
-        where
-          term1 = (1/3)*((p t 3 0 0 0) + (p t 0 3 0 0) + (p t 0 0 3 0))
-          term2 = (9/2)*(p t 1 1 1 0)
-          term3 = (3/4)*((p t 2 1 0 0) + (p t 1 2 0 0) + (p t 2 0 1 0))
-          term4 = (3/4)*((p t 1 0 2 0) + (p t 0 2 1 0) + (p t 0 1 2 0))
-
-
 prop_swapping_vertices_doesnt_affect_coefficients1 :: Tetrahedron -> Bool
 prop_swapping_vertices_doesnt_affect_coefficients1 t =
       c t 0 0 1 2 == c t' 0 0 1 2
@@ -682,10 +632,57 @@ tetrahedron_tests =
 
 p78_24_properties :: Test.Framework.Test
 p78_24_properties =
-    testGroup "p. 78, Section (2.4) Properties" [
-      testProperty "c3000 identity" prop_c3000_identity,
-      testProperty "c2100 identity" prop_c2100_identity,
-      testProperty "c1110 identity" prop_c1110_identity]
+  testGroup "p. 78, Section (2.4) Properties" [
+    testProperty "c3000 identity" prop_c3000_identity,
+    testProperty "c2100 identity" prop_c2100_identity,
+    testProperty "c1110 identity" prop_c1110_identity]
+  where
+    -- | Returns the domain point of t with indices i,j,k,l.
+    domain_point :: Tetrahedron -> Int -> Int -> Int -> Int -> Point
+    domain_point t i j k l
+      | i + j + k + l == 3 = weighted_sum `scale` (1/3)
+      | otherwise = error "domain point index out of bounds"
+      where
+        v0' = (v0 t) `scale` (fromIntegral i)
+        v1' = (v1 t) `scale` (fromIntegral j)
+        v2' = (v2 t) `scale` (fromIntegral k)
+        v3' = (v3 t) `scale` (fromIntegral l)
+        weighted_sum = v0' + v1' + v2' + v3'
+
+
+    -- | Used for convenience in the next few tests.
+    p :: Tetrahedron -> Int -> Int -> Int -> Int -> Double
+    p t i j k l = (polynomial t) (domain_point t i j k l)
+
+
+    -- | Given in Sorokina and Zeilfelder, p. 78.
+    prop_c3000_identity :: Tetrahedron -> Property
+    prop_c3000_identity t =
+      (volume t) > 0 ==>
+        c t 3 0 0 0 ~= p t 3 0 0 0
+
+    -- | Given in Sorokina and Zeilfelder, p. 78.
+    prop_c2100_identity :: Tetrahedron -> Property
+    prop_c2100_identity t =
+      (volume t) > 0 ==>
+        c t 2 1 0 0 ~= (term1 - term2 + term3 - term4)
+        where
+          term1 = (1/3)*(p t 0 3 0 0)
+          term2 = (5/6)*(p t 3 0 0 0)
+          term3 = 3*(p t 2 1 0 0)
+          term4 = (3/2)*(p t 1 2 0 0)
+
+    -- | Given in Sorokina and Zeilfelder, p. 78.
+    prop_c1110_identity :: Tetrahedron -> Property
+    prop_c1110_identity t =
+      (volume t) > 0 ==>
+        c t 1 1 1 0 ~= (term1 + term2 - term3 - term4)
+        where
+          term1 = (1/3)*((p t 3 0 0 0) + (p t 0 3 0 0) + (p t 0 0 3 0))
+          term2 = (9/2)*(p t 1 1 1 0)
+          term3 = (3/4)*((p t 2 1 0 0) + (p t 1 2 0 0) + (p t 2 0 1 0))
+          term4 = (3/4)*((p t 1 0 2 0) + (p t 0 2 1 0) + (p t 0 1 2 0))
+
 
 
 tetrahedron_properties :: Test.Framework.Test