MathContextTest.java revision adc854b798c1cfe3bfd4c27d68d5cee38ca617da
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
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage tests.api.java.math;
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.TestTargets;
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.TestLevel;
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.TestTargetNew;
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.TestTargetClass;
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.math.BigDecimal;
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.math.MathContext;
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.math.RoundingMode;
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project@TestTargetClass(MathContext.class)
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class MathContextTest extends junit.framework.TestCase {
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @tests java.math.MathContext#MathContext(...)
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @TestTargets({
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @TestTargetNew(
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            level = TestLevel.COMPLETE,
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            notes = "",
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            method = "MathContext",
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            args = {int.class}
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ),
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @TestTargetNew(
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            level = TestLevel.COMPLETE,
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            notes = "",
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            method = "MathContext",
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            args = {int.class, java.math.RoundingMode.class}
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ),
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @TestTargetNew(
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            level = TestLevel.COMPLETE,
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            notes = "",
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            method = "MathContext",
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            args = {java.lang.String.class}
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ),
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @TestTargetNew(
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            level = TestLevel.COMPLETE,
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            notes = "",
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            method = "getPrecision",
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            args = {}
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ),
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @TestTargetNew(
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            level = TestLevel.COMPLETE,
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            notes = "",
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            method = "getRoundingMode",
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            args = {}
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ),
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @TestTargetNew(
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            level = TestLevel.COMPLETE,
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            notes = "",
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            method = "equals",
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            args = {java.lang.Object.class}
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ),
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @TestTargetNew(
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            level = TestLevel.COMPLETE,
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            notes = "",
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            method = "hashCode",
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            args = {}
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ),
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @TestTargetNew(
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            level = TestLevel.COMPLETE,
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            notes = "",
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            method = "toString",
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            args = {}
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        )
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    })
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_MathContextConstruction() {
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String a = "-12380945E+61";
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        BigDecimal aNumber = new BigDecimal(a);
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MathContext mcIntRm6hd = new MathContext(6, RoundingMode.HALF_DOWN);
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MathContext mcStr6hd = new MathContext("precision=6 roundingMode=HALF_DOWN");
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MathContext mcInt6 = new MathContext(6);
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MathContext mcInt134 = new MathContext(134);
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // getPrecision()
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("MathContext.getPrecision() returns incorrect value",
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                6, mcIntRm6hd.getPrecision() );
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("MathContext.getPrecision() returns incorrect value",
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                134, mcInt134.getPrecision() );
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // getRoundingMode()
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("MathContext.getRoundingMode() returns incorrect value",
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                RoundingMode.HALF_UP,
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                mcInt6.getRoundingMode());
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("MathContext.getRoundingMode() returns incorrect value",
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                RoundingMode.HALF_DOWN, mcIntRm6hd.getRoundingMode() );
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // toString()
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("MathContext.toString() returning incorrect value",
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "precision=6 roundingMode=HALF_DOWN", mcIntRm6hd.toString() );
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("MathContext.toString() returning incorrect value",
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "precision=6 roundingMode=HALF_UP", mcInt6.toString() );
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // equals(.)
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Equal MathContexts are not equal ",
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                mcIntRm6hd, mcStr6hd );
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse("Different MathContexts are reported as equal ",
116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                mcInt6.equals(mcStr6hd) );
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse("Different MathContexts are reported as equal ",
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                mcInt6.equals(mcInt134) );
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // hashCode(.)
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Equal MathContexts have different hashcodes ",
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                mcIntRm6hd.hashCode(), mcStr6hd.hashCode() );
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse("Different MathContexts have equal hashcodes ",
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                mcInt6.hashCode() == mcStr6hd.hashCode() );
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse("Different MathContexts have equal hashcodes ",
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                mcInt6.hashCode() == mcInt134.hashCode() );
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // other:
129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        BigDecimal res = aNumber.abs(mcInt6);
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("MathContext Constructor with int precision failed",
131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                new BigDecimal("1.23809E+68"),
132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                res);
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}