From 4ce9a89d8583f999290a3fc5852cd25e1c1e2e8c Mon Sep 17 00:00:00 2001 From: svtk Date: Mon, 30 Jan 2012 14:55:31 +0400 Subject: [PATCH] added extensions for BigInteger and BigDecimal --- stdlib/ktSrc/JavaMath.kt | 27 +++++++++++++++ testlib/test/MathTest.kt | 39 ++++++++++++++++++++++ testlib/test/Test.kt | 6 ++-- testlib/test/TestDslExample.kt | 2 +- testlib/test/test/collections/TestAll.java | 4 ++- 5 files changed, 73 insertions(+), 5 deletions(-) create mode 100644 stdlib/ktSrc/JavaMath.kt create mode 100644 testlib/test/MathTest.kt diff --git a/stdlib/ktSrc/JavaMath.kt b/stdlib/ktSrc/JavaMath.kt new file mode 100644 index 00000000000..726ad082f58 --- /dev/null +++ b/stdlib/ktSrc/JavaMath.kt @@ -0,0 +1,27 @@ +package std.math + +import java.math.BigInteger +import java.math.BigDecimal + +fun BigInteger.plus(other: BigInteger) = this.add(other).sure() + +fun BigInteger.minus(other: BigInteger) = this.subtract(other).sure() + +fun BigInteger.times(other: BigInteger) = this.multiply(other).sure() + +fun BigInteger.div(other: BigInteger) = this.divide(other).sure() + +fun BigInteger.minus() = this.negate().sure() + + +fun BigDecimal.plus(other: BigDecimal) = this.add(other).sure() + +fun BigDecimal.minus(other: BigDecimal) = this.subtract(other).sure() + +fun BigDecimal.times(other: BigDecimal) = this.multiply(other).sure() + +fun BigDecimal.div(other: BigDecimal) = this.divide(other).sure() + +fun BigDecimal.mod(other: BigDecimal) = this.remainder(other).sure() + +fun BigDecimal.minus() = this.negate().sure() \ No newline at end of file diff --git a/testlib/test/MathTest.kt b/testlib/test/MathTest.kt new file mode 100644 index 00000000000..93351c99eeb --- /dev/null +++ b/testlib/test/MathTest.kt @@ -0,0 +1,39 @@ +package test.collections; + +import std.math.* +import java.math.BigInteger +import java.math.BigDecimal + +import stdhack.test.* + +class MathTest : TestSupport() { + fun testBigInteger() { + val a = BigInteger("2") + val b = BigInteger("3") + + assertEquals(BigInteger("5"), a + b) + assertEquals(BigInteger("-1"), a - b) + assertEquals(BigInteger("6"), a * b) + assertEquals(BigInteger("0"), a / b) + assertEquals(BigInteger("-2"), -a) + assertEquals(BigInteger("1"), -a % b) + assertEquals(BigInteger("-2"), -a remainder b) + } + + fun testBigDecimal() { + val a = BigDecimal("2") + val b = BigDecimal("3") + + assertEquals(BigDecimal("5"), a + b) + assertEquals(BigDecimal("-1"), a - b) + assertEquals(BigDecimal("6"), a * b) + assertEquals(BigDecimal("2"), BigDecimal("4") / a) + assertEquals(BigDecimal("-2"), -a) + assertEquals(BigDecimal("-2"), -a % b) + } +} + +fun main(args: Array) { + MathTest().testBigInteger() + MathTest().testBigDecimal() +} diff --git a/testlib/test/Test.kt b/testlib/test/Test.kt index 7267920168f..b4cd6d0e0c8 100644 --- a/testlib/test/Test.kt +++ b/testlib/test/Test.kt @@ -30,11 +30,11 @@ protected class BuiltTest(name: String, val builder: TestBuilder, val test } open class TestBuilder(name: String) { - val mySuite = TestSuite(name) + val mySuite : TestSuite = TestSuite(name) - var setUp : BuiltTest.() -> Unit = {} + public var setUp : BuiltTest.() -> Unit = {} - var tearDown : BuiltTest.() -> Unit = {} + public var tearDown : BuiltTest.() -> Unit = {} fun String.minus(test: BuiltTest.() -> Unit) { mySuite.addTest(BuiltTest(this, this@TestBuilder, test)) diff --git a/testlib/test/TestDslExample.kt b/testlib/test/TestDslExample.kt index 1f94fe05e14..7ca5a3343f7 100644 --- a/testlib/test/TestDslExample.kt +++ b/testlib/test/TestDslExample.kt @@ -6,7 +6,7 @@ import stdhack.test.* import junit.framework.* import junit.textui.TestRunner -val suite = testSuite("test group") { +public val suite : TestSuite? = testSuite("test group") { var staticState = 10 setUp = { diff --git a/testlib/test/test/collections/TestAll.java b/testlib/test/test/collections/TestAll.java index 89914772443..ce55e8e6c9c 100644 --- a/testlib/test/test/collections/TestAll.java +++ b/testlib/test/test/collections/TestAll.java @@ -1,10 +1,12 @@ package test.collections; +import junit.framework.TestSuite; + /** */ public class TestAll { // public static TestSuite suite() { -// TestSuite suite = new TestSuite(StandardCollectionTest.class, CollectionTest.class, IoTest.class, ListTest.class, MapTest.class, SetTest.class, OldStdlibTest.class); +// TestSuite suite = new TestSuite(StandardCollectionTest.class, CollectionTest.class, IoTest.class, ListTest.class, MapTest.class, SetTest.class, OldStdlibTest.class, MathTest.class); // suite.addTest(testDslExample.namespace.getSuite()); // return suite; // }