1 32 package net.sf.retrotranslator.runtime.java.math; 33 34 import java.math.*; 35 import net.sf.retrotranslator.tests.BaseTestCase; 36 37 40 public class _BigDecimalTestCase extends BaseTestCase { 41 42 public void testConstants() throws Exception { 43 assertEquals(0, BigDecimal.ZERO.intValue()); 44 assertEquals(1, BigDecimal.ONE.intValue()); 45 assertEquals(10, BigDecimal.TEN.intValue()); 46 } 47 48 public void testConvertConstructorArguments() throws Exception { 49 assertEquals(10L, new BigDecimal(10L).longValue()); 50 assertEquals(20, new BigDecimal(20).intValue()); 51 class MyDecimal extends BigDecimal { 52 public MyDecimal(int val) { 53 super(val); 54 } 55 56 public MyDecimal(long val) { 57 super(val); 58 } 59 } 60 assertEquals(10L, new MyDecimal(10L).longValue()); 61 assertEquals(20, new MyDecimal(20).intValue()); 62 } 63 64 public void testDivideAndRemainder() throws Exception { 65 BigDecimal dividend = BigDecimal.valueOf(123.4567); 66 assertEquals(4, dividend.scale()); 67 BigDecimal divisor = BigDecimal.valueOf(8.9); 68 assertEquals(1, divisor.scale()); 69 BigDecimal[] result = dividend.divideAndRemainder(divisor); 70 BigDecimal quotient = result[0]; 71 BigDecimal remainder = result[1]; 72 assertEquals(13.0, quotient.doubleValue()); 73 assertEquals(3, quotient.scale()); 74 assertEquals(7.7567, remainder.doubleValue()); 75 assertEquals(4, remainder.scale()); 76 77 } 78 79 public void testDivideToIntegralValue_scale2() throws Exception { 80 BigDecimal dividend = BigDecimal.valueOf(123.456); 81 assertEquals(3, dividend.scale()); 82 BigDecimal divisor = BigDecimal.valueOf(7.8); 83 assertEquals(1, divisor.scale()); 84 BigDecimal quotient = dividend.divideToIntegralValue(divisor); 85 assertEquals(15.0, quotient.doubleValue()); 86 assertEquals(2, quotient.scale()); 87 } 88 89 public void testDivideToIntegralValue_scale0() throws Exception { 90 BigDecimal dividend = BigDecimal.valueOf(123.4); 91 assertEquals(1, dividend.scale()); 92 BigDecimal divisor = BigDecimal.valueOf(5.678); 93 assertEquals(3, divisor.scale()); 94 BigDecimal quotient = dividend.divideToIntegralValue(divisor); 95 assertEquals(21.0, quotient.doubleValue()); 96 assertEquals(0, quotient.scale()); 97 } 98 99 public void testDivideToIntegralValue_zeroDividend() throws Exception { 100 BigDecimal dividend = BigDecimal.valueOf(0, 10); 101 assertEquals(10, dividend.scale()); 102 BigDecimal divisor = BigDecimal.valueOf(1, 5); 103 assertEquals(5, divisor.scale()); 104 BigDecimal quotient = dividend.divideToIntegralValue(divisor); 105 assertEquals(0.0, quotient.doubleValue()); 106 assertEquals(5, quotient.scale()); 107 } 108 109 public void testDivideToIntegralValue_zeroDivider() throws Exception { 110 BigDecimal dividend = BigDecimal.valueOf(1); 111 BigDecimal divisor = BigDecimal.valueOf(0); 112 try { 113 dividend.divideToIntegralValue(divisor); 114 fail(); 115 } catch (ArithmeticException e) { 116 } 118 } 119 120 public void testPow() throws Exception { 121 assertEquals(1, new BigDecimal(10).pow(0).intValue()); 122 assertEquals(10, new BigDecimal(10).pow(1).intValue()); 123 assertEquals(100, new BigDecimal(10).pow(2).intValue()); 124 assertEquals(100000, new BigDecimal(10).pow(5).intValue()); 125 try { 126 new BigDecimal(10).pow(-10); 127 fail(); 128 } catch (ArithmeticException e) { 129 } 131 } 132 133 public void testSetScale() throws Exception { 134 assertEquals("123.5", new BigDecimal(123.45).setScale(1, BigDecimal.ROUND_HALF_EVEN).toPlainString()); 135 assertEquals("120", new BigDecimal(123).setScale(-1, BigDecimal.ROUND_HALF_EVEN).toPlainString()); 136 } 137 138 public void testRemainder() throws Exception { 139 BigDecimal dividend = BigDecimal.valueOf(12.3); 140 assertEquals(1, dividend.scale()); 141 BigDecimal divisor = BigDecimal.valueOf(4.5678); 142 assertEquals(4, divisor.scale()); 143 BigDecimal remainder = dividend.remainder(divisor); 144 assertEquals(3.1644, remainder.doubleValue()); 145 assertEquals(4, remainder.scale()); 146 } 147 148 public void testToPlainString() throws Exception { 149 assertEquals("1230", new BigDecimal(1230).toPlainString()); 150 assertEquals("1.23", new BigDecimal(BigInteger.valueOf(123), 2).toPlainString()); 151 } 152 153 public void testValueOf() throws Exception { 154 assertEquals(1.23, BigDecimal.valueOf(1.23).doubleValue()); 155 assertEquals(123, BigDecimal.valueOf(123).longValue()); 156 } 157 158 } | Popular Tags |