aboutsummaryrefslogtreecommitdiffstats
path: root/libraries/spongycastle/core/src/test/j2me/java/math/test/BigIntegerTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'libraries/spongycastle/core/src/test/j2me/java/math/test/BigIntegerTest.java')
-rw-r--r--libraries/spongycastle/core/src/test/j2me/java/math/test/BigIntegerTest.java461
1 files changed, 0 insertions, 461 deletions
diff --git a/libraries/spongycastle/core/src/test/j2me/java/math/test/BigIntegerTest.java b/libraries/spongycastle/core/src/test/j2me/java/math/test/BigIntegerTest.java
deleted file mode 100644
index 235d695ad..000000000
--- a/libraries/spongycastle/core/src/test/j2me/java/math/test/BigIntegerTest.java
+++ /dev/null
@@ -1,461 +0,0 @@
-package java.math.test;
-
-import java.math.BigInteger;
-import java.security.SecureRandom;
-import org.spongycastle.util.test.*;
-
-public class BigIntegerTest
- extends SimpleTest
-{
- private static BigInteger VALUE1 = new BigInteger("1234");
- private static BigInteger VALUE2 = new BigInteger("1234567890");
- private static BigInteger VALUE3 = new BigInteger("12345678901234567890123");
-
- private static BigInteger zero = BigInteger.ZERO;
- private static BigInteger one = BigInteger.ONE;
- private static BigInteger two = BigInteger.valueOf(2);
-
- public String getName()
- {
- return "BigInteger";
- }
-
- private void clearBitTest()
- {
- BigInteger value = VALUE1.clearBit(3);
- BigInteger result = new BigInteger("1234");
-
- if (!value.equals(result))
- {
- fail("clearBit - expected: " + result + " got: " + value);
- }
-
- value = VALUE2.clearBit(3);
- result = new BigInteger("1234567890");
-
- if (!value.equals(result))
- {
- fail("clearBit - expected: " + result + " got: " + value);
- }
-
- value = VALUE3.clearBit(3);
- result = new BigInteger("12345678901234567890115");
-
- if (!value.equals(result))
- {
- fail("clearBit - expected: " + result + " got: " + value);
- }
-
- value = VALUE2.clearBit(55);
- result = new BigInteger("1234567890");
-
- if (!value.equals(result))
- {
- fail("clearBit - expected: " + result + " got: " + value);
- }
-
- value = VALUE3.clearBit(55);
- result = new BigInteger("12345642872437548926155");
-
- if (!value.equals(result))
- {
- fail("clearBit - expected: " + result + " got: " + value);
- }
- }
-
- private void flipBitTest()
- {
- BigInteger value = VALUE1.flipBit(3);
- BigInteger result = new BigInteger("1242");
-
- if (!value.equals(result))
- {
- fail("flipBit - expected: " + result + " got: " + value);
- }
-
- value = VALUE2.flipBit(3);
- result = new BigInteger("1234567898");
-
- if (!value.equals(result))
- {
- fail("flipBit - expected: " + result + " got: " + value);
- }
-
- value = VALUE3.flipBit(3);
- result = new BigInteger("12345678901234567890115");
-
- if (!value.equals(result))
- {
- fail("flipBit - expected: " + result + " got: " + value);
- }
-
- value = VALUE2.flipBit(55);
- result = new BigInteger("36028798253531858");
-
- if (!value.equals(result))
- {
- fail("flipBit - expected: " + result + " got: " + value);
- }
-
- value = VALUE3.flipBit(55);
- result = new BigInteger("12345642872437548926155");
-
- if (!value.equals(result))
- {
- fail("flipBit - expected: " + result + " got: " + value);
- }
- }
-
- private void setBitTest()
- {
- BigInteger value = VALUE1.setBit(3);
- BigInteger result = new BigInteger("1242");
-
- if (!value.equals(result))
- {
- fail("setBit - expected: " + result + " got: " + value);
- }
-
- value = VALUE2.setBit(3);
- result = new BigInteger("1234567898");
-
- if (!value.equals(result))
- {
- fail("setBit - expected: " + result + " got: " + value);
- }
-
- value = VALUE3.setBit(3);
- result = new BigInteger("12345678901234567890123");
-
- if (!value.equals(result))
- {
- fail("setBit - expected: " + result + " got: " + value);
- }
-
- value = VALUE2.setBit(55);
- result = new BigInteger("36028798253531858");
-
- if (!value.equals(result))
- {
- fail("setBit - expected: " + result + " got: " + value);
- }
-
- value = VALUE3.setBit(55);
- result = new BigInteger("12345678901234567890123");
-
- if (!value.equals(result))
- {
- fail("setBit - expected: " + result + " got: " + value);
- }
- }
-
- private void testDivideAndRemainder()
- {
- SecureRandom random = new SecureRandom();
-
- BigInteger n = new BigInteger(48, random);
- BigInteger[] qr = n.divideAndRemainder(n);
- if (!qr[0].equals(one) || !qr[1].equals(zero))
- {
- fail("testDivideAndRemainder - expected: 1/0 got: " + qr[0] + "/" + qr[1]);
- }
- qr = n.divideAndRemainder(one);
- if (!qr[0].equals(n) || !qr[1].equals(zero))
- {
- fail("testDivideAndRemainder - expected: " + n + "/0 got: " + qr[0] + "/" + qr[1]);
- }
-
- for (int rep = 0; rep < 10; ++rep)
- {
- BigInteger a = new BigInteger(100 - rep, 0, random);
- BigInteger b = new BigInteger(100 + rep, 0, random);
- BigInteger c = new BigInteger(10 + rep, 0, random);
- BigInteger d = a.multiply(b).add(c);
- BigInteger[] es = d.divideAndRemainder(a);
-
- if (!es[0].equals(b) || !es[1].equals(c))
- {
- fail("testDivideAndRemainder - expected: " + b + "/" + c + " got: " + qr[0] + "/" + qr[1]);
- }
- }
- }
-
- private void testModInverse()
- {
- SecureRandom random = new SecureRandom();
-
- for (int i = 0; i < 10; ++i)
- {
- BigInteger p = BigInteger.probablePrime(64, random);
- BigInteger q = new BigInteger(63, random).add(one);
- BigInteger inv = q.modInverse(p);
- BigInteger inv2 = inv.modInverse(p);
-
- if (!q.equals(inv2))
- {
- fail("testModInverse failed symmetry test");
- }
- BigInteger check = q.multiply(inv).mod(p);
- if (!one.equals(check))
- {
- fail("testModInverse - expected: 1 got: " + check);
- }
- }
-
- // ModInverse for powers of 2
- for (int i = 1; i <= 128; ++i)
- {
- BigInteger m = one.shiftLeft(i);
- BigInteger d = new BigInteger(i, random).setBit(0);
- BigInteger x = d.modInverse(m);
- BigInteger check = x.multiply(d).mod(m);
- if (!one.equals(check))
- {
- fail("testModInverse - expected: 1 got: " + check);
- }
- }
- }
-
- private void testNegate()
- {
- if (!zero.equals(zero.negate()))
- {
- fail("zero - negate falied");
- }
- if (!one.equals(one.negate().negate()))
- {
- fail("one - negate falied");
- }
- if (!two.equals(two.negate().negate()))
- {
- fail("two - negate falied");
- }
- }
-
- private void testNot()
- {
- for (int i = -10; i <= 10; ++i)
- {
- if(!BigInteger.valueOf(~i).equals(
- BigInteger.valueOf(i).not()))
- {
- fail("Problem: ~" + i + " should be " + ~i);
- }
- }
- }
-
- private void testOr()
- {
- for (int i = -10; i <= 10; ++i)
- {
- for (int j = -10; j <= 10; ++j)
- {
- if (!BigInteger.valueOf(i | j).equals(
- BigInteger.valueOf(i).or(BigInteger.valueOf(j))))
- {
- fail("Problem: " + i + " OR " + j + " should be " + (i | j));
- }
- }
- }
- }
-
- public void testPow()
- {
- if (!one.equals(zero.pow(0)))
- {
- fail("one pow equals failed");
- }
- if (!zero.equals(zero.pow(123)))
- {
- fail("zero pow equals failed");
- }
- if (!one.equals(one.pow(0)))
- {
- fail("one one equals failed");
- }
- if (!one.equals(one.pow(123)))
- {
- fail("1 123 equals failed");
- }
-
- if (!two.pow(147).equals(one.shiftLeft(147)))
- {
- fail("2 pow failed");
- }
- if (!one.shiftLeft(7).pow(11).equals(one.shiftLeft(77)))
- {
- fail("pow 2 pow failed");
- }
-
- BigInteger n = new BigInteger("1234567890987654321");
- BigInteger result = one;
-
- for (int i = 0; i < 10; ++i)
- {
- try
- {
- BigInteger.valueOf(i).pow(-1);
- fail("expected ArithmeticException");
- }
- catch (ArithmeticException e) {}
-
- if (!result.equals(n.pow(i)))
- {
- fail("mod pow equals failed");
- }
-
- result = result.multiply(n);
- }
- }
-
- public void testToString()
- {
- SecureRandom random = new SecureRandom();
- int trials = 256;
-
- BigInteger[] tests = new BigInteger[trials];
- for (int i = 0; i < trials; ++i)
- {
- int len = random.nextInt(i + 1);
- tests[i] = new BigInteger(len, random);
- }
-
- for (int radix = Character.MIN_RADIX; radix <= Character.MAX_RADIX; ++radix)
- {
- for (int i = 0; i < trials; ++i)
- {
- BigInteger n1 = tests[i];
- String s = n1.toString(radix);
- BigInteger n2 = new BigInteger(s, radix);
- if (!n1.equals(n2))
- {
- fail("testToStringRadix - radix:" + radix + ", n1:" + n1.toString(16) + ", n2:" + n2.toString(16));
- }
- }
- }
- }
-
- private void xorTest()
- {
- BigInteger value = VALUE1.xor(VALUE2);
- BigInteger result = new BigInteger("1234568704");
-
- if (!value.equals(result))
- {
- fail("xor - expected: " + result + " got: " + value);
- }
-
- value = VALUE1.xor(VALUE3);
- result = new BigInteger("12345678901234567888921");
-
- if (!value.equals(result))
- {
- fail("xor - expected: " + result + " got: " + value);
- }
-
- value = VALUE3.xor(VALUE1);
- result = new BigInteger("12345678901234567888921");
-
- if (!value.equals(result))
- {
- fail("xor - expected: " + result + " got: " + value);
- }
-
- value = VALUE2.xor(new BigInteger("-1"));
- result = new BigInteger("-1234567891");
-
- if (!value.equals(result))
- {
- fail("xor - expected: " + result + " got: " + value);
- }
-
- value = VALUE3.xor(VALUE3);
- result = new BigInteger("0");
-
- if (!value.equals(result))
- {
- fail("xor - expected: " + result + " got: " + value);
- }
- }
-
- public void performTest()
- {
- clearBitTest();
-
- flipBitTest();
-
- setBitTest();
-
- testDivideAndRemainder();
- testModInverse();
- testNegate();
- testNot();
- testOr();
- testPow();
- testToString();
-
- xorTest();
-
- BigInteger n1, n2, r1;
-
- // test division where the difference in bit length of the dividend and divisor is 32 bits
- n1 = new BigInteger("54975581388");
- n2 = new BigInteger("10");
- r1 = n1.divide(n2);
- if (!r1.toString(10).equals("5497558138"))
- {
- fail("BigInteger: failed Divide Test");
- }
-
- // two's complement test
- byte[] zeroBytes = BigInteger.ZERO.toByteArray();
- byte[] oneBytes = BigInteger.ONE.toByteArray();
- byte[] minusOneBytes = BigInteger.ONE.negate().toByteArray();
-
- BigInteger zero = new BigInteger(zeroBytes);
- if (!zero.equals(BigInteger.ZERO))
- {
- fail("Failed constructing zero");
- }
-
- BigInteger one = new BigInteger(oneBytes);
- if (!one.equals(BigInteger.ONE))
- {
- fail("Failed constructing one");
- }
-
- BigInteger minusOne = new BigInteger(minusOneBytes);
- if (!minusOne.equals(BigInteger.ONE.negate()))
- {
- fail("Failed constructing minus one");
- }
-
- SecureRandom random = new SecureRandom();
- byte[] randomBytes = new byte[100];
- for (int i=0; i < 100; i++)
- {
- random.nextBytes(randomBytes);
- BigInteger bcInt = new BigInteger(randomBytes);
- BigInteger bcInt2 = new BigInteger(bcInt.toByteArray());
- if (!bcInt.equals(bcInt2))
- {
- fail("Failed constructing random value " + i);
- }
-
-// java.math.BigInteger jdkInt = new java.math.BigInteger(randomBytes);
-// byte[] bcBytes = bcInt.toByteArray();
-// byte[] jdkBytes = jdkInt.toByteArray();
-// if (!arrayEquals(bcBytes, jdkBytes))
-// {
-// fail(""Failed constructing random value " + i);
-// }
- }
- }
-
- public static void main(
- String[] args)
- {
- runTest(new BigIntegerTest());
- }
-}
-