X-Git-Url: http://gitweb.michael.orlitzky.com/?a=blobdiff_plain;f=src%2FTests%2FTetrahedron.hs;h=0d924527e17f8cc601cc9a045a7bf7134ed54b69;hb=ec2bcae0167bcc09c30e7618a5d7601510593610;hp=3d47862bf638e69aeb8296b3ef1c946b8a44218d;hpb=dee2b5197cb2eea8ec6e234a44d2ad5b3587302e;p=spline3.git diff --git a/src/Tests/Tetrahedron.hs b/src/Tests/Tetrahedron.hs index 3d47862..0d92452 100644 --- a/src/Tests/Tetrahedron.hs +++ b/src/Tests/Tetrahedron.hs @@ -9,7 +9,6 @@ import Test.QuickCheck (Property, (==>)) import Cardinal import Comparisons import FunctionValues -import Tests.FunctionValues() import Tetrahedron import ThreeDimensional @@ -34,7 +33,8 @@ tetrahedron1_geometry_tests = v1 = p1, v2 = p2, v3 = p3, - fv = empty_values } + fv = empty_values, + precomputed_volume = 0 } volume1 :: Assertion volume1 = @@ -68,7 +68,8 @@ tetrahedron2_geometry_tests = v1 = p1, v2 = p2, v3 = p3, - fv = empty_values } + fv = empty_values, + precomputed_volume = 0 } volume1 :: Assertion volume1 = assertEqual "volume1 is correct" True (vol ~= (1/3)) @@ -82,80 +83,78 @@ tetrahedron2_geometry_tests = contained = contains_point t inner_point --- | Ensure that a tetrahedron does not contain a particular point chosen to --- be outside of it (second test). -test_doesnt_contain_point2 :: Assertion -test_doesnt_contain_point2 = - assertEqual "doesn't contain an exterior point" False contained - where - p0 = (0, 1, 1) - p1 = (1, 1, 1) - p2 = (0.5, 0.5, 1) - p3 = (0.5, 0.5, 0.5) - exterior_point = (0, 0, 0) - t = Tetrahedron { v0 = p0, - v1 = p1, - v2 = p2, - v3 = p3, - fv = empty_values } - contained = contains_point t exterior_point - - --- | Ensure that a tetrahedron does not contain a particular point chosen to --- be outside of it (third test). -test_doesnt_contain_point3 :: Assertion -test_doesnt_contain_point3 = - assertEqual "doesn't contain an exterior point" False contained - where - p0 = (1, 1, 1) - p1 = (1, 0, 1) - p2 = (0.5, 0.5, 1) - p3 = (0.5, 0.5, 0.5) - exterior_point = (0, 0, 0) - t = Tetrahedron { v0 = p0, - v1 = p1, - v2 = p2, - v3 = p3, - fv = empty_values } - contained = contains_point t exterior_point - - --- | Ensure that a tetrahedron does not contain a particular point chosen to --- be outside of it (fourth test). -test_doesnt_contain_point4 :: Assertion -test_doesnt_contain_point4 = - assertEqual "doesn't contain an exterior point" False contained - where - p0 = (1, 0, 1) - p1 = (0, 0, 1) - p2 = (0.5, 0.5, 1) - p3 = (0.5, 0.5, 0.5) - exterior_point = (0, 0, 0) - t = Tetrahedron { v0 = p0, - v1 = p1, - v2 = p2, - v3 = p3, - fv = empty_values } - contained = contains_point t exterior_point - - --- | Ensure that a tetrahedron does not contain a particular point chosen to --- be outside of it (fifth test). -test_doesnt_contain_point5 :: Assertion -test_doesnt_contain_point5 = - assertEqual "doesn't contain an exterior point" False contained - where - p0 = (0, 0, 1) - p1 = (0, 1, 1) - p2 = (0.5, 0.5, 1) - p3 = (0.5, 0.5, 0.5) - exterior_point = (0, 0, 0) - t = Tetrahedron { v0 = p0, - v1 = p1, - v2 = p2, - v3 = p3, - fv = empty_values } - contained = contains_point t exterior_point +-- | Ensure that tetrahedra do not contain a particular point chosen to +-- be outside of them. +containment_tests :: Test.Framework.Test +containment_tests = + testGroup "containment tests" + [ testCase "doesn't contain point2" doesnt_contain_point2, + testCase "doesn't contain point3" doesnt_contain_point3, + testCase "doesn't contain point4" doesnt_contain_point4, + testCase "doesn't contain point5" doesnt_contain_point5] + where + p2 = (0.5, 0.5, 1) + p3 = (0.5, 0.5, 0.5) + exterior_point = (0, 0, 0) + + doesnt_contain_point2 :: Assertion + doesnt_contain_point2 = + assertEqual "doesn't contain an exterior point" False contained + where + p0 = (0, 1, 1) + p1 = (1, 1, 1) + t = Tetrahedron { v0 = p0, + v1 = p1, + v2 = p2, + v3 = p3, + fv = empty_values, + precomputed_volume = 0 } + contained = contains_point t exterior_point + + + doesnt_contain_point3 :: Assertion + doesnt_contain_point3 = + assertEqual "doesn't contain an exterior point" False contained + where + p0 = (1, 1, 1) + p1 = (1, 0, 1) + t = Tetrahedron { v0 = p0, + v1 = p1, + v2 = p2, + v3 = p3, + fv = empty_values, + precomputed_volume = 0 } + contained = contains_point t exterior_point + + + doesnt_contain_point4 :: Assertion + doesnt_contain_point4 = + assertEqual "doesn't contain an exterior point" False contained + where + p0 = (1, 0, 1) + p1 = (0, 0, 1) + t = Tetrahedron { v0 = p0, + v1 = p1, + v2 = p2, + v3 = p3, + fv = empty_values, + precomputed_volume = 0 } + contained = contains_point t exterior_point + + + doesnt_contain_point5 :: Assertion + doesnt_contain_point5 = + assertEqual "doesn't contain an exterior point" False contained + where + p0 = (0, 0, 1) + p1 = (0, 1, 1) + t = Tetrahedron { v0 = p0, + v1 = p1, + v2 = p2, + v3 = p3, + fv = empty_values, + precomputed_volume = 0 } + contained = contains_point t exterior_point -- | The barycentric coordinate of v0 with respect to itself should @@ -287,62 +286,6 @@ prop_c1110_identity t = 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_x_rotation_doesnt_affect_front :: Tetrahedron -> Bool -prop_x_rotation_doesnt_affect_front t = - expr1 == expr2 - where - fv0 = Tetrahedron.fv t - fv1 = rotate cwx (Tetrahedron.fv t) - expr1 = front fv0 - expr2 = front fv1 - -prop_x_rotation_doesnt_affect_back :: Tetrahedron -> Bool -prop_x_rotation_doesnt_affect_back t = - expr1 == expr2 - where - fv0 = Tetrahedron.fv t - fv1 = rotate cwx (Tetrahedron.fv t) - expr1 = back fv0 - expr2 = back fv1 - - -prop_y_rotation_doesnt_affect_left :: Tetrahedron -> Bool -prop_y_rotation_doesnt_affect_left t = - expr1 == expr2 - where - fv0 = Tetrahedron.fv t - fv1 = rotate cwy (Tetrahedron.fv t) - expr1 = left fv0 - expr2 = left fv1 - -prop_y_rotation_doesnt_affect_right :: Tetrahedron -> Bool -prop_y_rotation_doesnt_affect_right t = - expr1 == expr2 - where - fv0 = Tetrahedron.fv t - fv1 = rotate cwy (Tetrahedron.fv t) - expr1 = right fv0 - expr2 = right fv1 - - -prop_z_rotation_doesnt_affect_down :: Tetrahedron -> Bool -prop_z_rotation_doesnt_affect_down t = - expr1 == expr2 - where - fv0 = Tetrahedron.fv t - fv1 = rotate cwz (Tetrahedron.fv t) - expr1 = down fv0 - expr2 = down fv1 - - -prop_z_rotation_doesnt_affect_top :: Tetrahedron -> Bool -prop_z_rotation_doesnt_affect_top t = - expr1 == expr2 - where - fv0 = Tetrahedron.fv t - fv1 = rotate cwz (Tetrahedron.fv t) - expr1 = top fv0 - expr2 = top fv1 prop_swapping_vertices_doesnt_affect_coefficients1 :: Tetrahedron -> Bool prop_swapping_vertices_doesnt_affect_coefficients1 t =