|
Groovy example source code file (NumberMathTest.groovy)
The Groovy NumberMathTest.groovy source codepackage groovy import junit.framework.Assert /** * Basic NumberMath test. * @see org.codehaus.groovy.runtime.typehandling.NumberMath */ class NumberMathTest extends GroovyTestCase { void testPromotions() { def C = '1'.toCharacter() def B = new Byte("1") def I = new Integer(1) def L = new Long(1) def F = new Float("1.0") def D = new Double("1.0") def BI = new BigInteger("1") def BD = new BigDecimal("1.0") //+, -, and * all promote the same way, so sample the matrix assert C + B instanceof Integer assert C - BD instanceof BigDecimal assert B + C instanceof Integer assert B + I instanceof Integer assert B + F instanceof Double assert I + I instanceof Integer assert I - F instanceof Double assert I * D instanceof Double assert I + BI instanceof BigInteger assert I - BD instanceof BigDecimal assert F * L instanceof Double assert D + L instanceof Double assert BI - L instanceof BigInteger assert BD * L instanceof BigDecimal assert F + F instanceof Double assert F - BI instanceof Double assert F * BD instanceof Double assert F + D instanceof Double assert BI - D instanceof Double assert BD * D instanceof Double assert BI + BI instanceof BigInteger assert BD - BI instanceof BigDecimal assert BD * BD instanceof BigDecimal //Division (/) promotes differently so change the expected results: assert I / I instanceof BigDecimal assert I / F instanceof Double assert I / D instanceof Double assert I / BI instanceof BigDecimal assert I / BD instanceof BigDecimal assert F / L instanceof Double assert D / L instanceof Double assert BI / L instanceof BigDecimal assert BD / L instanceof BigDecimal assert F / F instanceof Double assert F / BI instanceof Double assert F / BD instanceof Double assert F / D instanceof Double assert BI / D instanceof Double assert BD / D instanceof Double assert BI / BI instanceof BigDecimal assert BD / BI instanceof BigDecimal assert BD / BD instanceof BigDecimal } void testOperations() { def I1 = new Integer(1) def I2 = new Integer(2) def I3 = new Integer(3) def L1 = new Long(1) def L2 = new Long(2) def L3 = new Long(3) def F1 = new Float("1.0") def F2 = new Float("2.0") def D1 = new Double("1.0") def D2 = new Double("2.0") def BI1 = new BigInteger("1") def BI2 = new BigInteger("2") def BD1 = new BigDecimal("1.0") def BD2 = new BigDecimal("2.0") def BD20 = new BigDecimal("2.00") assert I1 / I2 instanceof BigDecimal assert I1 / I2 == new BigDecimal("0.5") assert F1 / F2 instanceof Double Assert.assertEquals F1 / F2, 0.5, 0.0000000001 assert D1 / D2 instanceof Double Assert.assertEquals D1 / D2, 0.5, 0.0000000001 assert I1.intdiv(I2) instanceof Integer assert I1.intdiv(I2) == 0 assert I3.intdiv(I2) instanceof Integer assert I3.intdiv(I2) == 1 assert L1.intdiv(I2) instanceof Long assert L1.intdiv(I2) == 0 assert L3.intdiv(L2) instanceof Long assert L3.intdiv(L2) == 1 assert BI1.intdiv(BI2) instanceof BigInteger assert BI1.intdiv(BI2) == 0 assert I1 / I3 instanceof BigDecimal assert I1 / I3 == new BigDecimal("0.3333333333") assert I2 / I3 instanceof BigDecimal assert I2 / I3 == new BigDecimal("0.6666666667") assert I1 / BD2 instanceof BigDecimal //Test keeping max scale of (L, R or 10) def BBD1 = new BigDecimal("0.12345678901234567") assert BD1 + BBD1 == new BigDecimal("1.12345678901234567") def BBD2 = new BigDecimal(".000000000000000008") assert BBD1 + BBD2 == new BigDecimal("0.123456789012345678") } void testUnsupportedIntDivision() { try { 1.0.intdiv(3) } catch (UnsupportedOperationException uoe) { return } fail("Should catch an UnsupportedOperationException") try { 1.0G.intdiv(3) } catch (UnsupportedOperationException uoe) { return } fail("Should catch an UnsupportedOperationException") } void testGetMath() { assert 20 == new Short("10") << 1 assert 2 == new Byte("1") << 1 } void testLongDivAssign() { long d = 100L d /= 33L assert d.class == Long.class } void testIntegerPlusCastException() { shouldFail(ClassCastException) { Integer i = 12 i += " angry men" } } } Other Groovy examples (source code examples)Here is a short list of links related to this Groovy NumberMathTest.groovy source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.