1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/* 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this work for additional information regarding copyright ownership. 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (the "License"); you may not use this file except in compliance with 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the License. You may obtain a copy of the License at 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License. 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 18ab762bb740405d0fefcccf4a0899a234f995be13Narayan Kamathpackage org.apache.harmony.tests.java.math; 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.math.BigDecimal; 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.math.MathContext; 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.math.RoundingMode; 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class MathContextTest extends junit.framework.TestCase { 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 27229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.math.MathContext#MathContext(...) 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_MathContextConstruction() { 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project String a = "-12380945E+61"; 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project BigDecimal aNumber = new BigDecimal(a); 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project MathContext mcIntRm6hd = new MathContext(6, RoundingMode.HALF_DOWN); 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project MathContext mcStr6hd = new MathContext("precision=6 roundingMode=HALF_DOWN"); 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project MathContext mcInt6 = new MathContext(6); 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project MathContext mcInt134 = new MathContext(134); 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // getPrecision() 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("MathContext.getPrecision() returns incorrect value", 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 6, mcIntRm6hd.getPrecision() ); 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("MathContext.getPrecision() returns incorrect value", 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 134, mcInt134.getPrecision() ); 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // getRoundingMode() 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("MathContext.getRoundingMode() returns incorrect value", 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project RoundingMode.HALF_UP, 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project mcInt6.getRoundingMode()); 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("MathContext.getRoundingMode() returns incorrect value", 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project RoundingMode.HALF_DOWN, mcIntRm6hd.getRoundingMode() ); 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // toString() 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("MathContext.toString() returning incorrect value", 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "precision=6 roundingMode=HALF_DOWN", mcIntRm6hd.toString() ); 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("MathContext.toString() returning incorrect value", 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "precision=6 roundingMode=HALF_UP", mcInt6.toString() ); 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // equals(.) 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Equal MathContexts are not equal ", 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project mcIntRm6hd, mcStr6hd ); 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("Different MathContexts are reported as equal ", 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project mcInt6.equals(mcStr6hd) ); 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("Different MathContexts are reported as equal ", 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project mcInt6.equals(mcInt134) ); 63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // hashCode(.) 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Equal MathContexts have different hashcodes ", 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project mcIntRm6hd.hashCode(), mcStr6hd.hashCode() ); 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("Different MathContexts have equal hashcodes ", 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project mcInt6.hashCode() == mcStr6hd.hashCode() ); 69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertFalse("Different MathContexts have equal hashcodes ", 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project mcInt6.hashCode() == mcInt134.hashCode() ); 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // other: 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project BigDecimal res = aNumber.abs(mcInt6); 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("MathContext Constructor with int precision failed", 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project new BigDecimal("1.23809E+68"), 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project res); 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 797a076f07b8cc14b9bc8b9639320d28822aa57617Elliott Hughes} 80