blob: 396ef3f8263cd4cec7016d5ba7bb97c5f8363a10 [file] [log] [blame]
package groovy
import java.math.BigDecimal;
import java.math.BigInteger;
class BigDecimalOperationTest extends GroovyTestCase {
def x, y
void testPlus() {
x = 0.1 + 1.1
assert x instanceof BigDecimal;
assert x == 1.2
x = 3 + 2.2
assert x == 5.2
assert x instanceof BigDecimal;
x = 2.2 + 4
assert x instanceof BigDecimal;
assert x == 6.2
y = x + 1
assert y instanceof BigDecimal;
assert y == 7.2
def z = y + x + 1 + 2
assert z instanceof BigDecimal;
assert z == 16.4
}
void testMinus() {
x = 1.1-0.01
assert x == 1.09
x = 6 - 2.2
assert x == 3.8
x = 5.8 - 2
assert x == 3.8
y = x - 1
assert y == 2.8
}
void testMultiply() {
x = 3 * 2.0
assert x == 6.0
x = 3.0 * 2
assert x == 6.0
x = 3.0 * 2.0
assert x == 6.0
y = x * 2
assert y == 12.0
y = 11 * 3.333
assert y == 36.663 , "y = " + y
y = 3.333 * 11
assert y == 36.663 , "y = " + y
}
void testDivide() {
x = 80.0 / 4
assert x == 20.0 , "x = " + x
x = 80 / 4.0
assert x == 20.0 , "x = " + x
y = x / 2
assert y == 10.0 , "y = " + y
assert y == 10 , "y = " + y
y = 34 / 3.000
assert y == 11.3333333333 , "y = " + y
y = 34.00000000000 / 3
assert y == 11.33333333333 , "y = " + y
}
BigDecimal echoX ( BigDecimal x, BigDecimal y) {x}
// test for Groovy-1250
void testBigDecimalCoerce() {
assert echoX(9.95, 1.0) == echoX(9.95, 1)
}
void testAssign() {
BigDecimal foo
foo = (byte) 20
assert foo.class == BigDecimal.class
assert foo == 20
foo = (short) 20
assert foo.class == BigDecimal.class
assert foo == 20
foo = (int) 20
assert foo.class == BigDecimal.class
assert foo == 20
foo = (long) 20
assert foo.class == BigDecimal.class
assert foo == 20
foo = (float) 0.5f
assert foo.class == BigDecimal.class
assert foo == 0.5
foo = (double) 0.5d
assert foo.class == BigDecimal.class
assert foo == 0.5
foo = 10G
assert foo.class == BigDecimal.class
assert foo == 10
double d = 1000
d *= d
d *= d
d *= d
assert (long)d != d
assert (BigDecimal) d == d
}
}