Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9ad6f6d9 authored by Hans Boehm's avatar Hans Boehm
Browse files

Fix factorial(0)

Bug: 24575798

Make factorial(0) return 1, as intended.
Add a few factorial tests.
Fix targetPackage spec so test is actually runnable again.

Change-Id: Ibb8d827f0325999c6b5ed49a939e1532ddf55639
(cherry picked from commit 69515918)
parent 51fc9bdd
Loading
Loading
Loading
Loading
+3 −0
Original line number Diff line number Diff line
@@ -468,6 +468,9 @@ public class BoundedRational {
            }
            return prod1.multiply(prod2);
        } else {
            if (n == 0) {
                return BigInteger.ONE;
            }
            BigInteger res = BigInteger.valueOf(n);
            for (long i = n - step; i > 1; i -= step) {
                res = res.multiply(BigInteger.valueOf(i));
+1 −1
Original line number Diff line number Diff line
@@ -21,7 +21,7 @@

    <instrumentation
        android:name="android.test.InstrumentationTestRunner"
        android:targetPackage="com.android.exactcalculator"
        android:targetPackage="com.android.calculator2"
        android:label="BoundedRational and Calculator Functional Test" />

    <application>
+1 −1
Original line number Diff line number Diff line
@@ -4,7 +4,7 @@ Run on Android with
2) Install the calculator with
adb install <tree root>/out/target/product/generic/data/app/ExactCalculator/ExactCalculator.apk
3) adb install <tree root>/out/target/product/generic/data/app/ExactCalculatorTests/ExactCalculatorTests.apk
4) adb shell am instrument -w com.android.exactcalculator.tests/android.test.InstrumentationTestRunner
4) adb shell am instrument -w com.android.calculator2.tests/android.test.InstrumentationTestRunner

There are two kinds of tests:

+4 −0
Original line number Diff line number Diff line
@@ -145,6 +145,10 @@ public class BRTest extends TestCase {
                "digitsRequired(-1/2)");
        check(BoundedRational.digitsRequired(new BoundedRational(1,-2)) == 1,
                "digitsRequired(1/-2)");
        check(BoundedRational.fact(BoundedRational.ZERO).equals(BoundedRational.ONE), "0!");
        check(BoundedRational.fact(BoundedRational.ONE).equals(BoundedRational.ONE), "1!");
        check(BoundedRational.fact(BoundedRational.TWO).equals(BoundedRational.TWO), "2!");
        check(BoundedRational.fact(BR_15).equals(new BoundedRational(1307674368000L)), "15!");
        // We check values that include all interesting degree values.
        BoundedRational r = BR_M390;
        while (!r.equals(BR_390)) {