]> gitweb.michael.orlitzky.com - spline3.git/blobdiff - test/TestSuite.hs
Whitespace cleanup in Everything.hs.
[spline3.git] / test / TestSuite.hs
index abe2275b7ea87c8ec14c3c841f8865629a3ffeed..bac18ec2365b27038a9a55428d0160b5070009d0 100644 (file)
-module TestSuite
+module Main
 where
 
 where
 
-import Test.Framework (defaultMain, testGroup, Test, TestName, TestOptions(..))
+import Data.Monoid (mempty)
+import Test.Framework (
+  RunnerOptions(),
+  Test,
+  TestName,
+  TestOptions(),
+  defaultMainWithOpts,
+  testGroup
+  )
+import Test.Framework.Options
+import Test.Framework.Runners.Options
 import Test.Framework.Providers.API (TestName)
 import Test.Framework.Providers.HUnit (testCase)
 import Test.Framework.Providers.QuickCheck2 (testProperty)
 import Test.HUnit
 import Test.QuickCheck (Testable ())
 
 import Test.Framework.Providers.API (TestName)
 import Test.Framework.Providers.HUnit (testCase)
 import Test.Framework.Providers.QuickCheck2 (testProperty)
 import Test.HUnit
 import Test.QuickCheck (Testable ())
 
-import Tests.Cardinal
-import Tests.Cube as TC
-import Tests.FunctionValues
-import Tests.Grid
-import Tests.Misc
-import Tests.Tetrahedron as TT
+import Cardinal (cardinal_tests, cardinal_properties)
+import Cube (cube_properties)
+import FunctionValues (function_values_tests, function_values_properties)
+import Grid (grid_tests, slow_tests)
+import Misc (misc_tests, misc_properties)
+import Tetrahedron (tetrahedron_tests, tetrahedron_properties)
 
 main :: IO ()
 
 main :: IO ()
-main = defaultMain tests
+main = do
+  let empty_test_opts = mempty :: TestOptions
+  let my_test_opts = empty_test_opts {
+    topt_maximum_generated_tests = Just 500
+  }
 
 
--- | Defined so that my test names fit on one line.
-tc :: Test.Framework.Providers.API.TestName -> Test.HUnit.Assertion -> Test.Framework.Test
-tc = testCase
+  let empty_runner_opts = mempty :: RunnerOptions
+  let my_runner_opts = empty_runner_opts {
+    ropt_test_options = Just my_test_opts
+  }
 
 
-cardinal_tests :: Test.Framework.Test
-cardinal_tests =
-    testGroup "Cardinal Tests" [
-      tc "c-tilde_2100 rotation correct" test_c_tilde_2100_rotation_correct ]
+  defaultMainWithOpts tests my_runner_opts
 
 
-function_values_tests :: Test.Framework.Test
-function_values_tests =
-    testGroup "FunctionValues Tests" [ tc "test directions" test_directions ]
 
 
-grid_tests :: Test.Framework.Test
-grid_tests =
-    testGroup "Grid Tests" [
-      tc "trilinear c0030" test_trilinear_c0030,
-      tc "trilinear c0003" test_trilinear_c0003,
-      tc "trilinear c0021" test_trilinear_c0021,
-      tc "trilinear c0012" test_trilinear_c0012,
-      tc "trilinear c0120" test_trilinear_c0120,
-      tc "trilinear c0102" test_trilinear_c0102,
-      tc "trilinear c0111" test_trilinear_c0111,
-      tc "trilinear c0210" test_trilinear_c0210,
-      tc "trilinear c0201" test_trilinear_c0201,
-      tc "trilinear c0300" test_trilinear_c0300,
-      tc "trilinear c1020" test_trilinear_c1020,
-      tc "trilinear c1002" test_trilinear_c1002,
-      tc "trilinear c1011" test_trilinear_c1011,
-      tc "trilinear c1110" test_trilinear_c1110,
-      tc "trilinear c1101" test_trilinear_c1101,
-      tc "trilinear c1200" test_trilinear_c1200,
-      tc "trilinear c2010" test_trilinear_c2010,
-      tc "trilinear c2001" test_trilinear_c2001,
-      tc "trilinear c2100" test_trilinear_c2100,
-      tc "trilinear c3000" test_trilinear_c3000,
-      tc "trilinear f0_t0_v0" test_trilinear_f0_t0_v0,
-      tc "trilinear f0_t0_v1" test_trilinear_f0_t0_v1,
-      tc "trilinear f0_t0_v2" test_trilinear_f0_t0_v2,
-      tc "trilinear f0_t0_v3" test_trilinear_f0_t0_v3,
-      tc "trilinear reproduced" test_trilinear_reproduced,
-      tc "zeros reproduced" test_zeros_reproduced ]
-
-
-misc_tests :: Test.Framework.Test
-misc_tests =
-    testGroup "Misc Tests" [
-      tc "flatten (1)" test_flatten1 ]
-
-tetrahedron_tests :: Test.Framework.Test
-tetrahedron_tests =
-    testGroup "Tetrahedron Tests" [
-      tc "volume (1)" test_volume1,
-      tc "volume (2)" test_volume2,
-      tc "contains point (1)" test_contains_point1,
-      tc "doesn't contain point (1)" test_doesnt_contain_point1,
-      tc "doesn't contain point (2)" test_doesnt_contain_point2,
-      tc "doesn't contain point (3)" test_doesnt_contain_point3,
-      tc "doesn't contain point (4)" test_doesnt_contain_point4,
-      tc "doesn't contain point (5)" test_doesnt_contain_point5 ]
-
--- | Defined so that my test names fit on one line.
-tp :: Test.QuickCheck.Testable a => Test.Framework.TestName -> a -> Test.Framework.Test
-tp = testProperty
-
-misc_properties :: Test.Framework.Test
-misc_properties =
-    testGroup "Misc Properties" [
-      tp "factorial greater" prop_factorial_greater ]
-
-cardinal_properties :: Test.Framework.Test
-cardinal_properties =
-    testGroup "Cardinal Properties" [
-      tp "ccwx rotation changes direction" prop_ccwx_rotation_changes_direction,
-      tp "cwx rotation changes direction" prop_cwx_rotation_changes_direction,
-      tp "ccwy rotation changes direction" prop_ccwy_rotation_changes_direction,
-      tp "cwy rotation changes direction" prop_cwy_rotation_changes_direction,
-      tp "ccwz rotation changes direction" prop_ccwz_rotation_changes_direction,
-      tp "cwz rotation changes direction" prop_cwz_rotation_changes_direction,
-      tp "ccwx rotation result unique" prop_ccwx_rotation_result_unique,
-      tp "cwx rotation result unique" prop_cwx_rotation_result_unique,
-      tp "ccwy rotation result unique" prop_ccwy_rotation_result_unique,
-      tp "cwy rotation result unique" prop_cwy_rotation_result_unique,
-      tp "ccwz rotation result unique" prop_ccwz_rotation_result_unique,
-      tp "cwz rotation result unique" prop_cwz_rotation_result_unique,
-      tp "four cwx is identity" prop_four_cwx_is_identity,
-      tp "four ccwx is identity" prop_four_ccwx_is_identity,
-      tp "four cwy is identity" prop_four_cwy_is_identity,
-      tp "four ccwy is identity" prop_four_ccwy_is_identity,
-      tp "four cwz is identity" prop_four_cwz_is_identity,
-      tp "four ccwz is identity" prop_four_ccwz_is_identity]
-
-
-p78_24_properties :: Test.Framework.Test
-p78_24_properties =
-    testGroup "p. 78, Section (2.4) Properties" [
-      tp "c3000 identity" TT.prop_c3000_identity,
-      tp "c2100 identity" TT.prop_c2100_identity,
-      tp "c1110 _identity" TT.prop_c1110_identity]
-
-p78_25_properties :: Test.Framework.Test
-p78_25_properties =
-    testGroup "p. 78, Section (2.5) Properties" [
-      tp "c_ijk1 identity" prop_cijk1_identity ]
-
-edge_incidence_tests :: Test.Framework.Test
-edge_incidence_tests =
-    testGroup "Edge Incidence Tests" [
-      tp "t0 shares edge with t6" prop_t0_shares_edge_with_t6,
-      tp "t0 shares edge with t1" prop_t0_shares_edge_with_t1,
-      tp "t0 shares edge with t3" prop_t0_shares_edge_with_t3,
-      tp "t1 shares edge with t2" prop_t1_shares_edge_with_t2,
-      tp "t1 shares edge with t19" prop_t1_shares_edge_with_t19,
-      tp "t2 shares edge with t3" prop_t2_shares_edge_with_t3,
-      tp "t2 shares edge with t12" prop_t2_shares_edge_with_t12,
-      tp "t3 shares edge with t21" prop_t3_shares_edge_with_t21,
-      tp "t4 shares edge with t5" prop_t4_shares_edge_with_t5,
-      tp "t4 shares edge with t7" prop_t4_shares_edge_with_t7,
-      tp "t4 shares edge with t10" prop_t4_shares_edge_with_t10,
-      tp "t5 shares edge with t6" prop_t5_shares_edge_with_t6,
-      tp "t5 shares edge with t16" prop_t5_shares_edge_with_t16,
-      tp "t6 shares edge with t7" prop_t6_shares_edge_with_t7,
-      tp "t7 shares edge with t20" prop_t7_shares_edge_with_t20 ]
-
-
-p79_26_properties :: Test.Framework.Test
-p79_26_properties =
-    testGroup "p. 79, Section (2.6) Properties" [
-      tp "c0120 identity1" TC.prop_c0120_identity1,
-      tp "c0120 identity2" TC.prop_c0120_identity2,
-      tp "c0120 identity3" TC.prop_c0120_identity3,
---
--- These repeats of the previous test are failing at the moment.
---
---      tp "c0120 identity4" TC.prop_c0120_identity4,
---      tp "c0120 identity5" TC.prop_c0120_identity5,
---      tp "c0120 identity6" TC.prop_c0120_identity6,
-      tp "c0210 identity1" TC.prop_c0210_identity1,
-      tp "c0300 identity1" TC.prop_c0300_identity1,
-      tp "c1110 identity" TC.prop_c1110_identity,
-      tp "c1200 identity1" TC.prop_c1200_identity1,
-      tp "c2100 identity1" TC.prop_c2100_identity1]
-
-p79_27_properties :: Test.Framework.Test
-p79_27_properties =
-    testGroup "p. 79, Section (2.7) Properties" [
-      tp "c0102 identity1" TC.prop_c0102_identity1,
-      tp "c0201 identity1" TC.prop_c0201_identity1,
-      tp "c0300 identity2" TC.prop_c0300_identity2,
-      tp "c1101 identity" TC.prop_c1101_identity,
-      tp "c1200 identity2" TC.prop_c1200_identity2,
-      tp "c2100 identity2" TC.prop_c2100_identity2 ]
-
-
-p79_28_properties :: Test.Framework.Test
-p79_28_properties =
-    testGroup "p. 79, Section (2.8) Properties" [
-      tp "c3000 identity" TC.prop_c3000_identity,
-      tp "c2010 identity" TC.prop_c2010_identity,
-      tp "c2001 identity" TC.prop_c2001_identity,
-      tp "c1020 identity" TC.prop_c1020_identity,
-      tp "c1002 identity" TC.prop_c1002_identity,
-      tp "c1011 identity" TC.prop_c1011_identity ]
-
-
-cube_properties :: Test.Framework.Test
-cube_properties =
-    testGroup "Cube Properties" [
-  tp "all volumes positive" prop_all_volumes_positive,
-  tp "tetrahedron0 volumes exact" prop_tetrahedron0_volumes_exact,  
-  tp "tetrahedron1 volumes exact" prop_tetrahedron1_volumes_exact,
-  tp "tetrahedron2 volumes exact" prop_tetrahedron2_volumes_exact,
-  tp "tetrahedron3 volumes exact" prop_tetrahedron3_volumes_exact,
-  tp "tetrahedron4 volumes exact" prop_tetrahedron4_volumes_exact,
-  tp "tetrahedron5 volumes exact" prop_tetrahedron5_volumes_exact,
-  tp "tetrahedron6 volumes exact" prop_tetrahedron6_volumes_exact,
-  tp "tetrahedron7 volumes exact" prop_tetrahedron7_volumes_exact,
-  tp "tetrahedron8 volumes exact" prop_tetrahedron8_volumes_exact,
-  tp "tetrahedron9 volumes exact" prop_tetrahedron9_volumes_exact,
-  tp "tetrahedron10 volumes exact" prop_tetrahedron10_volumes_exact,
-  tp "tetrahedron11 volumes exact" prop_tetrahedron11_volumes_exact,
-  tp "tetrahedron12 volumes exact" prop_tetrahedron12_volumes_exact,
-  tp "tetrahedron13 volumes exact" prop_tetrahedron13_volumes_exact,
-  tp "tetrahedron14 volumes exact" prop_tetrahedron14_volumes_exact,
-  tp "tetrahedron15 volumes exact" prop_tetrahedron15_volumes_exact,
-  tp "tetrahedron16 volumes exact" prop_tetrahedron16_volumes_exact,
-  tp "tetrahedron17 volumes exact" prop_tetrahedron17_volumes_exact,
-  tp "tetrahedron18 volumes exact" prop_tetrahedron18_volumes_exact,
-  tp "tetrahedron19 volumes exact" prop_tetrahedron19_volumes_exact,
-  tp "tetrahedron20 volumes exact" prop_tetrahedron20_volumes_exact,
-  tp "tetrahedron21 volumes exact" prop_tetrahedron21_volumes_exact,
-  tp "tetrahedron22 volumes exact" prop_tetrahedron22_volumes_exact,
-  tp "tetrahedron23 volumes exact" prop_tetrahedron23_volumes_exact,
-  tp "tetrahedron0 volumes positive" prop_tetrahedron0_volumes_positive,
-  tp "tetrahedron1 volumes positive" prop_tetrahedron1_volumes_positive,
-  tp "tetrahedron2 volumes positive" prop_tetrahedron2_volumes_positive,
-  tp "tetrahedron3 volumes positive" prop_tetrahedron3_volumes_positive,
-  tp "tetrahedron4 volumes positive" prop_tetrahedron4_volumes_positive,
-  tp "tetrahedron5 volumes positive" prop_tetrahedron5_volumes_positive,
-  tp "tetrahedron6 volumes positive" prop_tetrahedron6_volumes_positive,
-  tp "tetrahedron7 volumes positive" prop_tetrahedron7_volumes_positive,
-  tp "tetrahedron8 volumes positive" prop_tetrahedron8_volumes_positive,
-  tp "tetrahedron9 volumes positive" prop_tetrahedron9_volumes_positive,
-  tp "tetrahedron10 volumes positive" prop_tetrahedron10_volumes_positive,
-  tp "tetrahedron11 volumes positive" prop_tetrahedron11_volumes_positive,
-  tp "tetrahedron12 volumes positive" prop_tetrahedron12_volumes_positive,
-  tp "tetrahedron13 volumes positive" prop_tetrahedron13_volumes_positive,
-  tp "tetrahedron14 volumes positive" prop_tetrahedron14_volumes_positive,
-  tp "tetrahedron15 volumes positive" prop_tetrahedron15_volumes_positive,
-  tp "tetrahedron16 volumes positive" prop_tetrahedron16_volumes_positive,
-  tp "tetrahedron17 volumes positive" prop_tetrahedron17_volumes_positive,
-  tp "tetrahedron18 volumes positive" prop_tetrahedron18_volumes_positive,
-  tp "tetrahedron19 volumes positive" prop_tetrahedron19_volumes_positive,
-  tp "tetrahedron20 volumes positive" prop_tetrahedron20_volumes_positive,
-  tp "tetrahedron21 volumes positive" prop_tetrahedron21_volumes_positive,
-  tp "tetrahedron22 volumes positive" prop_tetrahedron22_volumes_positive,
-  tp "tetrahedron23 volumes positive" prop_tetrahedron23_volumes_positive,
-  tp "v0 all equal" prop_v0_all_equal,
-  tp "interior values all identical" prop_interior_values_all_identical,
-  tp "c-tilde_2100 rotation correct" prop_c_tilde_2100_rotation_correct,
-  tp "c-tilde_2100 correct" prop_c_tilde_2100_correct ]
-
-
-tetrahedron_properties :: Test.Framework.Test
-tetrahedron_properties =
-    testGroup "Tetrahedron Properties" [
-      tp "b0_v0_always_unity" prop_b0_v0_always_unity,
-      tp "b0_v1_always_zero" prop_b0_v1_always_zero,
-      tp "b0_v2_always_zero" prop_b0_v2_always_zero,
-      tp "b0_v3_always_zero" prop_b0_v3_always_zero,
-      tp "b1_v1_always_unity" prop_b1_v1_always_unity,
-      tp "b1_v0_always_zero" prop_b1_v0_always_zero,
-      tp "b1_v2_always_zero" prop_b1_v2_always_zero,
-      tp "b1_v3_always_zero" prop_b1_v3_always_zero,
-      tp "b2_v2_always_unity" prop_b2_v2_always_unity,
-      tp "b2_v0_always_zero" prop_b2_v0_always_zero,
-      tp "b2_v1_always_zero" prop_b2_v1_always_zero,
-      tp "b2_v3_always_zero" prop_b2_v3_always_zero,
-      tp "b3_v3_always_unity" prop_b3_v3_always_unity,
-      tp "b3_v0_always_zero" prop_b3_v0_always_zero,
-      tp "b3_v1_always_zero" prop_b3_v1_always_zero,
-      tp "b3_v2_always_zero" prop_b3_v2_always_zero,
-      tp "swapping_vertices_doesnt_affect_coefficients1"
-         $ prop_swapping_vertices_doesnt_affect_coefficients1,
-      tp "swapping_vertices_doesnt_affect_coefficients2"
-         $ prop_swapping_vertices_doesnt_affect_coefficients2,
-      tp "swapping_vertices_doesnt_affect_coefficients3"
-         $ prop_swapping_vertices_doesnt_affect_coefficients3,
-      tp "swapping_vertices_doesnt_affect_coefficients4"
-         $ prop_swapping_vertices_doesnt_affect_coefficients4,
-      tp "x rotation doesn't affect front" prop_x_rotation_doesnt_affect_front,
-      tp "x rotation doesn't affect back" prop_x_rotation_doesnt_affect_back,
-      tp "y rotation doesn't affect left" prop_y_rotation_doesnt_affect_left,
-      tp "y rotation doesn't affect right" prop_y_rotation_doesnt_affect_right,
-      tp "z rotation doesn't affect top" prop_z_rotation_doesnt_affect_top,
-      tp "z rotation doesn't affect down" prop_z_rotation_doesnt_affect_down ]
-                 
 tests :: [Test.Framework.Test]
 tests = [ cardinal_tests,
           function_values_tests,
 tests :: [Test.Framework.Test]
 tests = [ cardinal_tests,
           function_values_tests,
@@ -283,11 +48,6 @@ tests = [ cardinal_tests,
           tetrahedron_tests,
           cube_properties,
           tetrahedron_properties,
           tetrahedron_tests,
           cube_properties,
           tetrahedron_properties,
-          misc_properties,          
+          misc_properties,
           cardinal_properties,
           cardinal_properties,
-          edge_incidence_tests,
-          p78_24_properties,
---          p78_25_properties,
-          p79_26_properties,
-          p79_27_properties,
-          p79_28_properties ]
+          slow_tests ]