diff tests/TestMathUtilities.cpp @ 135:0fdbb93e92b7

Factorial: return double (int not big enough for many popular values)
author Chris Cannam
date Wed, 16 Oct 2013 16:44:14 +0100
parents 5351b5e9ad9f
children 26daede606a8
line wrap: on
line diff
--- a/tests/TestMathUtilities.cpp	Wed Oct 16 13:29:00 2013 +0100
+++ b/tests/TestMathUtilities.cpp	Wed Oct 16 16:44:14 2013 +0100
@@ -125,12 +125,15 @@
 
 BOOST_AUTO_TEST_CASE(factorial)
 {
-    BOOST_CHECK_EQUAL(MathUtilities::factorial(-10), 0);
-    BOOST_CHECK_EQUAL(MathUtilities::factorial(0), 1);
-    BOOST_CHECK_EQUAL(MathUtilities::factorial(1), 1);
-    BOOST_CHECK_EQUAL(MathUtilities::factorial(2), 2);
-    BOOST_CHECK_EQUAL(MathUtilities::factorial(3), 6);
-    BOOST_CHECK_EQUAL(MathUtilities::factorial(4), 24);
+    BOOST_CHECK_EQUAL(MathUtilities::factorial(-10), 0.0);
+    BOOST_CHECK_EQUAL(MathUtilities::factorial(0), 1.0);
+    BOOST_CHECK_EQUAL(MathUtilities::factorial(1), 1.0);
+    BOOST_CHECK_EQUAL(MathUtilities::factorial(2), 2.0);
+    BOOST_CHECK_EQUAL(MathUtilities::factorial(3), 6.0);
+    BOOST_CHECK_EQUAL(MathUtilities::factorial(4), 24.0);
+
+    // Too big for an int, hence double return value from factorial
+    BOOST_CHECK_EQUAL(MathUtilities::factorial(20), 2432902008176640000.0);
 }
 
 BOOST_AUTO_TEST_CASE(gcd)