1/*
2 *  Licensed to the Apache Software Foundation (ASF) under one or more
3 *  contributor license agreements.  See the NOTICE file distributed with
4 *  this work for additional information regarding copyright ownership.
5 *  The ASF licenses this file to You under the Apache License, Version 2.0
6 *  (the "License"); you may not use this file except in compliance with
7 *  the License.  You may obtain a copy of the License at
8 *
9 *     http://www.apache.org/licenses/LICENSE-2.0
10 *
11 *  Unless required by applicable law or agreed to in writing, software
12 *  distributed under the License is distributed on an "AS IS" BASIS,
13 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 *  See the License for the specific language governing permissions and
15 *  limitations under the License.
16 */
17/**
18 * @author Elena Semukhina
19 */
20
21package org.apache.harmony.tests.java.math;
22
23import java.math.BigInteger;
24
25import junit.framework.TestCase;
26
27/**
28 * Class:   java.math.BigInteger
29 * Method: toString(int radix)
30 */
31public class BigIntegerToStringTest extends TestCase {
32    /**
33     * If 36 < radix < 2 it should be set to 10
34     */
35    public void testRadixOutOfRange() {
36        String value = "442429234853876401";
37        int radix = 10;
38        BigInteger aNumber = new BigInteger(value, radix);
39        String result = aNumber.toString(45);
40        assertTrue(result.equals(value));
41    }
42
43    /**
44     * test negative number of radix 2
45     */
46    public void testRadix2Neg() {
47        String value = "-101001100010010001001010101110000101010110001010010101010101010101010101010101010101010101010010101";
48        int radix = 2;
49        BigInteger aNumber = new BigInteger(value, radix);
50        String result = aNumber.toString(radix);
51        assertTrue(result.equals(value));
52    }
53
54    /**
55     * test positive number of radix 2
56     */
57    public void testRadix2Pos() {
58        String value = "101000011111000000110101010101010101010001001010101010101010010101010101010000100010010";
59        int radix = 2;
60        BigInteger aNumber = new BigInteger(value, radix);
61        String result = aNumber.toString(radix);
62        assertTrue(result.equals(value));
63    }
64
65    /**
66     * test negative number of radix 10
67     */
68    public void testRadix10Neg() {
69        String value = "-2489756308572364789878394872984";
70        int radix = 16;
71        BigInteger aNumber = new BigInteger(value, radix);
72        String result = aNumber.toString(radix);
73        assertTrue(result.equals(value));
74    }
75
76    /**
77     * test positive number of radix 10
78     */
79    public void testRadix10Pos() {
80        String value = "2387627892347567398736473476";
81        int radix = 16;
82        BigInteger aNumber = new BigInteger(value, radix);
83        String result = aNumber.toString(radix);
84        assertTrue(result.equals(value));
85    }
86
87    /**
88     * test negative number of radix 16
89     */
90    public void testRadix16Neg() {
91        String value = "-287628a883451b800865c67e8d7ff20";
92        int radix = 16;
93        BigInteger aNumber = new BigInteger(value, radix);
94        String result = aNumber.toString(radix);
95        assertTrue(result.equals(value));
96    }
97
98    /**
99     * test positive number of radix 16
100     */
101    public void testRadix16Pos() {
102        String value = "287628a883451b800865c67e8d7ff20";
103        int radix = 16;
104        BigInteger aNumber = new BigInteger(value, radix);
105        String result = aNumber.toString(radix);
106        assertTrue(result.equals(value));
107    }
108
109    /**
110     * test negative number of radix 24
111     */
112    public void testRadix24Neg() {
113        String value = "-287628a88gmn3451b8ijk00865c67e8d7ff20";
114        int radix = 24;
115        BigInteger aNumber = new BigInteger(value, radix);
116        String result = aNumber.toString(radix);
117        assertTrue(result.equals(value));
118    }
119
120    /**
121     * test positive number of radix 24
122     */
123    public void testRadix24Pos() {
124        String value = "287628a883451bg80ijhk0865c67e8d7ff20";
125        int radix = 24;
126        BigInteger aNumber = new BigInteger(value, radix);
127        String result = aNumber.toString(radix);
128        assertTrue(result.equals(value));
129    }
130
131    /**
132     * test negative number of radix 24
133     */
134    public void testRadix36Neg() {
135        String value = "-uhguweut98iu4h3478tq3985pq98yeiuth33485yq4aiuhalai485yiaehasdkr8tywi5uhslei8";
136        int radix = 36;
137        BigInteger aNumber = new BigInteger(value, radix);
138        String result = aNumber.toString(radix);
139        assertTrue(result.equals(value));
140    }
141
142    /**
143     * test positive number of radix 24
144     */
145    public void testRadix36Pos() {
146        String value = "23895lt45y6vhgliuwhgi45y845htsuerhsi4586ysuerhtsio5y68peruhgsil4568ypeorihtse48y6";
147        int radix = 36;
148        BigInteger aNumber = new BigInteger(value, radix);
149        String result = aNumber.toString(radix);
150        assertTrue(result.equals(value));
151    }
152}
153