181ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes/*
281ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes *  Licensed to the Apache Software Foundation (ASF) under one or more
381ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes *  contributor license agreements.  See the NOTICE file distributed with
481ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes *  this work for additional information regarding copyright ownership.
581ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes *  The ASF licenses this file to You under the Apache License, Version 2.0
681ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes *  (the "License"); you may not use this file except in compliance with
781ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes *  the License.  You may obtain a copy of the License at
881ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes *
981ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes *     http://www.apache.org/licenses/LICENSE-2.0
1081ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes *
1181ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes *  Unless required by applicable law or agreed to in writing, software
1281ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes *  distributed under the License is distributed on an "AS IS" BASIS,
1381ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1481ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes *  See the License for the specific language governing permissions and
1581ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes *  limitations under the License.
1681ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes */
1781ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes/**
1881ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes * @author Elena Semukhina
1981ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes */
2081ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes
2181ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughespackage org.apache.harmony.tests.java.math;
2281ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes
2381ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughesimport java.math.BigInteger;
2481ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes
2581ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughesimport junit.framework.TestCase;
2681ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes
2781ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes/**
2881ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes * Class:   java.math.BigInteger
2981ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes * Method: toString(int radix)
3081ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes */
3181ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughespublic class BigIntegerToStringTest extends TestCase {
3281ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes    /**
3381ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes     * If 36 < radix < 2 it should be set to 10
3481ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes     */
3581ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes    public void testRadixOutOfRange() {
3681ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        String value = "442429234853876401";
3781ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        int radix = 10;
3881ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        BigInteger aNumber = new BigInteger(value, radix);
3981ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        String result = aNumber.toString(45);
4081ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        assertTrue(result.equals(value));
4181ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes    }
4281ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes
4381ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes    /**
4481ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes     * test negative number of radix 2
4581ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes     */
4681ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes    public void testRadix2Neg() {
4781ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        String value = "-101001100010010001001010101110000101010110001010010101010101010101010101010101010101010101010010101";
4881ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        int radix = 2;
4981ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        BigInteger aNumber = new BigInteger(value, radix);
5081ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        String result = aNumber.toString(radix);
5181ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        assertTrue(result.equals(value));
5281ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes    }
5381ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes
5481ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes    /**
5581ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes     * test positive number of radix 2
5681ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes     */
5781ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes    public void testRadix2Pos() {
5881ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        String value = "101000011111000000110101010101010101010001001010101010101010010101010101010000100010010";
5981ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        int radix = 2;
6081ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        BigInteger aNumber = new BigInteger(value, radix);
6181ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        String result = aNumber.toString(radix);
6281ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        assertTrue(result.equals(value));
6381ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes    }
6481ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes
6581ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes    /**
6681ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes     * test negative number of radix 10
6781ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes     */
6881ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes    public void testRadix10Neg() {
6981ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        String value = "-2489756308572364789878394872984";
7081ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        int radix = 16;
7181ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        BigInteger aNumber = new BigInteger(value, radix);
7281ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        String result = aNumber.toString(radix);
7381ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        assertTrue(result.equals(value));
7481ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes    }
7581ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes
7681ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes    /**
7781ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes     * test positive number of radix 10
7881ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes     */
7981ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes    public void testRadix10Pos() {
8081ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        String value = "2387627892347567398736473476";
8181ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        int radix = 16;
8281ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        BigInteger aNumber = new BigInteger(value, radix);
8381ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        String result = aNumber.toString(radix);
8481ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        assertTrue(result.equals(value));
8581ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes    }
8681ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes
8781ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes    /**
8881ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes     * test negative number of radix 16
8981ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes     */
9081ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes    public void testRadix16Neg() {
9181ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        String value = "-287628a883451b800865c67e8d7ff20";
9281ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        int radix = 16;
9381ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        BigInteger aNumber = new BigInteger(value, radix);
9481ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        String result = aNumber.toString(radix);
9581ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        assertTrue(result.equals(value));
9681ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes    }
9781ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes
9881ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes    /**
9981ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes     * test positive number of radix 16
10081ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes     */
10181ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes    public void testRadix16Pos() {
10281ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        String value = "287628a883451b800865c67e8d7ff20";
10381ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        int radix = 16;
10481ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        BigInteger aNumber = new BigInteger(value, radix);
10581ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        String result = aNumber.toString(radix);
10681ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        assertTrue(result.equals(value));
10781ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes    }
10881ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes
10981ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes    /**
11081ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes     * test negative number of radix 24
11181ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes     */
11281ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes    public void testRadix24Neg() {
11381ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        String value = "-287628a88gmn3451b8ijk00865c67e8d7ff20";
11481ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        int radix = 24;
11581ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        BigInteger aNumber = new BigInteger(value, radix);
11681ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        String result = aNumber.toString(radix);
11781ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        assertTrue(result.equals(value));
11881ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes    }
11981ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes
12081ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes    /**
12181ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes     * test positive number of radix 24
12281ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes     */
12381ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes    public void testRadix24Pos() {
12481ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        String value = "287628a883451bg80ijhk0865c67e8d7ff20";
12581ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        int radix = 24;
12681ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        BigInteger aNumber = new BigInteger(value, radix);
12781ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        String result = aNumber.toString(radix);
12881ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        assertTrue(result.equals(value));
12981ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes    }
13081ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes
13181ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes    /**
13281ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes     * test negative number of radix 24
13381ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes     */
13481ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes    public void testRadix36Neg() {
13581ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        String value = "-uhguweut98iu4h3478tq3985pq98yeiuth33485yq4aiuhalai485yiaehasdkr8tywi5uhslei8";
13681ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        int radix = 36;
13781ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        BigInteger aNumber = new BigInteger(value, radix);
13881ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        String result = aNumber.toString(radix);
13981ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        assertTrue(result.equals(value));
14081ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes    }
14181ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes
14281ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes    /**
14381ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes     * test positive number of radix 24
14481ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes     */
14581ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes    public void testRadix36Pos() {
14681ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        String value = "23895lt45y6vhgliuwhgi45y845htsuerhsi4586ysuerhtsio5y68peruhgsil4568ypeorihtse48y6";
14781ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        int radix = 36;
14881ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        BigInteger aNumber = new BigInteger(value, radix);
14981ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        String result = aNumber.toString(radix);
15081ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes        assertTrue(result.equals(value));
15181ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes    }
15281ccea015ba3d2a2da1c641b14dd3713c6b40a76Elliott Hughes}
153