/*! ******************************************************************************
*
* Pentaho Data Integration
*
* Copyright (C) 2002-2016 by Pentaho : http://www.pentaho.com
*
*******************************************************************************
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
******************************************************************************/
package org.pentaho.di.core;
import junit.framework.TestCase;
import org.apache.commons.lang.SystemUtils;
import org.junit.Assert;
import org.junit.Test;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.core.row.ValueMetaInterface;
import java.math.BigDecimal;
import java.net.URLClassLoader;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
/**
* Test class for the basic functionality of Const.
*
*/
public class ConstTest extends TestCase {
private static String DELIMITER1 = ",";
private static String DELIMITER2 = "</newpage>";
private static String ENCLOSURE1 = "\"";
private static String ENCLOSURE2 = "html";
protected boolean isArraySorted( String[] arr ) {
if ( arr.length < 2 ) {
return true;
}
for ( int idx = 0; idx < arr.length - 1; idx++ ) {
if ( arr[idx].compareTo( arr[idx + 1] ) > 0 ) {
return false;
}
}
return true;
}
/**
* Test initCap. Regression test for PDI-1338: "javascript initcap() can't deal correctly with special non-ASCII
* chars".
*/
@Test
public void testInitCap() {
assertEquals( "Sven", Const.initCap( "Sven" ) );
assertEquals( "Matt", Const.initCap( "MATT" ) );
assertEquals( "Sven Boden", Const.initCap( "sven boden" ) );
assertEquals( "Sven Boden ", Const.initCap( "sven boden " ) );
assertEquals( "Sven Boden Was Here", Const.initCap( "sven boden was here" ) );
// Here the original code failed as it saw the "o umlaut" as non-ASCII, and would
// assume it needed to start a new word here.
assertEquals( "K\u00F6nnen", Const.initCap( "k\u00F6nnen" ) );
}
/**
* Test sortString().
*/
@Test
public void testSortStrings() {
String[] arr1 = { "Red", "Blue", "Black", "Black", "Green" };
String[] arr2 = { "aaa", "zzz", "yyy", "sss", "ttt", "t" };
String[] arr3 = { "A", "B", "C", "D" };
String[] results = Const.sortStrings( arr1 );
assertTrue( isArraySorted( arr1 ) );
assertTrue( isArraySorted( results ) );
results = Const.sortStrings( arr2 );
assertTrue( isArraySorted( arr2 ) );
assertTrue( isArraySorted( results ) );
results = Const.sortStrings( arr3 );
assertTrue( isArraySorted( arr3 ) );
assertTrue( isArraySorted( results ) );
}
@Test
public void testIsEmpty() {
assertTrue( Const.isEmpty( (String) null ) );
assertTrue( Const.isEmpty( "" ) );
assertFalse( Const.isEmpty( "test" ) );
}
@Test
public void testIsEmptyStringArray() {
assertTrue( Const.isEmpty( (String[]) null ) );
assertTrue( Const.isEmpty( new String[] {} ) );
assertFalse( Const.isEmpty( new String[] { "test" } ) );
}
@Test
public void testIsEmptyObjectArray() {
assertTrue( Const.isEmpty( (Object[]) null ) );
assertTrue( Const.isEmpty( new Object[] {} ) );
assertFalse( Const.isEmpty( new Object[] { "test" } ) );
}
@Test
public void testIsEmptyList() {
assertTrue( Const.isEmpty( (List) null ) );
assertTrue( Const.isEmpty( new ArrayList() ) );
assertFalse( Const.isEmpty( Arrays.asList( "test", 1 ) ) );
}
@Test
public void testIsEmptyStringBuffer() {
assertTrue( Const.isEmpty( (StringBuffer) null ) );
assertTrue( Const.isEmpty( new StringBuffer( "" ) ) );
assertFalse( Const.isEmpty( new StringBuffer( "test" ) ) );
}
@Test
public void testIsEmptyStringBuilder() {
assertTrue( Const.isEmpty( (StringBuilder) null ) );
assertTrue( Const.isEmpty( new StringBuilder( "" ) ) );
assertFalse( Const.isEmpty( new StringBuilder( "test" ) ) );
}
@Test
public void testNVL() {
assertNull( Const.NVL( null, null ) );
assertEquals( "test", Const.NVL( "test", "test1" ) );
assertEquals( "test", Const.NVL( "test", null ) );
assertEquals( "test1", Const.NVL( null, "test1" ) );
}
@Test
public void testNrSpacesBefore() {
try {
Const.nrSpacesBefore( null );
fail( "Expected NullPointerException" );
} catch ( NullPointerException ex ) {
// Ignore
}
assertEquals( 0, Const.nrSpacesBefore( "" ) );
assertEquals( 1, Const.nrSpacesBefore( " " ) );
assertEquals( 3, Const.nrSpacesBefore( " " ) );
assertEquals( 0, Const.nrSpacesBefore( "test" ) );
assertEquals( 0, Const.nrSpacesBefore( "test " ) );
assertEquals( 3, Const.nrSpacesBefore( " test" ) );
assertEquals( 4, Const.nrSpacesBefore( " test " ) );
}
@Test
public void testNrSpacesAfter() {
try {
Const.nrSpacesAfter( null );
fail( "Expected NullPointerException" );
} catch ( NullPointerException ex ) {
// Ignore
}
assertEquals( 0, Const.nrSpacesAfter( "" ) );
assertEquals( 1, Const.nrSpacesAfter( " " ) );
assertEquals( 3, Const.nrSpacesAfter( " " ) );
assertEquals( 0, Const.nrSpacesAfter( "test" ) );
assertEquals( 2, Const.nrSpacesAfter( "test " ) );
assertEquals( 0, Const.nrSpacesAfter( " test" ) );
assertEquals( 2, Const.nrSpacesAfter( " test " ) );
}
@Test
public void testLtrim() {
assertEquals( null, Const.ltrim( null ) );
assertEquals( "", Const.ltrim( "" ) );
assertEquals( "", Const.ltrim( " " ) );
assertEquals( "test ", Const.ltrim( "test " ) );
assertEquals( "test ", Const.ltrim( " test " ) );
}
@Test
public void testRtrim() {
assertEquals( null, Const.rtrim( null ) );
assertEquals( "", Const.rtrim( "" ) );
assertEquals( "", Const.rtrim( " " ) );
assertEquals( "test", Const.rtrim( "test " ) );
assertEquals( "test ", Const.ltrim( " test " ) );
}
@Test
public void testTrim() {
assertEquals( null, Const.trim( null ) );
assertEquals( "", Const.trim( "" ) );
assertEquals( "", Const.trim( " " ) );
assertEquals( "test", Const.trim( "test " ) );
assertEquals( "test", Const.trim( " test " ) );
}
@Test
public void testOnlySpaces() {
try {
Const.onlySpaces( null );
fail( "Expected NullPointerException" );
} catch ( NullPointerException ex ) {
// Ignore
}
assertEquals( true, Const.onlySpaces( "" ) );
assertEquals( true, Const.onlySpaces( " " ) );
assertEquals( false, Const.onlySpaces( " test " ) );
}
/**
* Test splitString with String separator.
*/
@Test
public void testSplitString() {
assertEquals( 0, Const.splitString( "", ";" ).length );
assertEquals( 0, Const.splitString( null, ";" ).length );
String[] a = Const.splitString( ";", ";" );
assertEquals( 1, a.length );
assertEquals( "", a[0] );
a = Const.splitString( "a;b;c;d", ";" );
assertEquals( 4, a.length );
assertEquals( "a", a[0] );
assertEquals( "b", a[1] );
assertEquals( "c", a[2] );
assertEquals( "d", a[3] );
a = Const.splitString( "a;b;c;d;", ";" );
assertEquals( 4, a.length );
assertEquals( "a", a[0] );
assertEquals( "b", a[1] );
assertEquals( "c", a[2] );
assertEquals( "d", a[3] );
a = Const.splitString( "AACCAADAaAADD", "AA" );
assertEquals( 4, a.length );
assertEquals( "", a[0] );
assertEquals( "CC", a[1] );
assertEquals( "DA", a[2] );
assertEquals( "ADD", a[3] );
a = Const.splitString( "CCAABBAA", "AA" );
assertEquals( 2, a.length );
assertEquals( "CC", a[0] );
assertEquals( "BB", a[1] );
}
/**
* Test splitString with char separator.
*/
@Test
public void testSplitStringChar() {
assertEquals( 0, Const.splitString( "", ';' ).length );
assertEquals( 0, Const.splitString( null, ';' ).length );
String[] a = Const.splitString( ";", ';' );
assertEquals( 1, a.length );
assertEquals( "", a[0] );
a = Const.splitString( "a;b;c;d", ';' );
assertEquals( 4, a.length );
assertEquals( "a", a[0] );
assertEquals( "b", a[1] );
assertEquals( "c", a[2] );
assertEquals( "d", a[3] );
a = Const.splitString( "a;b;c;d;", ';' );
assertEquals( 4, a.length );
assertEquals( "a", a[0] );
assertEquals( "b", a[1] );
assertEquals( "c", a[2] );
assertEquals( "d", a[3] );
a = Const.splitString( ";CC;DA;ADD", ';' );
assertEquals( 4, a.length );
assertEquals( "", a[0] );
assertEquals( "CC", a[1] );
assertEquals( "DA", a[2] );
assertEquals( "ADD", a[3] );
a = Const.splitString( "CC;BB;", ';' );
assertEquals( 2, a.length );
assertEquals( "CC", a[0] );
assertEquals( "BB", a[1] );
}
/**
* Test splitString with delimiter and enclosure
*/
@Test
public void testSplitStringNullWithDelimiterNullAndEnclosureNull() {
String[] result = Const.splitString( null, null, null );
assertNull( result );
}
@Test
public void testSplitStringNullWithDelimiterNullAndEnclosureNullRemoveEnclosure() {
String[] result = Const.splitString( null, null, null, true );
assertNull( result );
}
@Test
public void testSplitStringWithDelimiterNullAndEnclosureNull() {
String stringToSplit = "Hello, world";
String[] result = Const.splitString( stringToSplit, null, null );
assertSplit( result, stringToSplit );
}
@Test
public void testSplitStringWithDelimiterNullAndEnclosureNullRemoveEnclosure() {
String stringToSplit = "Hello, world";
String[] result = Const.splitString( stringToSplit, null, null, true );
assertSplit( result, stringToSplit );
}
@Test
public void testSplitStringWithDelimiterAndEnclosureNull() {
String mask = "Hello%s world";
String[] chunks = {"Hello", " world"};
String stringToSplit = String.format( mask, DELIMITER1 );
String[] result = Const.splitString( stringToSplit, DELIMITER1, null );
assertSplit( result, chunks );
}
@Test
public void testSplitStringWithDelimiterAndEnclosureNullMultiChar() {
String mask = "Hello%s world";
String[] chunks = {"Hello", " world"};
String stringToSplit = String.format( mask, DELIMITER2 );
String[] result = Const.splitString( stringToSplit, DELIMITER2, null );
assertSplit( result, chunks );
}
@Test
public void testSplitStringWithDelimiterAndEnclosureNullRemoveEnclosure() {
String mask = "Hello%s world";
String[] chunks = {"Hello", " world"};
String stringToSplit = String.format( mask, DELIMITER1 );
String[] result = Const.splitString( stringToSplit, DELIMITER1, null, true );
assertSplit( result, chunks );
}
@Test
public void testSplitStringWithDelimiterAndEnclosureNullMultiCharRemoveEnclosure() {
String mask = "Hello%s world";
String[] chunks = {"Hello", " world"};
String stringToSplit = String.format( mask, DELIMITER2 );
String[] result = Const.splitString( stringToSplit, DELIMITER2, null, true );
assertSplit( result, chunks );
}
@Test
public void testSplitStringWithDelimiterAndEmptyEnclosure() {
String mask = "Hello%s world";
String[] chunks = {"Hello", " world"};
String stringToSplit = String.format( mask, DELIMITER1 );
String[] result = Const.splitString( stringToSplit, DELIMITER1, "" );
assertSplit( result, chunks );
}
@Test
public void testSplitStringWithDelimiterAndEmptyEnclosureMultiChar() {
String mask = "Hello%s world";
String[] chunks = {"Hello", " world"};
String stringToSplit = String.format( mask, DELIMITER2 );
String[] result = Const.splitString( stringToSplit, DELIMITER2, "" );
assertSplit( result, chunks );
}
@Test
public void testSplitStringWithDelimiterAndEmptyEnclosureRemoveEnclosure() {
String mask = "Hello%s world";
String[] chunks = {"Hello", " world"};
String stringToSplit = String.format( mask, DELIMITER1 );
String[] result = Const.splitString( stringToSplit, DELIMITER1, "", true );
assertSplit( result, chunks );
}
@Test
public void testSplitStringWithDelimiterAndEmptyEnclosureMultiCharRemoveEnclosure() {
String mask = "Hello%s world";
String[] chunks = {"Hello", " world"};
String stringToSplit = String.format( mask, DELIMITER2 );
String [] result = Const.splitString( stringToSplit, DELIMITER2, "", true );
assertSplit( result, chunks );
}
@Test
public void testSplitStringWithDelimiterAndQuoteEnclosure1() {
//"Hello, world"
String mask = "%sHello%s world%s";
String stringToSplit = String.format( mask, ENCLOSURE1, DELIMITER1, ENCLOSURE1 );
String[] result = Const.splitString( stringToSplit, DELIMITER1, ENCLOSURE1 );
assertSplit( result, stringToSplit );
}
@Test
public void testSplitStringWithDelimiterAndQuoteEnclosureMultiChar1() {
//"Hello, world"
String mask = "%sHello%s world%s";
String stringToSplit = String.format( mask, ENCLOSURE2, DELIMITER2, ENCLOSURE2 );
String[] result = Const.splitString( stringToSplit, DELIMITER2, ENCLOSURE2 );
assertSplit( result, stringToSplit );
}
@Test
public void testSplitStringWithDelimiterAndQuoteEnclosureRemoveEnclosure1() {
//"Hello, world"
String mask = "%sHello%s world%s";
String[] chunks1 = { "Hello" + DELIMITER1 + " world" };
String stringToSplit = String.format( mask, ENCLOSURE1, DELIMITER1, ENCLOSURE1 );
String[] result = Const.splitString( stringToSplit, DELIMITER1, ENCLOSURE1, true );
assertSplit( result, chunks1 );
}
@Test
public void testSplitStringWithDelimiterAndQuoteEnclosureMultiCharRemoveEnclosure1() {
//"Hello, world"
String mask = "%sHello%s world%s";
String[] chunks2 = { "Hello" + DELIMITER2 + " world" };
String stringToSplit = String.format( mask, ENCLOSURE2, DELIMITER2, ENCLOSURE2 );
String[] result = Const.splitString( stringToSplit, DELIMITER2, ENCLOSURE2, true );
assertSplit( result, chunks2 );
}
@Test
public void testSplitStringWithDelimiterAndQuoteEnclosure2() {
testSplitStringWithDelimiterAndQuoteEnclosure2( ENCLOSURE1, DELIMITER1 );
}
@Test
public void testSplitStringWithDelimiterAndQuoteEnclosureMultiChar2() {
testSplitStringWithDelimiterAndQuoteEnclosure2( ENCLOSURE2, DELIMITER2 );
}
private void testSplitStringWithDelimiterAndQuoteEnclosure2( String e, String d ) {
//"Hello, world","I","am","here"
String mask = "%sHello%s world%s%s%sI%s%s%sam%s%s%shere%s";
String[] chunks1 = { e + "Hello" + d + " world" + e,
e + "I" + e,
e + "am" + e,
e + "here" + e };
String stringToSplit = String.format( mask, e, d, e, d, e, e, d, e, e, d, e, e );
String[] result = Const.splitString( stringToSplit, d, e );
assertSplit( result, chunks1 );
}
@Test
public void testSplitStringWithDelimiterAndQuoteEnclosureRemoveEnclosure2() {
testSplitStringWithDelimiterAndQuoteEnclosureRemoveEnclosure2( ENCLOSURE1, DELIMITER1 );
}
@Test
public void testSplitStringWithDelimiterAndQuoteEnclosureMultiCharRemoveEnclosure2() {
testSplitStringWithDelimiterAndQuoteEnclosureRemoveEnclosure2( ENCLOSURE2, DELIMITER2 );
}
private void testSplitStringWithDelimiterAndQuoteEnclosureRemoveEnclosure2( String e, String d ) {
//"Hello, world","I","am","here"
String mask = "%sHello%s world%s%s%sI%s%s%sam%s%s%shere%s";
String[] chunks1 = { "Hello" + d + " world",
"I", "am", "here" };
String stringToSplit = String.format( mask, e, d, e, d, e, e, d, e, e, d, e, e );
String[] result = Const.splitString( stringToSplit, d, e, true );
assertSplit( result, chunks1 );
}
@Test
public void testSplitStringWithDelimiterAndQuoteEnclosure3() {
testSplitStringWithDelimiterAndQuoteEnclosure3( ENCLOSURE1, DELIMITER1 );
}
@Test
public void testSplitStringWithDelimiterAndQuoteEnclosureMultiChar3() {
testSplitStringWithDelimiterAndQuoteEnclosure3( ENCLOSURE2, DELIMITER2 );
}
private void testSplitStringWithDelimiterAndQuoteEnclosure3( String e, String d ) {
//"Hello, world","I,","am,,",", here"
String mask = "%sHello%s world%s" + "%s" + "%sI%s%s" + "%s" + "%sam%s%s%s" + "%s" + "%s%s here%s";
String[] chunks1 = { e + "Hello" + d + " world" + e,
e + "I" + d + e,
e + "am" + d + d + e,
e + d + " here" + e };
String stringToSplit = String.format( mask, e, d, e, d, e, d, e, d, e, d, d, e, d, e, d, e );
String[] result = Const.splitString( stringToSplit, d, e );
assertSplit( result, chunks1 );
}
@Test
public void testSplitStringWithDelimiterAndQuoteEnclosureRemovesEnclosure3() {
testSplitStringWithDelimiterAndQuoteEnclosureRemovesEnclosure3( ENCLOSURE1, DELIMITER1 );
}
@Test
public void testSplitStringWithDelimiterAndQuoteEnclosureMultiCharRemovesEnclosure3() {
testSplitStringWithDelimiterAndQuoteEnclosureRemovesEnclosure3( ENCLOSURE2, DELIMITER2 );
}
private void testSplitStringWithDelimiterAndQuoteEnclosureRemovesEnclosure3( String e, String d ) {
//"Hello, world","I,","am,,",", here"
String mask = "%sHello%s world%s" + "%s" + "%sI%s%s" + "%s" + "%sam%s%s%s" + "%s" + "%s%s here%s";
String[] chunks1 = { "Hello" + d + " world",
"I" + d,
"am" + d + d,
d + " here" };
String stringToSplit = String.format( mask, e, d, e, d, e, d, e, d, e, d, d, e, d, e, d, e );
String[] result = Const.splitString( stringToSplit, d, e, true );
assertSplit( result, chunks1 );
}
@Test
public void testSplitStringWithDifferentDelimiterAndEnclosure() {
// Try a different delimiter and enclosure
String[] result = Const.splitString( "a;'b;c;d';'e,f';'g';h", ";", "'" );
assertNotNull( result );
assertEquals( 5, result.length );
assertEquals( "a", result[0] );
assertEquals( "'b;c;d'", result[1] );
assertEquals( "'e,f'", result[2] );
assertEquals( "'g'", result[3] );
assertEquals( "h", result[4] );
// Check for null and empty as the last split
result = Const.splitString( "a;b;c;", ";", null );
assertNotNull( result );
assertEquals( 3, result.length );
result = Const.splitString( "a;b;c;''", ";", "'" );
assertNotNull( result );
assertEquals( 4, result.length );
}
@Test
public void testSplitStringWithMultipleCharacterDelimiterAndEnclosure() {
// Check for multiple-character strings
String[] result =
Const.splitString( "html this is a web page html</newpage>html and so is this html", "</newpage>", "html" );
assertNotNull( result );
assertEquals( 2, result.length );
assertEquals( "html this is a web page html", result[0] );
assertEquals( "html and so is this html", result[1] );
}
@Test
public void testSplitStringRemoveEnclosureNested1() {
testSplitStringRemoveEnclosureNested1( ENCLOSURE1, DELIMITER1 );
}
@Test
public void testSplitStringRemoveEnclosureNestedMultiChar1() {
testSplitStringRemoveEnclosureNested1( ENCLOSURE2, DELIMITER2 );
}
private void testSplitStringRemoveEnclosureNested1( String e, String d ) {
//"a, "b" c"
String mask = "%sa" + "%s" + " %sb%s c%s";
String[] chunks = { "a" + d + " " + e + "b" + e + " c" };
String stringToSplit = String.format( mask, e, d, e, e, e );
String[] result = Const.splitString( stringToSplit, d, e, true );
assertSplit( result, chunks );
}
@Test
public void testSplitStringRemoveEnclosureNested2() {
testSplitStringRemoveEnclosureNested( ENCLOSURE1, DELIMITER1 );
}
@Test
public void testSplitStringRemoveEnclosureNestedMultiChar2() {
testSplitStringRemoveEnclosureNested( ENCLOSURE2, DELIMITER2 );
}
private void testSplitStringRemoveEnclosureNested( String e, String d ) {
//"""a,b,c"""
String mask = "%s%s%sa" + "%s" + "b" + "%s" + "c%s%s%s";
String[] chunks = { e + e + "a" + d + "b" + d + "c" + e + e};
String stringToSplit = String.format( mask, e, e, e, d, d, e, e, e );
String[] result = Const.splitString( stringToSplit, d, e, true );
assertSplit( result, chunks );
}
private void assertSplit( String[] result, String... chunks ) {
assertNotNull( result );
assertEquals( chunks.length, result.length );
for ( int i = 0; i < chunks.length; i++ ) {
assertEquals( chunks[i], result[i] );
}
}
/**
* Test splitString with delimiter and enclosure
*/
@Test
public void testSplitStringWithEscaping() {
String[] result;
result = Const.splitString( null, null, null );
assertNull( result );
result = Const.splitString( "Hello, world", null, null );
assertNotNull( result );
assertEquals( result.length, 1 );
assertEquals( result[0], "Hello, world" );
result = Const.splitString( "Hello\\, world,Hello\\, planet,Hello\\, 3rd rock", ',', true );
assertNotNull( result );
assertEquals( result.length, 3 );
assertEquals( result[0], "Hello\\, world" );
assertEquals( result[1], "Hello\\, planet" );
assertEquals( result[2], "Hello\\, 3rd rock" );
}
/**
* Test splitPath.
*/
@Test
public void testSplitPath() {
String[] a = Const.splitPath( "", "/" );
assertEquals( 0, a.length );
a = Const.splitPath( null, "/" );
assertEquals( 0, a.length );
a = Const.splitPath( "/", "/" );
assertEquals( 0, a.length );
a = Const.splitPath( "/level1", "/" );
assertEquals( 1, a.length );
assertEquals( "level1", a[0] );
a = Const.splitPath( "level1", "/" );
assertEquals( 1, a.length );
assertEquals( "level1", a[0] );
a = Const.splitPath( "/level1/level2", "/" );
assertEquals( 2, a.length );
assertEquals( "level1", a[0] );
assertEquals( "level2", a[1] );
a = Const.splitPath( "level1/level2", "/" );
assertEquals( 2, a.length );
assertEquals( "level1", a[0] );
assertEquals( "level2", a[1] );
a = Const.splitPath( "/level1/level2/lvl3", "/" );
assertEquals( 3, a.length );
assertEquals( "level1", a[0] );
assertEquals( "level2", a[1] );
assertEquals( "lvl3", a[2] );
a = Const.splitPath( "level1/level2/lvl3", "/" );
assertEquals( 3, a.length );
assertEquals( "level1", a[0] );
assertEquals( "level2", a[1] );
assertEquals( "lvl3", a[2] );
}
@Test
public void testRound_BigDecimal() {
assertEquals( new BigDecimal( "1.0" ), Const.round( new BigDecimal( "1.0" ), 0, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "1.0" ), Const.round( new BigDecimal( "1.0" ), 0, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "1.0" ), Const.round( new BigDecimal( "1.0" ), 0, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "1.0" ), Const.round( new BigDecimal( "1.0" ), 0, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "1.0" ), Const.round( new BigDecimal( "1.0" ), 0, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "1.0" ), Const.round( new BigDecimal( "1.0" ), 0, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "1.0" ), Const.round( new BigDecimal( "1.0" ), 0, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "1.0" ), Const.round( new BigDecimal( "1.0" ), 0, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "2.0" ), Const.round( new BigDecimal( "1.2" ), 0, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "1.0" ), Const.round( new BigDecimal( "1.2" ), 0, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "2.0" ), Const.round( new BigDecimal( "1.2" ), 0, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "1.0" ), Const.round( new BigDecimal( "1.2" ), 0, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "1.0" ), Const.round( new BigDecimal( "1.2" ), 0, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "1.0" ), Const.round( new BigDecimal( "1.2" ), 0, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "1.0" ), Const.round( new BigDecimal( "1.2" ), 0, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "1.0" ), Const.round( new BigDecimal( "1.2" ), 0, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "2.0" ), Const.round( new BigDecimal( "1.5" ), 0, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "1.0" ), Const.round( new BigDecimal( "1.5" ), 0, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "2.0" ), Const.round( new BigDecimal( "1.5" ), 0, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "1.0" ), Const.round( new BigDecimal( "1.5" ), 0, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "2.0" ), Const.round( new BigDecimal( "1.5" ), 0, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "1.0" ), Const.round( new BigDecimal( "1.5" ), 0, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "2.0" ), Const.round( new BigDecimal( "1.5" ), 0, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "2.0" ), Const.round( new BigDecimal( "1.5" ), 0, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "2.0" ), Const.round( new BigDecimal( "1.7" ), 0, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "1.0" ), Const.round( new BigDecimal( "1.7" ), 0, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "2.0" ), Const.round( new BigDecimal( "1.7" ), 0, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "1.0" ), Const.round( new BigDecimal( "1.7" ), 0, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "2.0" ), Const.round( new BigDecimal( "1.7" ), 0, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "2.0" ), Const.round( new BigDecimal( "1.7" ), 0, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "2.0" ), Const.round( new BigDecimal( "1.7" ), 0, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "2.0" ), Const.round( new BigDecimal( "1.7" ), 0, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "2.0" ), Const.round( new BigDecimal( "2.0" ), 0, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "2.0" ), Const.round( new BigDecimal( "2.0" ), 0, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "2.0" ), Const.round( new BigDecimal( "2.0" ), 0, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "2.0" ), Const.round( new BigDecimal( "2.0" ), 0, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "2.0" ), Const.round( new BigDecimal( "2.0" ), 0, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "2.0" ), Const.round( new BigDecimal( "2.0" ), 0, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "2.0" ), Const.round( new BigDecimal( "2.0" ), 0, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "2.0" ), Const.round( new BigDecimal( "2.0" ), 0, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "3.0" ), Const.round( new BigDecimal( "2.2" ), 0, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "2.0" ), Const.round( new BigDecimal( "2.2" ), 0, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "3.0" ), Const.round( new BigDecimal( "2.2" ), 0, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "2.0" ), Const.round( new BigDecimal( "2.2" ), 0, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "2.0" ), Const.round( new BigDecimal( "2.2" ), 0, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "2.0" ), Const.round( new BigDecimal( "2.2" ), 0, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "2.0" ), Const.round( new BigDecimal( "2.2" ), 0, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "2.0" ), Const.round( new BigDecimal( "2.2" ), 0, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "3.0" ), Const.round( new BigDecimal( "2.5" ), 0, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "2.0" ), Const.round( new BigDecimal( "2.5" ), 0, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "3.0" ), Const.round( new BigDecimal( "2.5" ), 0, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "2.0" ), Const.round( new BigDecimal( "2.5" ), 0, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "3.0" ), Const.round( new BigDecimal( "2.5" ), 0, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "2.0" ), Const.round( new BigDecimal( "2.5" ), 0, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "2.0" ), Const.round( new BigDecimal( "2.5" ), 0, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "3.0" ), Const.round( new BigDecimal( "2.5" ), 0, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "3.0" ), Const.round( new BigDecimal( "2.7" ), 0, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "2.0" ), Const.round( new BigDecimal( "2.7" ), 0, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "3.0" ), Const.round( new BigDecimal( "2.7" ), 0, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "2.0" ), Const.round( new BigDecimal( "2.7" ), 0, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "3.0" ), Const.round( new BigDecimal( "2.7" ), 0, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "3.0" ), Const.round( new BigDecimal( "2.7" ), 0, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "3.0" ), Const.round( new BigDecimal( "2.7" ), 0, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "3.0" ), Const.round( new BigDecimal( "2.7" ), 0, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "-1.0" ), Const.round( new BigDecimal( "-1.0" ), 0, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "-1.0" ), Const.round( new BigDecimal( "-1.0" ), 0, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "-1.0" ), Const.round( new BigDecimal( "-1.0" ), 0, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "-1.0" ), Const.round( new BigDecimal( "-1.0" ), 0, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "-1.0" ), Const.round( new BigDecimal( "-1.0" ), 0, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "-1.0" ), Const.round( new BigDecimal( "-1.0" ), 0, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "-1.0" ), Const.round( new BigDecimal( "-1.0" ), 0, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "-1.0" ), Const.round( new BigDecimal( "-1.0" ), 0, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "-2.0" ), Const.round( new BigDecimal( "-1.2" ), 0, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "-1.0" ), Const.round( new BigDecimal( "-1.2" ), 0, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "-1.0" ), Const.round( new BigDecimal( "-1.2" ), 0, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "-2.0" ), Const.round( new BigDecimal( "-1.2" ), 0, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "-1.0" ), Const.round( new BigDecimal( "-1.2" ), 0, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "-1.0" ), Const.round( new BigDecimal( "-1.2" ), 0, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "-1.0" ), Const.round( new BigDecimal( "-1.2" ), 0, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "-1.0" ), Const.round( new BigDecimal( "-1.2" ), 0, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "-2.0" ), Const.round( new BigDecimal( "-1.5" ), 0, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "-1.0" ), Const.round( new BigDecimal( "-1.5" ), 0, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "-1.0" ), Const.round( new BigDecimal( "-1.5" ), 0, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "-2.0" ), Const.round( new BigDecimal( "-1.5" ), 0, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "-2.0" ), Const.round( new BigDecimal( "-1.5" ), 0, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "-1.0" ), Const.round( new BigDecimal( "-1.5" ), 0, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "-2.0" ), Const.round( new BigDecimal( "-1.5" ), 0, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "-1.0" ), Const.round( new BigDecimal( "-1.5" ), 0, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "-2.0" ), Const.round( new BigDecimal( "-1.7" ), 0, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "-1.0" ), Const.round( new BigDecimal( "-1.7" ), 0, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "-1.0" ), Const.round( new BigDecimal( "-1.7" ), 0, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "-2.0" ), Const.round( new BigDecimal( "-1.7" ), 0, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "-2.0" ), Const.round( new BigDecimal( "-1.7" ), 0, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "-2.0" ), Const.round( new BigDecimal( "-1.7" ), 0, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "-2.0" ), Const.round( new BigDecimal( "-1.7" ), 0, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "-2.0" ), Const.round( new BigDecimal( "-1.7" ), 0, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "-2.0" ), Const.round( new BigDecimal( "-2.0" ), 0, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "-2.0" ), Const.round( new BigDecimal( "-2.0" ), 0, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "-2.0" ), Const.round( new BigDecimal( "-2.0" ), 0, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "-2.0" ), Const.round( new BigDecimal( "-2.0" ), 0, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "-2.0" ), Const.round( new BigDecimal( "-2.0" ), 0, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "-2.0" ), Const.round( new BigDecimal( "-2.0" ), 0, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "-2.0" ), Const.round( new BigDecimal( "-2.0" ), 0, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "-2.0" ), Const.round( new BigDecimal( "-2.0" ), 0, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "-3.0" ), Const.round( new BigDecimal( "-2.2" ), 0, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "-2.0" ), Const.round( new BigDecimal( "-2.2" ), 0, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "-2.0" ), Const.round( new BigDecimal( "-2.2" ), 0, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "-3.0" ), Const.round( new BigDecimal( "-2.2" ), 0, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "-2.0" ), Const.round( new BigDecimal( "-2.2" ), 0, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "-2.0" ), Const.round( new BigDecimal( "-2.2" ), 0, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "-2.0" ), Const.round( new BigDecimal( "-2.2" ), 0, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "-2.0" ), Const.round( new BigDecimal( "-2.2" ), 0, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "-3.0" ), Const.round( new BigDecimal( "-2.5" ), 0, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "-2.0" ), Const.round( new BigDecimal( "-2.5" ), 0, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "-2.0" ), Const.round( new BigDecimal( "-2.5" ), 0, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "-3.0" ), Const.round( new BigDecimal( "-2.5" ), 0, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "-3.0" ), Const.round( new BigDecimal( "-2.5" ), 0, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "-2.0" ), Const.round( new BigDecimal( "-2.5" ), 0, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "-2.0" ), Const.round( new BigDecimal( "-2.5" ), 0, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "-2.0" ), Const.round( new BigDecimal( "-2.5" ), 0, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "-3.0" ), Const.round( new BigDecimal( "-2.7" ), 0, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "-2.0" ), Const.round( new BigDecimal( "-2.7" ), 0, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "-2.0" ), Const.round( new BigDecimal( "-2.7" ), 0, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "-3.0" ), Const.round( new BigDecimal( "-2.7" ), 0, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "-3.0" ), Const.round( new BigDecimal( "-2.7" ), 0, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "-3.0" ), Const.round( new BigDecimal( "-2.7" ), 0, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "-3.0" ), Const.round( new BigDecimal( "-2.7" ), 0, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "-3.0" ), Const.round( new BigDecimal( "-2.7" ), 0, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "0.010" ), Const.round( new BigDecimal( "0.010" ), 2, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "0.010" ), Const.round( new BigDecimal( "0.010" ), 2, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "0.010" ), Const.round( new BigDecimal( "0.010" ), 2, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "0.010" ), Const.round( new BigDecimal( "0.010" ), 2, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "0.010" ), Const.round( new BigDecimal( "0.010" ), 2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "0.010" ), Const.round( new BigDecimal( "0.010" ), 2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "0.010" ), Const.round( new BigDecimal( "0.010" ), 2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "0.010" ), Const.round( new BigDecimal( "0.010" ), 2, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "0.020" ), Const.round( new BigDecimal( "0.012" ), 2, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "0.010" ), Const.round( new BigDecimal( "0.012" ), 2, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "0.020" ), Const.round( new BigDecimal( "0.012" ), 2, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "0.010" ), Const.round( new BigDecimal( "0.012" ), 2, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "0.010" ), Const.round( new BigDecimal( "0.012" ), 2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "0.010" ), Const.round( new BigDecimal( "0.012" ), 2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "0.010" ), Const.round( new BigDecimal( "0.012" ), 2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "0.010" ), Const.round( new BigDecimal( "0.012" ), 2, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "0.020" ), Const.round( new BigDecimal( "0.015" ), 2, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "0.010" ), Const.round( new BigDecimal( "0.015" ), 2, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "0.020" ), Const.round( new BigDecimal( "0.015" ), 2, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "0.010" ), Const.round( new BigDecimal( "0.015" ), 2, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "0.020" ), Const.round( new BigDecimal( "0.015" ), 2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "0.010" ), Const.round( new BigDecimal( "0.015" ), 2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "0.020" ), Const.round( new BigDecimal( "0.015" ), 2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "0.020" ), Const.round( new BigDecimal( "0.015" ), 2, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "0.020" ), Const.round( new BigDecimal( "0.017" ), 2, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "0.010" ), Const.round( new BigDecimal( "0.017" ), 2, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "0.020" ), Const.round( new BigDecimal( "0.017" ), 2, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "0.010" ), Const.round( new BigDecimal( "0.017" ), 2, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "0.020" ), Const.round( new BigDecimal( "0.017" ), 2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "0.020" ), Const.round( new BigDecimal( "0.017" ), 2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "0.020" ), Const.round( new BigDecimal( "0.017" ), 2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "0.020" ), Const.round( new BigDecimal( "0.017" ), 2, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "0.020" ), Const.round( new BigDecimal( "0.020" ), 2, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "0.020" ), Const.round( new BigDecimal( "0.020" ), 2, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "0.020" ), Const.round( new BigDecimal( "0.020" ), 2, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "0.020" ), Const.round( new BigDecimal( "0.020" ), 2, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "0.020" ), Const.round( new BigDecimal( "0.020" ), 2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "0.020" ), Const.round( new BigDecimal( "0.020" ), 2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "0.020" ), Const.round( new BigDecimal( "0.020" ), 2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "0.020" ), Const.round( new BigDecimal( "0.020" ), 2, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "0.030" ), Const.round( new BigDecimal( "0.022" ), 2, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "0.020" ), Const.round( new BigDecimal( "0.022" ), 2, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "0.030" ), Const.round( new BigDecimal( "0.022" ), 2, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "0.020" ), Const.round( new BigDecimal( "0.022" ), 2, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "0.020" ), Const.round( new BigDecimal( "0.022" ), 2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "0.020" ), Const.round( new BigDecimal( "0.022" ), 2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "0.020" ), Const.round( new BigDecimal( "0.022" ), 2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "0.020" ), Const.round( new BigDecimal( "0.022" ), 2, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "0.030" ), Const.round( new BigDecimal( "0.025" ), 2, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "0.020" ), Const.round( new BigDecimal( "0.025" ), 2, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "0.030" ), Const.round( new BigDecimal( "0.025" ), 2, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "0.020" ), Const.round( new BigDecimal( "0.025" ), 2, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "0.030" ), Const.round( new BigDecimal( "0.025" ), 2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "0.020" ), Const.round( new BigDecimal( "0.025" ), 2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "0.020" ), Const.round( new BigDecimal( "0.025" ), 2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "0.030" ), Const.round( new BigDecimal( "0.025" ), 2, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "0.030" ), Const.round( new BigDecimal( "0.027" ), 2, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "0.020" ), Const.round( new BigDecimal( "0.027" ), 2, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "0.030" ), Const.round( new BigDecimal( "0.027" ), 2, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "0.020" ), Const.round( new BigDecimal( "0.027" ), 2, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "0.030" ), Const.round( new BigDecimal( "0.027" ), 2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "0.030" ), Const.round( new BigDecimal( "0.027" ), 2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "0.030" ), Const.round( new BigDecimal( "0.027" ), 2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "0.030" ), Const.round( new BigDecimal( "0.027" ), 2, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "-0.010" ), Const.round( new BigDecimal( "-0.010" ), 2, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "-0.010" ), Const.round( new BigDecimal( "-0.010" ), 2, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "-0.010" ), Const.round( new BigDecimal( "-0.010" ), 2, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "-0.010" ), Const.round( new BigDecimal( "-0.010" ), 2, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "-0.010" ), Const.round( new BigDecimal( "-0.010" ), 2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "-0.010" ), Const.round( new BigDecimal( "-0.010" ), 2,
BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "-0.010" ), Const.round( new BigDecimal( "-0.010" ), 2,
BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "-0.010" ), Const.round( new BigDecimal( "-0.010" ), 2, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "-0.020" ), Const.round( new BigDecimal( "-0.012" ), 2, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "-0.010" ), Const.round( new BigDecimal( "-0.012" ), 2, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "-0.010" ), Const.round( new BigDecimal( "-0.012" ), 2, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "-0.020" ), Const.round( new BigDecimal( "-0.012" ), 2, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "-0.010" ), Const.round( new BigDecimal( "-0.012" ), 2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "-0.010" ), Const.round( new BigDecimal( "-0.012" ), 2,
BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "-0.010" ), Const.round( new BigDecimal( "-0.012" ), 2,
BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "-0.010" ), Const.round( new BigDecimal( "-0.012" ), 2, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "-0.020" ), Const.round( new BigDecimal( "-0.015" ), 2, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "-0.010" ), Const.round( new BigDecimal( "-0.015" ), 2, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "-0.010" ), Const.round( new BigDecimal( "-0.015" ), 2, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "-0.020" ), Const.round( new BigDecimal( "-0.015" ), 2, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "-0.020" ), Const.round( new BigDecimal( "-0.015" ), 2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "-0.010" ), Const.round( new BigDecimal( "-0.015" ), 2,
BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "-0.020" ), Const.round( new BigDecimal( "-0.015" ), 2,
BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "-0.010" ), Const.round( new BigDecimal( "-0.015" ), 2, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "-0.020" ), Const.round( new BigDecimal( "-0.017" ), 2, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "-0.010" ), Const.round( new BigDecimal( "-0.017" ), 2, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "-0.010" ), Const.round( new BigDecimal( "-0.017" ), 2, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "-0.020" ), Const.round( new BigDecimal( "-0.017" ), 2, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "-0.020" ), Const.round( new BigDecimal( "-0.017" ), 2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "-0.020" ), Const.round( new BigDecimal( "-0.017" ), 2,
BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "-0.020" ), Const.round( new BigDecimal( "-0.017" ), 2,
BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "-0.020" ), Const.round( new BigDecimal( "-0.017" ), 2, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "-0.020" ), Const.round( new BigDecimal( "-0.020" ), 2, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "-0.020" ), Const.round( new BigDecimal( "-0.020" ), 2, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "-0.020" ), Const.round( new BigDecimal( "-0.020" ), 2, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "-0.020" ), Const.round( new BigDecimal( "-0.020" ), 2, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "-0.020" ), Const.round( new BigDecimal( "-0.020" ), 2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "-0.020" ), Const.round( new BigDecimal( "-0.020" ), 2,
BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "-0.020" ), Const.round( new BigDecimal( "-0.020" ), 2,
BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "-0.020" ), Const.round( new BigDecimal( "-0.020" ), 2, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "-0.030" ), Const.round( new BigDecimal( "-0.022" ), 2, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "-0.020" ), Const.round( new BigDecimal( "-0.022" ), 2, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "-0.020" ), Const.round( new BigDecimal( "-0.022" ), 2, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "-0.030" ), Const.round( new BigDecimal( "-0.022" ), 2, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "-0.020" ), Const.round( new BigDecimal( "-0.022" ), 2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "-0.020" ), Const.round( new BigDecimal( "-0.022" ), 2,
BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "-0.020" ), Const.round( new BigDecimal( "-0.022" ), 2,
BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "-0.020" ), Const.round( new BigDecimal( "-0.022" ), 2, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "-0.030" ), Const.round( new BigDecimal( "-0.025" ), 2, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "-0.020" ), Const.round( new BigDecimal( "-0.025" ), 2, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "-0.020" ), Const.round( new BigDecimal( "-0.025" ), 2, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "-0.030" ), Const.round( new BigDecimal( "-0.025" ), 2, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "-0.030" ), Const.round( new BigDecimal( "-0.025" ), 2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "-0.020" ), Const.round( new BigDecimal( "-0.025" ), 2,
BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "-0.020" ), Const.round( new BigDecimal( "-0.025" ), 2,
BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "-0.020" ), Const.round( new BigDecimal( "-0.025" ), 2, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "-0.030" ), Const.round( new BigDecimal( "-0.027" ), 2, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "-0.020" ), Const.round( new BigDecimal( "-0.027" ), 2, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "-0.020" ), Const.round( new BigDecimal( "-0.027" ), 2, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "-0.030" ), Const.round( new BigDecimal( "-0.027" ), 2, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "-0.030" ), Const.round( new BigDecimal( "-0.027" ), 2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "-0.030" ), Const.round( new BigDecimal( "-0.027" ), 2,
BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "-0.030" ), Const.round( new BigDecimal( "-0.027" ), 2,
BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "-0.030" ), Const.round( new BigDecimal( "-0.027" ), 2, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "100.0" ), Const.round( new BigDecimal( "100.0" ), -2, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "100.0" ), Const.round( new BigDecimal( "100.0" ), -2, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "100.0" ), Const.round( new BigDecimal( "100.0" ), -2, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "100.0" ), Const.round( new BigDecimal( "100.0" ), -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "100.0" ), Const.round( new BigDecimal( "100.0" ), -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "100.0" ), Const.round( new BigDecimal( "100.0" ), -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "100.0" ), Const.round( new BigDecimal( "100.0" ), -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "100.0" ), Const.round( new BigDecimal( "100.0" ), -2, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "200.0" ), Const.round( new BigDecimal( "120.0" ), -2, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "100.0" ), Const.round( new BigDecimal( "120.0" ), -2, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "200.0" ), Const.round( new BigDecimal( "120.0" ), -2, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "100.0" ), Const.round( new BigDecimal( "120.0" ), -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "100.0" ), Const.round( new BigDecimal( "120.0" ), -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "100.0" ), Const.round( new BigDecimal( "120.0" ), -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "100.0" ), Const.round( new BigDecimal( "120.0" ), -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "100.0" ), Const.round( new BigDecimal( "120.0" ), -2, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "200.0" ), Const.round( new BigDecimal( "150.0" ), -2, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "100.0" ), Const.round( new BigDecimal( "150.0" ), -2, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "200.0" ), Const.round( new BigDecimal( "150.0" ), -2, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "100.0" ), Const.round( new BigDecimal( "150.0" ), -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "200.0" ), Const.round( new BigDecimal( "150.0" ), -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "100.0" ), Const.round( new BigDecimal( "150.0" ), -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "200.0" ), Const.round( new BigDecimal( "150.0" ), -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "200.0" ), Const.round( new BigDecimal( "150.0" ), -2, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "200.0" ), Const.round( new BigDecimal( "170.0" ), -2, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "100.0" ), Const.round( new BigDecimal( "170.0" ), -2, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "200.0" ), Const.round( new BigDecimal( "170.0" ), -2, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "100.0" ), Const.round( new BigDecimal( "170.0" ), -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "200.0" ), Const.round( new BigDecimal( "170.0" ), -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "200.0" ), Const.round( new BigDecimal( "170.0" ), -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "200.0" ), Const.round( new BigDecimal( "170.0" ), -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "200.0" ), Const.round( new BigDecimal( "170.0" ), -2, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "200.0" ), Const.round( new BigDecimal( "200.0" ), -2, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "200.0" ), Const.round( new BigDecimal( "200.0" ), -2, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "200.0" ), Const.round( new BigDecimal( "200.0" ), -2, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "200.0" ), Const.round( new BigDecimal( "200.0" ), -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "200.0" ), Const.round( new BigDecimal( "200.0" ), -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "200.0" ), Const.round( new BigDecimal( "200.0" ), -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "200.0" ), Const.round( new BigDecimal( "200.0" ), -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "200.0" ), Const.round( new BigDecimal( "200.0" ), -2, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "300.0" ), Const.round( new BigDecimal( "220.0" ), -2, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "200.0" ), Const.round( new BigDecimal( "220.0" ), -2, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "300.0" ), Const.round( new BigDecimal( "220.0" ), -2, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "200.0" ), Const.round( new BigDecimal( "220.0" ), -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "200.0" ), Const.round( new BigDecimal( "220.0" ), -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "200.0" ), Const.round( new BigDecimal( "220.0" ), -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "200.0" ), Const.round( new BigDecimal( "220.0" ), -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "200.0" ), Const.round( new BigDecimal( "220.0" ), -2, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "300.0" ), Const.round( new BigDecimal( "250.0" ), -2, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "200.0" ), Const.round( new BigDecimal( "250.0" ), -2, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "300.0" ), Const.round( new BigDecimal( "250.0" ), -2, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "200.0" ), Const.round( new BigDecimal( "250.0" ), -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "300.0" ), Const.round( new BigDecimal( "250.0" ), -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "200.0" ), Const.round( new BigDecimal( "250.0" ), -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "200.0" ), Const.round( new BigDecimal( "250.0" ), -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "300.0" ), Const.round( new BigDecimal( "250.0" ), -2, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "300.0" ), Const.round( new BigDecimal( "270.0" ), -2, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "200.0" ), Const.round( new BigDecimal( "270.0" ), -2, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "300.0" ), Const.round( new BigDecimal( "270.0" ), -2, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "200.0" ), Const.round( new BigDecimal( "270.0" ), -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "300.0" ), Const.round( new BigDecimal( "270.0" ), -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "300.0" ), Const.round( new BigDecimal( "270.0" ), -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "300.0" ), Const.round( new BigDecimal( "270.0" ), -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "300.0" ), Const.round( new BigDecimal( "270.0" ), -2, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "-100.0" ), Const.round( new BigDecimal( "-100.0" ), -2, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "-100.0" ), Const.round( new BigDecimal( "-100.0" ), -2, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "-100.0" ), Const.round( new BigDecimal( "-100.0" ), -2, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "-100.0" ), Const.round( new BigDecimal( "-100.0" ), -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "-100.0" ), Const.round( new BigDecimal( "-100.0" ), -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "-100.0" ), Const.round( new BigDecimal( "-100.0" ), -2,
BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "-100.0" ), Const.round( new BigDecimal( "-100.0" ), -2,
BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "-100.0" ), Const.round( new BigDecimal( "-100.0" ), -2, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "-200.0" ), Const.round( new BigDecimal( "-120.0" ), -2, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "-100.0" ), Const.round( new BigDecimal( "-120.0" ), -2, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "-100.0" ), Const.round( new BigDecimal( "-120.0" ), -2, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "-200.0" ), Const.round( new BigDecimal( "-120.0" ), -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "-100.0" ), Const.round( new BigDecimal( "-120.0" ), -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "-100.0" ), Const.round( new BigDecimal( "-120.0" ), -2,
BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "-100.0" ), Const.round( new BigDecimal( "-120.0" ), -2,
BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "-100.0" ), Const.round( new BigDecimal( "-120.0" ), -2, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "-200.0" ), Const.round( new BigDecimal( "-150.0" ), -2, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "-100.0" ), Const.round( new BigDecimal( "-150.0" ), -2, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "-100.0" ), Const.round( new BigDecimal( "-150.0" ), -2, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "-200.0" ), Const.round( new BigDecimal( "-150.0" ), -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "-200.0" ), Const.round( new BigDecimal( "-150.0" ), -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "-100.0" ), Const.round( new BigDecimal( "-150.0" ), -2,
BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "-200.0" ), Const.round( new BigDecimal( "-150.0" ), -2,
BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "-100.0" ), Const.round( new BigDecimal( "-150.0" ), -2, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "-200.0" ), Const.round( new BigDecimal( "-170.0" ), -2, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "-100.0" ), Const.round( new BigDecimal( "-170.0" ), -2, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "-100.0" ), Const.round( new BigDecimal( "-170.0" ), -2, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "-200.0" ), Const.round( new BigDecimal( "-170.0" ), -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "-200.0" ), Const.round( new BigDecimal( "-170.0" ), -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "-200.0" ), Const.round( new BigDecimal( "-170.0" ), -2,
BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "-200.0" ), Const.round( new BigDecimal( "-170.0" ), -2,
BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "-200.0" ), Const.round( new BigDecimal( "-170.0" ), -2, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "-200.0" ), Const.round( new BigDecimal( "-200.0" ), -2, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "-200.0" ), Const.round( new BigDecimal( "-200.0" ), -2, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "-200.0" ), Const.round( new BigDecimal( "-200.0" ), -2, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "-200.0" ), Const.round( new BigDecimal( "-200.0" ), -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "-200.0" ), Const.round( new BigDecimal( "-200.0" ), -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "-200.0" ), Const.round( new BigDecimal( "-200.0" ), -2,
BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "-200.0" ), Const.round( new BigDecimal( "-200.0" ), -2,
BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "-200.0" ), Const.round( new BigDecimal( "-200.0" ), -2, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "-300.0" ), Const.round( new BigDecimal( "-220.0" ), -2, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "-200.0" ), Const.round( new BigDecimal( "-220.0" ), -2, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "-200.0" ), Const.round( new BigDecimal( "-220.0" ), -2, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "-300.0" ), Const.round( new BigDecimal( "-220.0" ), -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "-200.0" ), Const.round( new BigDecimal( "-220.0" ), -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "-200.0" ), Const.round( new BigDecimal( "-220.0" ), -2,
BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "-200.0" ), Const.round( new BigDecimal( "-220.0" ), -2,
BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "-200.0" ), Const.round( new BigDecimal( "-220.0" ), -2, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "-300.0" ), Const.round( new BigDecimal( "-250.0" ), -2, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "-200.0" ), Const.round( new BigDecimal( "-250.0" ), -2, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "-200.0" ), Const.round( new BigDecimal( "-250.0" ), -2, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "-300.0" ), Const.round( new BigDecimal( "-250.0" ), -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "-300.0" ), Const.round( new BigDecimal( "-250.0" ), -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "-200.0" ), Const.round( new BigDecimal( "-250.0" ), -2,
BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "-200.0" ), Const.round( new BigDecimal( "-250.0" ), -2,
BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "-200.0" ), Const.round( new BigDecimal( "-250.0" ), -2, Const.ROUND_HALF_CEILING ) );
assertEquals( new BigDecimal( "-300.0" ), Const.round( new BigDecimal( "-270.0" ), -2, BigDecimal.ROUND_UP ) );
assertEquals( new BigDecimal( "-200.0" ), Const.round( new BigDecimal( "-270.0" ), -2, BigDecimal.ROUND_DOWN ) );
assertEquals( new BigDecimal( "-200.0" ), Const.round( new BigDecimal( "-270.0" ), -2, BigDecimal.ROUND_CEILING ) );
assertEquals( new BigDecimal( "-300.0" ), Const.round( new BigDecimal( "-270.0" ), -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( new BigDecimal( "-300.0" ), Const.round( new BigDecimal( "-270.0" ), -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( new BigDecimal( "-300.0" ), Const.round( new BigDecimal( "-270.0" ), -2,
BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( new BigDecimal( "-300.0" ), Const.round( new BigDecimal( "-270.0" ), -2,
BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( new BigDecimal( "-300.0" ), Const.round( new BigDecimal( "-270.0" ), -2, Const.ROUND_HALF_CEILING ) );
}
@Test
public void testRound() {
assertEquals( 1.0, Const.round( 1.0, 0, BigDecimal.ROUND_UP ) );
assertEquals( 1.0, Const.round( 1.0, 0, BigDecimal.ROUND_DOWN ) );
assertEquals( 1.0, Const.round( 1.0, 0, BigDecimal.ROUND_CEILING ) );
assertEquals( 1.0, Const.round( 1.0, 0, BigDecimal.ROUND_FLOOR ) );
assertEquals( 1.0, Const.round( 1.0, 0, BigDecimal.ROUND_HALF_UP ) );
assertEquals( 1.0, Const.round( 1.0, 0, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( 1.0, Const.round( 1.0, 0, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( 1.0, Const.round( 1.0, 0, Const.ROUND_HALF_CEILING ) );
assertEquals( 2.0, Const.round( 1.2, 0, BigDecimal.ROUND_UP ) );
assertEquals( 1.0, Const.round( 1.2, 0, BigDecimal.ROUND_DOWN ) );
assertEquals( 2.0, Const.round( 1.2, 0, BigDecimal.ROUND_CEILING ) );
assertEquals( 1.0, Const.round( 1.2, 0, BigDecimal.ROUND_FLOOR ) );
assertEquals( 1.0, Const.round( 1.2, 0, BigDecimal.ROUND_HALF_UP ) );
assertEquals( 1.0, Const.round( 1.2, 0, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( 1.0, Const.round( 1.2, 0, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( 1.0, Const.round( 1.2, 0, Const.ROUND_HALF_CEILING ) );
assertEquals( 2.0, Const.round( 1.5, 0, BigDecimal.ROUND_UP ) );
assertEquals( 1.0, Const.round( 1.5, 0, BigDecimal.ROUND_DOWN ) );
assertEquals( 2.0, Const.round( 1.5, 0, BigDecimal.ROUND_CEILING ) );
assertEquals( 1.0, Const.round( 1.5, 0, BigDecimal.ROUND_FLOOR ) );
assertEquals( 2.0, Const.round( 1.5, 0, BigDecimal.ROUND_HALF_UP ) );
assertEquals( 1.0, Const.round( 1.5, 0, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( 2.0, Const.round( 1.5, 0, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( 2.0, Const.round( 1.5, 0, Const.ROUND_HALF_CEILING ) );
assertEquals( 2.0, Const.round( 1.7, 0, BigDecimal.ROUND_UP ) );
assertEquals( 1.0, Const.round( 1.7, 0, BigDecimal.ROUND_DOWN ) );
assertEquals( 2.0, Const.round( 1.7, 0, BigDecimal.ROUND_CEILING ) );
assertEquals( 1.0, Const.round( 1.7, 0, BigDecimal.ROUND_FLOOR ) );
assertEquals( 2.0, Const.round( 1.7, 0, BigDecimal.ROUND_HALF_UP ) );
assertEquals( 2.0, Const.round( 1.7, 0, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( 2.0, Const.round( 1.7, 0, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( 2.0, Const.round( 1.7, 0, Const.ROUND_HALF_CEILING ) );
assertEquals( 2.0, Const.round( 2.0, 0, BigDecimal.ROUND_UP ) );
assertEquals( 2.0, Const.round( 2.0, 0, BigDecimal.ROUND_DOWN ) );
assertEquals( 2.0, Const.round( 2.0, 0, BigDecimal.ROUND_CEILING ) );
assertEquals( 2.0, Const.round( 2.0, 0, BigDecimal.ROUND_FLOOR ) );
assertEquals( 2.0, Const.round( 2.0, 0, BigDecimal.ROUND_HALF_UP ) );
assertEquals( 2.0, Const.round( 2.0, 0, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( 2.0, Const.round( 2.0, 0, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( 2.0, Const.round( 2.0, 0, Const.ROUND_HALF_CEILING ) );
assertEquals( 3.0, Const.round( 2.2, 0, BigDecimal.ROUND_UP ) );
assertEquals( 2.0, Const.round( 2.2, 0, BigDecimal.ROUND_DOWN ) );
assertEquals( 3.0, Const.round( 2.2, 0, BigDecimal.ROUND_CEILING ) );
assertEquals( 2.0, Const.round( 2.2, 0, BigDecimal.ROUND_FLOOR ) );
assertEquals( 2.0, Const.round( 2.2, 0, BigDecimal.ROUND_HALF_UP ) );
assertEquals( 2.0, Const.round( 2.2, 0, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( 2.0, Const.round( 2.2, 0, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( 2.0, Const.round( 2.2, 0, Const.ROUND_HALF_CEILING ) );
assertEquals( 3.0, Const.round( 2.5, 0, BigDecimal.ROUND_UP ) );
assertEquals( 2.0, Const.round( 2.5, 0, BigDecimal.ROUND_DOWN ) );
assertEquals( 3.0, Const.round( 2.5, 0, BigDecimal.ROUND_CEILING ) );
assertEquals( 2.0, Const.round( 2.5, 0, BigDecimal.ROUND_FLOOR ) );
assertEquals( 3.0, Const.round( 2.5, 0, BigDecimal.ROUND_HALF_UP ) );
assertEquals( 2.0, Const.round( 2.5, 0, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( 2.0, Const.round( 2.5, 0, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( 3.0, Const.round( 2.5, 0, Const.ROUND_HALF_CEILING ) );
assertEquals( 3.0, Const.round( 2.7, 0, BigDecimal.ROUND_UP ) );
assertEquals( 2.0, Const.round( 2.7, 0, BigDecimal.ROUND_DOWN ) );
assertEquals( 3.0, Const.round( 2.7, 0, BigDecimal.ROUND_CEILING ) );
assertEquals( 2.0, Const.round( 2.7, 0, BigDecimal.ROUND_FLOOR ) );
assertEquals( 3.0, Const.round( 2.7, 0, BigDecimal.ROUND_HALF_UP ) );
assertEquals( 3.0, Const.round( 2.7, 0, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( 3.0, Const.round( 2.7, 0, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( 3.0, Const.round( 2.7, 0, Const.ROUND_HALF_CEILING ) );
assertEquals( -1.0, Const.round( -1.0, 0, BigDecimal.ROUND_UP ) );
assertEquals( -1.0, Const.round( -1.0, 0, BigDecimal.ROUND_DOWN ) );
assertEquals( -1.0, Const.round( -1.0, 0, BigDecimal.ROUND_CEILING ) );
assertEquals( -1.0, Const.round( -1.0, 0, BigDecimal.ROUND_FLOOR ) );
assertEquals( -1.0, Const.round( -1.0, 0, BigDecimal.ROUND_HALF_UP ) );
assertEquals( -1.0, Const.round( -1.0, 0, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( -1.0, Const.round( -1.0, 0, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( -1.0, Const.round( -1.0, 0, Const.ROUND_HALF_CEILING ) );
assertEquals( -2.0, Const.round( -1.2, 0, BigDecimal.ROUND_UP ) );
assertEquals( -1.0, Const.round( -1.2, 0, BigDecimal.ROUND_DOWN ) );
assertEquals( -1.0, Const.round( -1.2, 0, BigDecimal.ROUND_CEILING ) );
assertEquals( -2.0, Const.round( -1.2, 0, BigDecimal.ROUND_FLOOR ) );
assertEquals( -1.0, Const.round( -1.2, 0, BigDecimal.ROUND_HALF_UP ) );
assertEquals( -1.0, Const.round( -1.2, 0, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( -1.0, Const.round( -1.2, 0, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( -1.0, Const.round( -1.2, 0, Const.ROUND_HALF_CEILING ) );
assertEquals( -2.0, Const.round( -1.5, 0, BigDecimal.ROUND_UP ) );
assertEquals( -1.0, Const.round( -1.5, 0, BigDecimal.ROUND_DOWN ) );
assertEquals( -1.0, Const.round( -1.5, 0, BigDecimal.ROUND_CEILING ) );
assertEquals( -2.0, Const.round( -1.5, 0, BigDecimal.ROUND_FLOOR ) );
assertEquals( -2.0, Const.round( -1.5, 0, BigDecimal.ROUND_HALF_UP ) );
assertEquals( -1.0, Const.round( -1.5, 0, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( -2.0, Const.round( -1.5, 0, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( -1.0, Const.round( -1.5, 0, Const.ROUND_HALF_CEILING ) );
assertEquals( -2.0, Const.round( -1.7, 0, BigDecimal.ROUND_UP ) );
assertEquals( -1.0, Const.round( -1.7, 0, BigDecimal.ROUND_DOWN ) );
assertEquals( -1.0, Const.round( -1.7, 0, BigDecimal.ROUND_CEILING ) );
assertEquals( -2.0, Const.round( -1.7, 0, BigDecimal.ROUND_FLOOR ) );
assertEquals( -2.0, Const.round( -1.7, 0, BigDecimal.ROUND_HALF_UP ) );
assertEquals( -2.0, Const.round( -1.7, 0, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( -2.0, Const.round( -1.7, 0, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( -2.0, Const.round( -1.7, 0, Const.ROUND_HALF_CEILING ) );
assertEquals( -2.0, Const.round( -2.0, 0, BigDecimal.ROUND_UP ) );
assertEquals( -2.0, Const.round( -2.0, 0, BigDecimal.ROUND_DOWN ) );
assertEquals( -2.0, Const.round( -2.0, 0, BigDecimal.ROUND_CEILING ) );
assertEquals( -2.0, Const.round( -2.0, 0, BigDecimal.ROUND_FLOOR ) );
assertEquals( -2.0, Const.round( -2.0, 0, BigDecimal.ROUND_HALF_UP ) );
assertEquals( -2.0, Const.round( -2.0, 0, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( -2.0, Const.round( -2.0, 0, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( -2.0, Const.round( -2.0, 0, Const.ROUND_HALF_CEILING ) );
assertEquals( -3.0, Const.round( -2.2, 0, BigDecimal.ROUND_UP ) );
assertEquals( -2.0, Const.round( -2.2, 0, BigDecimal.ROUND_DOWN ) );
assertEquals( -2.0, Const.round( -2.2, 0, BigDecimal.ROUND_CEILING ) );
assertEquals( -3.0, Const.round( -2.2, 0, BigDecimal.ROUND_FLOOR ) );
assertEquals( -2.0, Const.round( -2.2, 0, BigDecimal.ROUND_HALF_UP ) );
assertEquals( -2.0, Const.round( -2.2, 0, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( -2.0, Const.round( -2.2, 0, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( -2.0, Const.round( -2.2, 0, Const.ROUND_HALF_CEILING ) );
assertEquals( -3.0, Const.round( -2.5, 0, BigDecimal.ROUND_UP ) );
assertEquals( -2.0, Const.round( -2.5, 0, BigDecimal.ROUND_DOWN ) );
assertEquals( -2.0, Const.round( -2.5, 0, BigDecimal.ROUND_CEILING ) );
assertEquals( -3.0, Const.round( -2.5, 0, BigDecimal.ROUND_FLOOR ) );
assertEquals( -3.0, Const.round( -2.5, 0, BigDecimal.ROUND_HALF_UP ) );
assertEquals( -2.0, Const.round( -2.5, 0, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( -2.0, Const.round( -2.5, 0, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( -2.0, Const.round( -2.5, 0, Const.ROUND_HALF_CEILING ) );
assertEquals( -3.0, Const.round( -2.7, 0, BigDecimal.ROUND_UP ) );
assertEquals( -2.0, Const.round( -2.7, 0, BigDecimal.ROUND_DOWN ) );
assertEquals( -2.0, Const.round( -2.7, 0, BigDecimal.ROUND_CEILING ) );
assertEquals( -3.0, Const.round( -2.7, 0, BigDecimal.ROUND_FLOOR ) );
assertEquals( -3.0, Const.round( -2.7, 0, BigDecimal.ROUND_HALF_UP ) );
assertEquals( -3.0, Const.round( -2.7, 0, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( -3.0, Const.round( -2.7, 0, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( -3.0, Const.round( -2.7, 0, Const.ROUND_HALF_CEILING ) );
assertEquals( 0.010, Const.round( 0.010, 2, BigDecimal.ROUND_UP ) );
assertEquals( 0.010, Const.round( 0.010, 2, BigDecimal.ROUND_DOWN ) );
assertEquals( 0.010, Const.round( 0.010, 2, BigDecimal.ROUND_CEILING ) );
assertEquals( 0.010, Const.round( 0.010, 2, BigDecimal.ROUND_FLOOR ) );
assertEquals( 0.010, Const.round( 0.010, 2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( 0.010, Const.round( 0.010, 2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( 0.010, Const.round( 0.010, 2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( 0.010, Const.round( 0.010, 2, Const.ROUND_HALF_CEILING ) );
assertEquals( 0.020, Const.round( 0.012, 2, BigDecimal.ROUND_UP ) );
assertEquals( 0.010, Const.round( 0.012, 2, BigDecimal.ROUND_DOWN ) );
assertEquals( 0.020, Const.round( 0.012, 2, BigDecimal.ROUND_CEILING ) );
assertEquals( 0.010, Const.round( 0.012, 2, BigDecimal.ROUND_FLOOR ) );
assertEquals( 0.010, Const.round( 0.012, 2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( 0.010, Const.round( 0.012, 2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( 0.010, Const.round( 0.012, 2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( 0.010, Const.round( 0.012, 2, Const.ROUND_HALF_CEILING ) );
assertEquals( 0.020, Const.round( 0.015, 2, BigDecimal.ROUND_UP ) );
assertEquals( 0.010, Const.round( 0.015, 2, BigDecimal.ROUND_DOWN ) );
assertEquals( 0.020, Const.round( 0.015, 2, BigDecimal.ROUND_CEILING ) );
assertEquals( 0.010, Const.round( 0.015, 2, BigDecimal.ROUND_FLOOR ) );
assertEquals( 0.020, Const.round( 0.015, 2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( 0.010, Const.round( 0.015, 2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( 0.020, Const.round( 0.015, 2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( 0.020, Const.round( 0.015, 2, Const.ROUND_HALF_CEILING ) );
assertEquals( 0.020, Const.round( 0.017, 2, BigDecimal.ROUND_UP ) );
assertEquals( 0.010, Const.round( 0.017, 2, BigDecimal.ROUND_DOWN ) );
assertEquals( 0.020, Const.round( 0.017, 2, BigDecimal.ROUND_CEILING ) );
assertEquals( 0.010, Const.round( 0.017, 2, BigDecimal.ROUND_FLOOR ) );
assertEquals( 0.020, Const.round( 0.017, 2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( 0.020, Const.round( 0.017, 2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( 0.020, Const.round( 0.017, 2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( 0.020, Const.round( 0.017, 2, Const.ROUND_HALF_CEILING ) );
assertEquals( 0.020, Const.round( 0.020, 2, BigDecimal.ROUND_UP ) );
assertEquals( 0.020, Const.round( 0.020, 2, BigDecimal.ROUND_DOWN ) );
assertEquals( 0.020, Const.round( 0.020, 2, BigDecimal.ROUND_CEILING ) );
assertEquals( 0.020, Const.round( 0.020, 2, BigDecimal.ROUND_FLOOR ) );
assertEquals( 0.020, Const.round( 0.020, 2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( 0.020, Const.round( 0.020, 2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( 0.020, Const.round( 0.020, 2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( 0.020, Const.round( 0.020, 2, Const.ROUND_HALF_CEILING ) );
assertEquals( 0.030, Const.round( 0.022, 2, BigDecimal.ROUND_UP ) );
assertEquals( 0.020, Const.round( 0.022, 2, BigDecimal.ROUND_DOWN ) );
assertEquals( 0.030, Const.round( 0.022, 2, BigDecimal.ROUND_CEILING ) );
assertEquals( 0.020, Const.round( 0.022, 2, BigDecimal.ROUND_FLOOR ) );
assertEquals( 0.020, Const.round( 0.022, 2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( 0.020, Const.round( 0.022, 2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( 0.020, Const.round( 0.022, 2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( 0.020, Const.round( 0.022, 2, Const.ROUND_HALF_CEILING ) );
assertEquals( 0.030, Const.round( 0.025, 2, BigDecimal.ROUND_UP ) );
assertEquals( 0.020, Const.round( 0.025, 2, BigDecimal.ROUND_DOWN ) );
assertEquals( 0.030, Const.round( 0.025, 2, BigDecimal.ROUND_CEILING ) );
assertEquals( 0.020, Const.round( 0.025, 2, BigDecimal.ROUND_FLOOR ) );
assertEquals( 0.030, Const.round( 0.025, 2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( 0.020, Const.round( 0.025, 2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( 0.020, Const.round( 0.025, 2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( 0.030, Const.round( 0.025, 2, Const.ROUND_HALF_CEILING ) );
assertEquals( 0.030, Const.round( 0.027, 2, BigDecimal.ROUND_UP ) );
assertEquals( 0.020, Const.round( 0.027, 2, BigDecimal.ROUND_DOWN ) );
assertEquals( 0.030, Const.round( 0.027, 2, BigDecimal.ROUND_CEILING ) );
assertEquals( 0.020, Const.round( 0.027, 2, BigDecimal.ROUND_FLOOR ) );
assertEquals( 0.030, Const.round( 0.027, 2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( 0.030, Const.round( 0.027, 2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( 0.030, Const.round( 0.027, 2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( 0.030, Const.round( 0.027, 2, Const.ROUND_HALF_CEILING ) );
assertEquals( -0.010, Const.round( -0.010, 2, BigDecimal.ROUND_UP ) );
assertEquals( -0.010, Const.round( -0.010, 2, BigDecimal.ROUND_DOWN ) );
assertEquals( -0.010, Const.round( -0.010, 2, BigDecimal.ROUND_CEILING ) );
assertEquals( -0.010, Const.round( -0.010, 2, BigDecimal.ROUND_FLOOR ) );
assertEquals( -0.010, Const.round( -0.010, 2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( -0.010, Const.round( -0.010, 2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( -0.010, Const.round( -0.010, 2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( -0.010, Const.round( -0.010, 2, Const.ROUND_HALF_CEILING ) );
assertEquals( -0.020, Const.round( -0.012, 2, BigDecimal.ROUND_UP ) );
assertEquals( -0.010, Const.round( -0.012, 2, BigDecimal.ROUND_DOWN ) );
assertEquals( -0.010, Const.round( -0.012, 2, BigDecimal.ROUND_CEILING ) );
assertEquals( -0.020, Const.round( -0.012, 2, BigDecimal.ROUND_FLOOR ) );
assertEquals( -0.010, Const.round( -0.012, 2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( -0.010, Const.round( -0.012, 2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( -0.010, Const.round( -0.012, 2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( -0.010, Const.round( -0.012, 2, Const.ROUND_HALF_CEILING ) );
assertEquals( -0.020, Const.round( -0.015, 2, BigDecimal.ROUND_UP ) );
assertEquals( -0.010, Const.round( -0.015, 2, BigDecimal.ROUND_DOWN ) );
assertEquals( -0.010, Const.round( -0.015, 2, BigDecimal.ROUND_CEILING ) );
assertEquals( -0.020, Const.round( -0.015, 2, BigDecimal.ROUND_FLOOR ) );
assertEquals( -0.020, Const.round( -0.015, 2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( -0.010, Const.round( -0.015, 2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( -0.020, Const.round( -0.015, 2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( -0.010, Const.round( -0.015, 2, Const.ROUND_HALF_CEILING ) );
assertEquals( -0.020, Const.round( -0.017, 2, BigDecimal.ROUND_UP ) );
assertEquals( -0.010, Const.round( -0.017, 2, BigDecimal.ROUND_DOWN ) );
assertEquals( -0.010, Const.round( -0.017, 2, BigDecimal.ROUND_CEILING ) );
assertEquals( -0.020, Const.round( -0.017, 2, BigDecimal.ROUND_FLOOR ) );
assertEquals( -0.020, Const.round( -0.017, 2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( -0.020, Const.round( -0.017, 2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( -0.020, Const.round( -0.017, 2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( -0.020, Const.round( -0.017, 2, Const.ROUND_HALF_CEILING ) );
assertEquals( -0.020, Const.round( -0.020, 2, BigDecimal.ROUND_UP ) );
assertEquals( -0.020, Const.round( -0.020, 2, BigDecimal.ROUND_DOWN ) );
assertEquals( -0.020, Const.round( -0.020, 2, BigDecimal.ROUND_CEILING ) );
assertEquals( -0.020, Const.round( -0.020, 2, BigDecimal.ROUND_FLOOR ) );
assertEquals( -0.020, Const.round( -0.020, 2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( -0.020, Const.round( -0.020, 2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( -0.020, Const.round( -0.020, 2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( -0.020, Const.round( -0.020, 2, Const.ROUND_HALF_CEILING ) );
assertEquals( -0.030, Const.round( -0.022, 2, BigDecimal.ROUND_UP ) );
assertEquals( -0.020, Const.round( -0.022, 2, BigDecimal.ROUND_DOWN ) );
assertEquals( -0.020, Const.round( -0.022, 2, BigDecimal.ROUND_CEILING ) );
assertEquals( -0.030, Const.round( -0.022, 2, BigDecimal.ROUND_FLOOR ) );
assertEquals( -0.020, Const.round( -0.022, 2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( -0.020, Const.round( -0.022, 2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( -0.020, Const.round( -0.022, 2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( -0.020, Const.round( -0.022, 2, Const.ROUND_HALF_CEILING ) );
assertEquals( -0.030, Const.round( -0.025, 2, BigDecimal.ROUND_UP ) );
assertEquals( -0.020, Const.round( -0.025, 2, BigDecimal.ROUND_DOWN ) );
assertEquals( -0.020, Const.round( -0.025, 2, BigDecimal.ROUND_CEILING ) );
assertEquals( -0.030, Const.round( -0.025, 2, BigDecimal.ROUND_FLOOR ) );
assertEquals( -0.030, Const.round( -0.025, 2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( -0.020, Const.round( -0.025, 2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( -0.020, Const.round( -0.025, 2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( -0.020, Const.round( -0.025, 2, Const.ROUND_HALF_CEILING ) );
assertEquals( -0.030, Const.round( -0.027, 2, BigDecimal.ROUND_UP ) );
assertEquals( -0.020, Const.round( -0.027, 2, BigDecimal.ROUND_DOWN ) );
assertEquals( -0.020, Const.round( -0.027, 2, BigDecimal.ROUND_CEILING ) );
assertEquals( -0.030, Const.round( -0.027, 2, BigDecimal.ROUND_FLOOR ) );
assertEquals( -0.030, Const.round( -0.027, 2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( -0.030, Const.round( -0.027, 2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( -0.030, Const.round( -0.027, 2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( -0.030, Const.round( -0.027, 2, Const.ROUND_HALF_CEILING ) );
assertEquals( 100.0, Const.round( 100.0, -2, BigDecimal.ROUND_UP ) );
assertEquals( 100.0, Const.round( 100.0, -2, BigDecimal.ROUND_DOWN ) );
assertEquals( 100.0, Const.round( 100.0, -2, BigDecimal.ROUND_CEILING ) );
assertEquals( 100.0, Const.round( 100.0, -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( 100.0, Const.round( 100.0, -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( 100.0, Const.round( 100.0, -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( 100.0, Const.round( 100.0, -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( 100.0, Const.round( 100.0, -2, Const.ROUND_HALF_CEILING ) );
assertEquals( 200.0, Const.round( 120.0, -2, BigDecimal.ROUND_UP ) );
assertEquals( 100.0, Const.round( 120.0, -2, BigDecimal.ROUND_DOWN ) );
assertEquals( 200.0, Const.round( 120.0, -2, BigDecimal.ROUND_CEILING ) );
assertEquals( 100.0, Const.round( 120.0, -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( 100.0, Const.round( 120.0, -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( 100.0, Const.round( 120.0, -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( 100.0, Const.round( 120.0, -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( 100.0, Const.round( 120.0, -2, Const.ROUND_HALF_CEILING ) );
assertEquals( 200.0, Const.round( 150.0, -2, BigDecimal.ROUND_UP ) );
assertEquals( 100.0, Const.round( 150.0, -2, BigDecimal.ROUND_DOWN ) );
assertEquals( 200.0, Const.round( 150.0, -2, BigDecimal.ROUND_CEILING ) );
assertEquals( 100.0, Const.round( 150.0, -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( 200.0, Const.round( 150.0, -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( 100.0, Const.round( 150.0, -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( 200.0, Const.round( 150.0, -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( 200.0, Const.round( 150.0, -2, Const.ROUND_HALF_CEILING ) );
assertEquals( 200.0, Const.round( 170.0, -2, BigDecimal.ROUND_UP ) );
assertEquals( 100.0, Const.round( 170.0, -2, BigDecimal.ROUND_DOWN ) );
assertEquals( 200.0, Const.round( 170.0, -2, BigDecimal.ROUND_CEILING ) );
assertEquals( 100.0, Const.round( 170.0, -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( 200.0, Const.round( 170.0, -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( 200.0, Const.round( 170.0, -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( 200.0, Const.round( 170.0, -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( 200.0, Const.round( 170.0, -2, Const.ROUND_HALF_CEILING ) );
assertEquals( 200.0, Const.round( 200.0, -2, BigDecimal.ROUND_UP ) );
assertEquals( 200.0, Const.round( 200.0, -2, BigDecimal.ROUND_DOWN ) );
assertEquals( 200.0, Const.round( 200.0, -2, BigDecimal.ROUND_CEILING ) );
assertEquals( 200.0, Const.round( 200.0, -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( 200.0, Const.round( 200.0, -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( 200.0, Const.round( 200.0, -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( 200.0, Const.round( 200.0, -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( 200.0, Const.round( 200.0, -2, Const.ROUND_HALF_CEILING ) );
assertEquals( 300.0, Const.round( 220.0, -2, BigDecimal.ROUND_UP ) );
assertEquals( 200.0, Const.round( 220.0, -2, BigDecimal.ROUND_DOWN ) );
assertEquals( 300.0, Const.round( 220.0, -2, BigDecimal.ROUND_CEILING ) );
assertEquals( 200.0, Const.round( 220.0, -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( 200.0, Const.round( 220.0, -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( 200.0, Const.round( 220.0, -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( 200.0, Const.round( 220.0, -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( 200.0, Const.round( 220.0, -2, Const.ROUND_HALF_CEILING ) );
assertEquals( 300.0, Const.round( 250.0, -2, BigDecimal.ROUND_UP ) );
assertEquals( 200.0, Const.round( 250.0, -2, BigDecimal.ROUND_DOWN ) );
assertEquals( 300.0, Const.round( 250.0, -2, BigDecimal.ROUND_CEILING ) );
assertEquals( 200.0, Const.round( 250.0, -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( 300.0, Const.round( 250.0, -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( 200.0, Const.round( 250.0, -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( 200.0, Const.round( 250.0, -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( 300.0, Const.round( 250.0, -2, Const.ROUND_HALF_CEILING ) );
assertEquals( 300.0, Const.round( 270.0, -2, BigDecimal.ROUND_UP ) );
assertEquals( 200.0, Const.round( 270.0, -2, BigDecimal.ROUND_DOWN ) );
assertEquals( 300.0, Const.round( 270.0, -2, BigDecimal.ROUND_CEILING ) );
assertEquals( 200.0, Const.round( 270.0, -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( 300.0, Const.round( 270.0, -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( 300.0, Const.round( 270.0, -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( 300.0, Const.round( 270.0, -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( 300.0, Const.round( 270.0, -2, Const.ROUND_HALF_CEILING ) );
assertEquals( -100.0, Const.round( -100.0, -2, BigDecimal.ROUND_UP ) );
assertEquals( -100.0, Const.round( -100.0, -2, BigDecimal.ROUND_DOWN ) );
assertEquals( -100.0, Const.round( -100.0, -2, BigDecimal.ROUND_CEILING ) );
assertEquals( -100.0, Const.round( -100.0, -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( -100.0, Const.round( -100.0, -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( -100.0, Const.round( -100.0, -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( -100.0, Const.round( -100.0, -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( -100.0, Const.round( -100.0, -2, Const.ROUND_HALF_CEILING ) );
assertEquals( -200.0, Const.round( -120.0, -2, BigDecimal.ROUND_UP ) );
assertEquals( -100.0, Const.round( -120.0, -2, BigDecimal.ROUND_DOWN ) );
assertEquals( -100.0, Const.round( -120.0, -2, BigDecimal.ROUND_CEILING ) );
assertEquals( -200.0, Const.round( -120.0, -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( -100.0, Const.round( -120.0, -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( -100.0, Const.round( -120.0, -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( -100.0, Const.round( -120.0, -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( -100.0, Const.round( -120.0, -2, Const.ROUND_HALF_CEILING ) );
assertEquals( -200.0, Const.round( -150.0, -2, BigDecimal.ROUND_UP ) );
assertEquals( -100.0, Const.round( -150.0, -2, BigDecimal.ROUND_DOWN ) );
assertEquals( -100.0, Const.round( -150.0, -2, BigDecimal.ROUND_CEILING ) );
assertEquals( -200.0, Const.round( -150.0, -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( -200.0, Const.round( -150.0, -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( -100.0, Const.round( -150.0, -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( -200.0, Const.round( -150.0, -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( -100.0, Const.round( -150.0, -2, Const.ROUND_HALF_CEILING ) );
assertEquals( -200.0, Const.round( -170.0, -2, BigDecimal.ROUND_UP ) );
assertEquals( -100.0, Const.round( -170.0, -2, BigDecimal.ROUND_DOWN ) );
assertEquals( -100.0, Const.round( -170.0, -2, BigDecimal.ROUND_CEILING ) );
assertEquals( -200.0, Const.round( -170.0, -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( -200.0, Const.round( -170.0, -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( -200.0, Const.round( -170.0, -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( -200.0, Const.round( -170.0, -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( -200.0, Const.round( -170.0, -2, Const.ROUND_HALF_CEILING ) );
assertEquals( -200.0, Const.round( -200.0, -2, BigDecimal.ROUND_UP ) );
assertEquals( -200.0, Const.round( -200.0, -2, BigDecimal.ROUND_DOWN ) );
assertEquals( -200.0, Const.round( -200.0, -2, BigDecimal.ROUND_CEILING ) );
assertEquals( -200.0, Const.round( -200.0, -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( -200.0, Const.round( -200.0, -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( -200.0, Const.round( -200.0, -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( -200.0, Const.round( -200.0, -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( -200.0, Const.round( -200.0, -2, Const.ROUND_HALF_CEILING ) );
assertEquals( -300.0, Const.round( -220.0, -2, BigDecimal.ROUND_UP ) );
assertEquals( -200.0, Const.round( -220.0, -2, BigDecimal.ROUND_DOWN ) );
assertEquals( -200.0, Const.round( -220.0, -2, BigDecimal.ROUND_CEILING ) );
assertEquals( -300.0, Const.round( -220.0, -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( -200.0, Const.round( -220.0, -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( -200.0, Const.round( -220.0, -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( -200.0, Const.round( -220.0, -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( -200.0, Const.round( -220.0, -2, Const.ROUND_HALF_CEILING ) );
assertEquals( -300.0, Const.round( -250.0, -2, BigDecimal.ROUND_UP ) );
assertEquals( -200.0, Const.round( -250.0, -2, BigDecimal.ROUND_DOWN ) );
assertEquals( -200.0, Const.round( -250.0, -2, BigDecimal.ROUND_CEILING ) );
assertEquals( -300.0, Const.round( -250.0, -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( -300.0, Const.round( -250.0, -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( -200.0, Const.round( -250.0, -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( -200.0, Const.round( -250.0, -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( -200.0, Const.round( -250.0, -2, Const.ROUND_HALF_CEILING ) );
assertEquals( -300.0, Const.round( -270.0, -2, BigDecimal.ROUND_UP ) );
assertEquals( -200.0, Const.round( -270.0, -2, BigDecimal.ROUND_DOWN ) );
assertEquals( -200.0, Const.round( -270.0, -2, BigDecimal.ROUND_CEILING ) );
assertEquals( -300.0, Const.round( -270.0, -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( -300.0, Const.round( -270.0, -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( -300.0, Const.round( -270.0, -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( -300.0, Const.round( -270.0, -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( -300.0, Const.round( -270.0, -2, Const.ROUND_HALF_CEILING ) );
assertEquals( Double.NaN, Const.round( Double.NaN, 0, BigDecimal.ROUND_UP ) );
assertEquals( Double.NEGATIVE_INFINITY, Const.round( Double.NEGATIVE_INFINITY, 0, BigDecimal.ROUND_UP ) );
assertEquals( Double.POSITIVE_INFINITY, Const.round( Double.POSITIVE_INFINITY, 0, BigDecimal.ROUND_UP ) );
}
@Test
public void testRound_Long() {
assertEquals( 1L, Const.round( 1L, 0, BigDecimal.ROUND_UP ) );
assertEquals( 1L, Const.round( 1L, 0, BigDecimal.ROUND_DOWN ) );
assertEquals( 1L, Const.round( 1L, 0, BigDecimal.ROUND_CEILING ) );
assertEquals( 1L, Const.round( 1L, 0, BigDecimal.ROUND_FLOOR ) );
assertEquals( 1L, Const.round( 1L, 0, BigDecimal.ROUND_HALF_UP ) );
assertEquals( 1L, Const.round( 1L, 0, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( 1L, Const.round( 1L, 0, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( 1L, Const.round( 1L, 0, Const.ROUND_HALF_CEILING ) );
assertEquals( 2L, Const.round( 2L, 0, BigDecimal.ROUND_UP ) );
assertEquals( 2L, Const.round( 2L, 0, BigDecimal.ROUND_DOWN ) );
assertEquals( 2L, Const.round( 2L, 0, BigDecimal.ROUND_CEILING ) );
assertEquals( 2L, Const.round( 2L, 0, BigDecimal.ROUND_FLOOR ) );
assertEquals( 2L, Const.round( 2L, 0, BigDecimal.ROUND_HALF_UP ) );
assertEquals( 2L, Const.round( 2L, 0, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( 2L, Const.round( 2L, 0, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( 2L, Const.round( 2L, 0, Const.ROUND_HALF_CEILING ) );
assertEquals( -1L, Const.round( -1L, 0, BigDecimal.ROUND_UP ) );
assertEquals( -1L, Const.round( -1L, 0, BigDecimal.ROUND_DOWN ) );
assertEquals( -1L, Const.round( -1L, 0, BigDecimal.ROUND_CEILING ) );
assertEquals( -1L, Const.round( -1L, 0, BigDecimal.ROUND_FLOOR ) );
assertEquals( -1L, Const.round( -1L, 0, BigDecimal.ROUND_HALF_UP ) );
assertEquals( -1L, Const.round( -1L, 0, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( -1L, Const.round( -1L, 0, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( -1L, Const.round( -1L, 0, Const.ROUND_HALF_CEILING ) );
assertEquals( -2L, Const.round( -2L, 0, BigDecimal.ROUND_UP ) );
assertEquals( -2L, Const.round( -2L, 0, BigDecimal.ROUND_DOWN ) );
assertEquals( -2L, Const.round( -2L, 0, BigDecimal.ROUND_CEILING ) );
assertEquals( -2L, Const.round( -2L, 0, BigDecimal.ROUND_FLOOR ) );
assertEquals( -2L, Const.round( -2L, 0, BigDecimal.ROUND_HALF_UP ) );
assertEquals( -2L, Const.round( -2L, 0, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( -2L, Const.round( -2L, 0, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( -2L, Const.round( -2L, 0, Const.ROUND_HALF_CEILING ) );
assertEquals( 100L, Const.round( 100L, -2, BigDecimal.ROUND_UP ) );
assertEquals( 100L, Const.round( 100L, -2, BigDecimal.ROUND_DOWN ) );
assertEquals( 100L, Const.round( 100L, -2, BigDecimal.ROUND_CEILING ) );
assertEquals( 100L, Const.round( 100L, -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( 100L, Const.round( 100L, -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( 100L, Const.round( 100L, -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( 100L, Const.round( 100L, -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( 100L, Const.round( 100L, -2, Const.ROUND_HALF_CEILING ) );
assertEquals( 200L, Const.round( 120L, -2, BigDecimal.ROUND_UP ) );
assertEquals( 100L, Const.round( 120L, -2, BigDecimal.ROUND_DOWN ) );
assertEquals( 200L, Const.round( 120L, -2, BigDecimal.ROUND_CEILING ) );
assertEquals( 100L, Const.round( 120L, -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( 100L, Const.round( 120L, -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( 100L, Const.round( 120L, -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( 100L, Const.round( 120L, -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( 100L, Const.round( 120L, -2, Const.ROUND_HALF_CEILING ) );
assertEquals( 200L, Const.round( 150L, -2, BigDecimal.ROUND_UP ) );
assertEquals( 100L, Const.round( 150L, -2, BigDecimal.ROUND_DOWN ) );
assertEquals( 200L, Const.round( 150L, -2, BigDecimal.ROUND_CEILING ) );
assertEquals( 100L, Const.round( 150L, -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( 200L, Const.round( 150L, -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( 100L, Const.round( 150L, -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( 200L, Const.round( 150L, -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( 200L, Const.round( 150L, -2, Const.ROUND_HALF_CEILING ) );
assertEquals( 200L, Const.round( 170L, -2, BigDecimal.ROUND_UP ) );
assertEquals( 100L, Const.round( 170L, -2, BigDecimal.ROUND_DOWN ) );
assertEquals( 200L, Const.round( 170L, -2, BigDecimal.ROUND_CEILING ) );
assertEquals( 100L, Const.round( 170L, -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( 200L, Const.round( 170L, -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( 200L, Const.round( 170L, -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( 200L, Const.round( 170L, -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( 200L, Const.round( 170L, -2, Const.ROUND_HALF_CEILING ) );
assertEquals( 200L, Const.round( 200L, -2, BigDecimal.ROUND_UP ) );
assertEquals( 200L, Const.round( 200L, -2, BigDecimal.ROUND_DOWN ) );
assertEquals( 200L, Const.round( 200L, -2, BigDecimal.ROUND_CEILING ) );
assertEquals( 200L, Const.round( 200L, -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( 200L, Const.round( 200L, -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( 200L, Const.round( 200L, -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( 200L, Const.round( 200L, -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( 200L, Const.round( 200L, -2, Const.ROUND_HALF_CEILING ) );
assertEquals( 300L, Const.round( 220L, -2, BigDecimal.ROUND_UP ) );
assertEquals( 200L, Const.round( 220L, -2, BigDecimal.ROUND_DOWN ) );
assertEquals( 300L, Const.round( 220L, -2, BigDecimal.ROUND_CEILING ) );
assertEquals( 200L, Const.round( 220L, -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( 200L, Const.round( 220L, -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( 200L, Const.round( 220L, -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( 200L, Const.round( 220L, -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( 200L, Const.round( 220L, -2, Const.ROUND_HALF_CEILING ) );
assertEquals( 300L, Const.round( 250L, -2, BigDecimal.ROUND_UP ) );
assertEquals( 200L, Const.round( 250L, -2, BigDecimal.ROUND_DOWN ) );
assertEquals( 300L, Const.round( 250L, -2, BigDecimal.ROUND_CEILING ) );
assertEquals( 200L, Const.round( 250L, -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( 300L, Const.round( 250L, -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( 200L, Const.round( 250L, -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( 200L, Const.round( 250L, -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( 300L, Const.round( 250L, -2, Const.ROUND_HALF_CEILING ) );
assertEquals( 300L, Const.round( 270L, -2, BigDecimal.ROUND_UP ) );
assertEquals( 200L, Const.round( 270L, -2, BigDecimal.ROUND_DOWN ) );
assertEquals( 300L, Const.round( 270L, -2, BigDecimal.ROUND_CEILING ) );
assertEquals( 200L, Const.round( 270L, -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( 300L, Const.round( 270L, -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( 300L, Const.round( 270L, -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( 300L, Const.round( 270L, -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( 300L, Const.round( 270L, -2, Const.ROUND_HALF_CEILING ) );
assertEquals( -100L, Const.round( -100L, -2, BigDecimal.ROUND_UP ) );
assertEquals( -100L, Const.round( -100L, -2, BigDecimal.ROUND_DOWN ) );
assertEquals( -100L, Const.round( -100L, -2, BigDecimal.ROUND_CEILING ) );
assertEquals( -100L, Const.round( -100L, -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( -100L, Const.round( -100L, -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( -100L, Const.round( -100L, -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( -100L, Const.round( -100L, -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( -100L, Const.round( -100L, -2, Const.ROUND_HALF_CEILING ) );
assertEquals( -200L, Const.round( -120L, -2, BigDecimal.ROUND_UP ) );
assertEquals( -100L, Const.round( -120L, -2, BigDecimal.ROUND_DOWN ) );
assertEquals( -100L, Const.round( -120L, -2, BigDecimal.ROUND_CEILING ) );
assertEquals( -200L, Const.round( -120L, -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( -100L, Const.round( -120L, -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( -100L, Const.round( -120L, -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( -100L, Const.round( -120L, -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( -100L, Const.round( -120L, -2, Const.ROUND_HALF_CEILING ) );
assertEquals( -200L, Const.round( -150L, -2, BigDecimal.ROUND_UP ) );
assertEquals( -100L, Const.round( -150L, -2, BigDecimal.ROUND_DOWN ) );
assertEquals( -100L, Const.round( -150L, -2, BigDecimal.ROUND_CEILING ) );
assertEquals( -200L, Const.round( -150L, -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( -200L, Const.round( -150L, -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( -100L, Const.round( -150L, -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( -200L, Const.round( -150L, -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( -100L, Const.round( -150L, -2, Const.ROUND_HALF_CEILING ) );
assertEquals( -200L, Const.round( -170L, -2, BigDecimal.ROUND_UP ) );
assertEquals( -100L, Const.round( -170L, -2, BigDecimal.ROUND_DOWN ) );
assertEquals( -100L, Const.round( -170L, -2, BigDecimal.ROUND_CEILING ) );
assertEquals( -200L, Const.round( -170L, -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( -200L, Const.round( -170L, -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( -200L, Const.round( -170L, -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( -200L, Const.round( -170L, -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( -200L, Const.round( -170L, -2, Const.ROUND_HALF_CEILING ) );
assertEquals( -200L, Const.round( -200L, -2, BigDecimal.ROUND_UP ) );
assertEquals( -200L, Const.round( -200L, -2, BigDecimal.ROUND_DOWN ) );
assertEquals( -200L, Const.round( -200L, -2, BigDecimal.ROUND_CEILING ) );
assertEquals( -200L, Const.round( -200L, -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( -200L, Const.round( -200L, -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( -200L, Const.round( -200L, -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( -200L, Const.round( -200L, -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( -200L, Const.round( -200L, -2, Const.ROUND_HALF_CEILING ) );
assertEquals( -300L, Const.round( -220L, -2, BigDecimal.ROUND_UP ) );
assertEquals( -200L, Const.round( -220L, -2, BigDecimal.ROUND_DOWN ) );
assertEquals( -200L, Const.round( -220L, -2, BigDecimal.ROUND_CEILING ) );
assertEquals( -300L, Const.round( -220L, -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( -200L, Const.round( -220L, -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( -200L, Const.round( -220L, -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( -200L, Const.round( -220L, -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( -200L, Const.round( -220L, -2, Const.ROUND_HALF_CEILING ) );
assertEquals( -300L, Const.round( -250L, -2, BigDecimal.ROUND_UP ) );
assertEquals( -200L, Const.round( -250L, -2, BigDecimal.ROUND_DOWN ) );
assertEquals( -200L, Const.round( -250L, -2, BigDecimal.ROUND_CEILING ) );
assertEquals( -300L, Const.round( -250L, -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( -300L, Const.round( -250L, -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( -200L, Const.round( -250L, -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( -200L, Const.round( -250L, -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( -200L, Const.round( -250L, -2, Const.ROUND_HALF_CEILING ) );
assertEquals( -300L, Const.round( -270L, -2, BigDecimal.ROUND_UP ) );
assertEquals( -200L, Const.round( -270L, -2, BigDecimal.ROUND_DOWN ) );
assertEquals( -200L, Const.round( -270L, -2, BigDecimal.ROUND_CEILING ) );
assertEquals( -300L, Const.round( -270L, -2, BigDecimal.ROUND_FLOOR ) );
assertEquals( -300L, Const.round( -270L, -2, BigDecimal.ROUND_HALF_UP ) );
assertEquals( -300L, Const.round( -270L, -2, BigDecimal.ROUND_HALF_DOWN ) );
assertEquals( -300L, Const.round( -270L, -2, BigDecimal.ROUND_HALF_EVEN ) );
assertEquals( -300L, Const.round( -270L, -2, Const.ROUND_HALF_CEILING ) );
}
public static void assertEquals( Object expected, Object actual ) {
assertEquals( "", expected, actual );
}
public static void assertEquals( String msg, Object expected, Object actual ) {
if ( expected instanceof BigDecimal && actual instanceof BigDecimal ) {
if ( ( (BigDecimal) expected ).compareTo( (BigDecimal) actual ) != 0 ) {
Assert.assertEquals( msg, expected, actual );
}
} else if ( expected instanceof Number && actual instanceof Number ) {
Assert.assertEquals( msg + " dataType(" + expected + "," + actual + ")", expected.getClass(), actual.getClass() );
Assert.assertEquals( msg, expected, actual );
} else {
Assert.assertEquals( msg, expected, actual );
}
}
@Test
public void testToInt() {
assertEquals( 123, Const.toInt( "123", -12 ) );
assertEquals( -12, Const.toInt( "123f", -12 ) );
}
@Test
public void testToLong() {
assertEquals( 1447252914241L, Const.toLong( "1447252914241", -12 ) );
assertEquals( -1447252914241L, Const.toLong( "1447252914241L", -1447252914241L ) );
}
@Test
public void testToDouble() {
Assert.assertEquals( 123.45, Const.toDouble( "123.45", -12.34 ), 1e-15 );
Assert.assertEquals( -12.34, Const.toDouble( "123asd", -12.34 ), 1e-15 );
}
@Test
public void testRightPad() {
final String s = "Pad me baby one more time";
assertEquals( " ", Const.rightPad( (String) null, 5 ) );
assertEquals( "Pad", Const.rightPad( s, 3 ) );
final StringBuffer sb = new StringBuffer( s );
assertEquals( s + " ", Const.rightPad( sb, 28 ) );
assertEquals( "Pad me baby", Const.rightPad( sb, 11 ) );
final StringBuilder sb2 = new StringBuilder( s );
assertEquals( s + " ", Const.rightPad( sb2, 28 ) );
assertEquals( "Pad me baby", Const.rightPad( sb2, 11 ) );
}
@Test
public void testReplace() {
final String source = "A journey of a thousand miles never begins";
assertEquals( "A journey of a thousand miles begins with a single step", Const.replace( source, "never begins",
"begins with a single step" ) );
assertEquals( source, Const.replace( source, "evil", "good" ) );
assertEquals( "short", Const.replace( "short", "long pattern", "replacement" ) );
assertEquals( "", Const.replace( "", "anything", "something" ) );
assertEquals( null, Const.replace( null, "test", "junk" ) );
assertEquals( null, Const.replace( "test", null, "junk" ) );
assertEquals( null, Const.replace( "test", "junk", null ) );
}
@Test
public void testRepl() {
String source = "A journey of a thousand miles never begins";
StringBuffer sb = new StringBuffer( source );
Const.repl( sb, "never begins", "begins with a single step" );
assertEquals( "A journey of a thousand miles begins with a single step", sb.toString() );
sb = new StringBuffer( source );
Const.repl( sb, "evil", "good" );
assertEquals( source, sb.toString() );
sb = new StringBuffer( "short" );
Const.repl( sb, "long pattern", "replacement" );
assertEquals( "short", sb.toString() );
sb = new StringBuffer( "" );
Const.repl( sb, "anything", "something" );
assertEquals( "", sb.toString() );
sb = new StringBuffer( "Replace what looks like a regex '[a-z1-3*+]' with '$1'" );
Const.repl( sb, "[a-z1-3*+]", "$1" );
assertEquals( "Replace what looks like a regex '$1' with '$1'", sb.toString() );
// StringBuilder version
StringBuilder sb2 = new StringBuilder( source );
Const.repl( sb2, "never begins", "begins with a single step" );
assertEquals( "A journey of a thousand miles begins with a single step", sb2.toString() );
sb2 = new StringBuilder( source );
Const.repl( sb2, "evil", "good" );
assertEquals( source, sb2.toString() );
sb2 = new StringBuilder( "short" );
Const.repl( sb2, "long pattern", "replacement" );
assertEquals( "short", sb2.toString() );
sb2 = new StringBuilder( "" );
Const.repl( sb2, "anything", "something" );
assertEquals( "", sb2.toString() );
sb2 = new StringBuilder( "Replace what looks like a regex '[a-z1-3*+]' with '$1'" );
Const.repl( sb2, "[a-z1-3*+]", "$1" );
assertEquals( "Replace what looks like a regex '$1' with '$1'", sb2.toString() );
sb2 = new StringBuilder( "JUNK" );
Const.repl( sb2, null, "wibble" );
assertEquals( "JUNK", sb2.toString() );
Const.repl( sb2, "JUNK", null );
}
@Test
public void testGetOS() {
final String key = "os.name";
final String os = System.getProperty( key );
System.setProperty( key, "BeOS" );
assertEquals( "BeOS", Const.getOS() );
System.setProperty( key, os );
}
@Test
public void testQuoteCharByOS() {
assertEquals( SystemUtils.IS_OS_WINDOWS ? "\"" : "'", Const.getQuoteCharByOS() );
}
@Test
public void testOptionallyQuoteStringByOS() {
assertEquals( Const.getQuoteCharByOS() + "Quote me" + Const.getQuoteCharByOS(), Const.optionallyQuoteStringByOS(
"Quote me" ) );
assertEquals( Const.getQuoteCharByOS() + "Quote=me" + Const.getQuoteCharByOS(), Const.optionallyQuoteStringByOS(
"Quote=me" ) );
assertEquals( "Quoteme", Const.optionallyQuoteStringByOS( "Quoteme" ) );
assertEquals( "Quote" + Const.getQuoteCharByOS() + "me", Const.optionallyQuoteStringByOS( "Quote" + Const
.getQuoteCharByOS() + "me" ) );
}
@Test
public void testIsWindows() {
assertEquals( SystemUtils.IS_OS_WINDOWS, Const.isWindows() );
}
@Test
public void testIsLinux() {
assertEquals( SystemUtils.IS_OS_LINUX, Const.isLinux() );
}
@Test
public void testIsOSX() {
assertEquals( SystemUtils.IS_OS_MAC_OSX, Const.isOSX() );
}
@Test
public void testIsKDE() {
final String kdeVersion = System.getProperty( "KDE_SESSION_VERSION" );
assertEquals( kdeVersion != null && !kdeVersion.isEmpty(), Const.isKDE() );
}
@Test
public void testGetHostName() {
assertFalse( Const.getHostname().isEmpty() );
}
@Test
public void testGetHostnameReal() {
doWithModifiedSystemProperty( "KETTLE_SYSTEM_HOSTNAME", "MyHost", new Runnable() {
@Override
public void run() {
assertEquals( "MyHost", Const.getHostnameReal() );
}
} );
}
@Test
public void testReplEnv() {
assertNull( Const.replEnv( (String) null ) );
System.setProperty( "testProp", "testValue" );
assertEquals( "Value for testProp property is testValue.", Const.replEnv(
"Value for testProp property is %%testProp%%." ) );
assertEquals( "Value for testProp property is testValue.", Const.replEnv( new String[] {
"Value for testProp property is %%testProp%%." } )[0] );
}
@Test
public void testNullToEmpty() {
assertEquals( "", Const.nullToEmpty( null ) );
assertEquals( "value", Const.nullToEmpty( "value" ) );
}
@Test
public void testIndexOfString() {
assertEquals( -1, Const.indexOfString( null, (String[]) null ) );
assertEquals( -1, Const.indexOfString( null, new String[] {} ) );
assertEquals( 1, Const.indexOfString( "bar", new String[] { "foo", "bar" } ) );
assertEquals( -1, Const.indexOfString( "baz", new String[] { "foo", "bar" } ) );
assertEquals( -1, Const.indexOfString( null, (List<String>) null ) );
assertEquals( 1, Const.indexOfString( "bar", Arrays.asList( "foo", "bar" ) ) );
assertEquals( -1, Const.indexOfString( "baz", Arrays.asList( "foo", "bar" ) ) );
}
@Test
public void testIndexsOfStrings() {
Assert.assertArrayEquals( new int[] { 2, 1, -1 }, Const.indexsOfStrings( new String[] { "foo", "bar", "qux" },
new String[] { "baz", "bar", "foo" } ) );
}
@Test
public void testIndexsOfFoundStrings() {
Assert.assertArrayEquals( new int[] { 2, 1 }, Const.indexsOfFoundStrings( new String[] { "qux", "foo", "bar" },
new String[] { "baz", "bar", "foo" } ) );
}
@Test
public void testGetDistinctStrings() {
assertNull( Const.getDistinctStrings( null ) );
assertTrue( Const.getDistinctStrings( new String[] {} ).length == 0 );
Assert.assertArrayEquals( new String[] { "bar", "foo" }, Const.getDistinctStrings( new String[] { "foo", "bar", "foo",
"bar" } ) );
}
@Test
public void testStackTracker() {
assertTrue( Const.getStackTracker( new Exception() ).contains( getClass().getName() + ".testStackTracker("
+ getClass().getSimpleName() + ".java:" ) );
}
@Test
public void testGetCustomStackTrace() {
assertTrue( Const.getCustomStackTrace( new Exception() ).contains( getClass().getName()
+ ".testGetCustomStackTrace(" + getClass().getSimpleName() + ".java:" ) );
}
@Test
public void testCreateNewClassLoader() throws KettleException {
ClassLoader cl = Const.createNewClassLoader();
assertTrue( cl instanceof URLClassLoader && ( (URLClassLoader) cl ).getURLs().length == 0 );
}
@Test
public void testCreateByteArray() {
assertTrue( Const.createByteArray( 5 ).length == 5 );
}
@Test
public void testCreateFilename() {
assertEquals( "dir" + Const.FILE_SEPARATOR + "file__1.ext", Const.createFilename( "dir" + Const.FILE_SEPARATOR,
"File\t~ 1", ".ext" ) );
assertEquals( "dir" + Const.FILE_SEPARATOR + "file__1.ext", Const.createFilename( "dir", "File\t~ 1", ".ext" ) );
}
@Test
public void testCreateName() {
assertNull( Const.createName( null ) );
assertEquals( "test - trans", Const.createName( "transformations" + Const.FILE_SEPARATOR + "test\t~- trans.ktr" ) );
}
@Test
public void testFilenameOnly() {
assertNull( Const.filenameOnly( null ) );
assertTrue( Const.filenameOnly( "" ).isEmpty() );
assertEquals( "file.txt", Const.filenameOnly( "dir" + Const.FILE_SEPARATOR + "file.txt" ) );
assertEquals( "file.txt", Const.filenameOnly( "file.txt" ) );
}
@Test
public void testGetDateFormats() {
final String[] formats = Const.getDateFormats();
assertTrue( formats.length > 0 );
for ( String format : formats ) {
assertTrue( format != null && !format.isEmpty() );
}
}
@Test
public void testGetNumberFormats() {
final String[] formats = Const.getNumberFormats();
assertTrue( formats.length > 0 );
for ( String format : formats ) {
assertTrue( format != null && !format.isEmpty() );
}
}
@Test
public void testGetConversionFormats() {
final List<String> dateFormats = Arrays.asList( Const.getDateFormats() );
final List<String> numberFormats = Arrays.asList( Const.getNumberFormats() );
final List<String> conversionFormats = Arrays.asList( Const.getConversionFormats() );
assertEquals( dateFormats.size() + numberFormats.size(), conversionFormats.size() );
assertTrue( conversionFormats.containsAll( dateFormats ) );
assertTrue( conversionFormats.containsAll( numberFormats ) );
}
@Test
public void testGetTransformationAndJobFilterNames() {
List<String> filters = Arrays.asList( Const.getTransformationAndJobFilterNames() );
assertTrue( filters.size() == 5 );
for ( String filter : filters ) {
assertFalse( filter.isEmpty() );
}
}
@Test
public void testGetTransformationFilterNames() {
List<String> filters = Arrays.asList( Const.getTransformationFilterNames() );
assertTrue( filters.size() == 3 );
for ( String filter : filters ) {
assertFalse( filter.isEmpty() );
}
}
@Test
public void testGetJobFilterNames() {
List<String> filters = Arrays.asList( Const.getJobFilterNames() );
assertTrue( filters.size() == 3 );
for ( String filter : filters ) {
assertFalse( filter.isEmpty() );
}
}
@Test
public void testNanoTime() {
assertTrue( String.valueOf( Const.nanoTime() ).endsWith( "000" ) );
}
@Test
public void testTrimToType() {
final String source = " trim me hard ";
assertEquals( "trim me hard", Const.trimToType( source, ValueMetaInterface.TRIM_TYPE_BOTH ) );
assertEquals( "trim me hard ", Const.trimToType( source, ValueMetaInterface.TRIM_TYPE_LEFT ) );
assertEquals( " trim me hard", Const.trimToType( source, ValueMetaInterface.TRIM_TYPE_RIGHT ) );
assertEquals( source, Const.trimToType( source, ValueMetaInterface.TRIM_TYPE_NONE ) );
}
@Test
public void testSafeAppendDirectory() {
final String expected = "dir" + Const.FILE_SEPARATOR + "file";
assertEquals( expected, Const.safeAppendDirectory( "dir", "file" ) );
assertEquals( expected, Const.safeAppendDirectory( "dir" + Const.FILE_SEPARATOR, "file" ) );
assertEquals( expected, Const.safeAppendDirectory( "dir", Const.FILE_SEPARATOR + "file" ) );
assertEquals( expected, Const.safeAppendDirectory( "dir" + Const.FILE_SEPARATOR, Const.FILE_SEPARATOR + "file" ) );
}
@Test
public void testGetEmptyPaddedStrings() {
final String[] strings = Const.getEmptyPaddedStrings();
for ( int i = 0; i < 250; i++ ) {
assertEquals( i, strings[i].length() );
}
}
@Test
public void testGetPercentageFreeMemory() {
assertTrue( Const.getPercentageFreeMemory() > 0 );
}
@Test
public void testRemoveDigits() {
assertNull( Const.removeDigits( null ) );
assertEquals( "foobar", Const.removeDigits( "123foo456bar789" ) );
}
@Test
public void testGetDigitsOnly() {
assertNull( Const.removeDigits( null ) );
assertEquals( "123456789", Const.getDigitsOnly( "123foo456bar789" ) );
}
@Test
public void testRemoveTimeFromDate() {
final Date date = Const.removeTimeFromDate( new Date() );
assertEquals( 0, date.getHours() );
assertEquals( 0, date.getMinutes() );
assertEquals( 0, date.getSeconds() );
}
@Test
public void testEscapeUnescapeXML() {
final String xml = "<xml xmlns:test=\"http://test\">";
final String escaped = "<xml xmlns:test="http://test">";
assertNull( Const.escapeXML( null ) );
assertNull( Const.unEscapeXml( null ) );
assertEquals( escaped, Const.escapeXML( xml ) );
assertEquals( xml, Const.unEscapeXml( escaped ) );
}
@Test
public void testEscapeUnescapeHtml() {
final String html = "<td>";
final String escaped = "<td>";
assertNull( Const.escapeHtml( null ) );
assertNull( Const.unEscapeHtml( null ) );
assertEquals( escaped, Const.escapeHtml( html ) );
assertEquals( html, Const.unEscapeHtml( escaped ) );
}
@Test
public void testEscapeSQL() {
assertEquals( "SELECT ''Let''s rock!'' FROM dual", Const.escapeSQL( "SELECT 'Let's rock!' FROM dual" ) );
}
@Test
public void testRemoveCRLF() {
assertEquals( "foo\tbar", Const.removeCRLF( "foo\r\n\tbar" ) );
assertEquals( "", Const.removeCRLF( "" ) );
assertEquals( "", Const.removeCRLF( null ) );
assertEquals( "", Const.removeCRLF( "\r\n" ) );
assertEquals( "This is a test of the emergency broadcast system",
Const.removeCRLF( "This \r\nis \ra \ntest \rof \n\rthe \r\nemergency \rbroadcast \nsystem\r\n" ) );
}
@Test
public void testRemoveCR() {
assertEquals( "foo\r\tbar", Const.removeCR( "foo\r\n\tbar" ) );
assertEquals( "", Const.removeCR( "" ) );
assertEquals( "", Const.removeCR( null ) );
assertEquals( "", Const.removeCR( "\n" ) );
assertEquals( "\r", Const.removeCR( "\n\r\n" ) );
assertEquals( "This \ris \ra test \rof \rthe \remergency \rbroadcast system\r",
Const.removeCR( "This \r\nis \ra \ntest \rof \n\rthe \r\nemergency \rbroadcast \nsystem\r\n" ) );
}
@Test
public void testRemoveLF() {
assertEquals( "foo\n\tbar", Const.removeLF( "foo\r\n\tbar" ) );
assertEquals( "", Const.removeLF( "" ) );
assertEquals( "", Const.removeLF( null ) );
assertEquals( "", Const.removeLF( "\r" ) );
assertEquals( "\n", Const.removeLF( "\r\n\r" ) );
assertEquals( "This \nis a \ntest of \nthe \nemergency broadcast \nsystem\n",
Const.removeLF( "This \r\nis \ra \ntest \rof \n\rthe \r\nemergency \rbroadcast \nsystem\r\n" ) );
}
@Test
public void testRemoveTAB() {
assertEquals( "foo\r\nbar", Const.removeTAB( "foo\r\n\tbar" ) );
assertEquals( "", Const.removeTAB( "" ) );
assertEquals( "", Const.removeTAB( null ) );
assertEquals( "", Const.removeTAB( "\t" ) );
assertEquals( "\r", Const.removeTAB( "\t\r\t" ) );
assertEquals( "Thisisatest",
Const.removeTAB( "\tThis\tis\ta\ttest" ) );
}
@Test
public void testAddTimeToDate() throws Exception {
final Date date = new Date( 1447252914241L );
assertNull( Const.addTimeToDate( null, null, null ) );
assertEquals( date, Const.addTimeToDate( date, null, null ) );
assertEquals( 1447256637241L, Const.addTimeToDate( date, "01:02:03", "HH:mm:ss" ).getTime() );
}
@Test
public void testGetOccurenceString() {
assertEquals( 0, Const.getOccurenceString( "", "" ) );
assertEquals( 0, Const.getOccurenceString( "foo bar bazfoo", "cat" ) );
assertEquals( 2, Const.getOccurenceString( "foo bar bazfoo", "foo" ) );
}
@Test
public void testGetAvailableFontNames() {
assertTrue( Const.GetAvailableFontNames().length > 0 );
}
@Test
public void testGetKettlePropertiesFileHeader() {
assertFalse( Const.getKettlePropertiesFileHeader().isEmpty() );
}
@Test
public void testProtectXMLCDATA() {
assertEquals( null, Const.protectXMLCDATA( null ) );
assertEquals( "", Const.protectXMLCDATA( "" ) );
assertEquals( "<![CDATA[foo]]>", Const.protectXMLCDATA( "foo" ) );
}
@Test
public void testGetOcuranceString() {
assertEquals( 0, Const.getOcuranceString( "", "" ) );
assertEquals( 0, Const.getOcuranceString( "foo bar bazfoo", "cat" ) );
assertEquals( 2, Const.getOcuranceString( "foo bar bazfoo", "foo" ) );
}
@Test
public void testEscapeXml() {
final String xml = "<xml xmlns:test=\"http://test\">";
final String escaped = "<xml xmlns:test="http://test">";
assertNull( Const.escapeXml( null ) );
assertEquals( escaped, Const.escapeXml( xml ) );
}
@Test
public void testLpad() {
final String s = "pad me";
assertEquals( s, Const.Lpad( s, "-", 0 ) );
assertEquals( s, Const.Lpad( s, "-", 3 ) );
assertEquals( "--" + s, Const.Lpad( s, "-", 8 ) );
// add in some edge cases
assertEquals( s, Const.Lpad( s, null, 15 ) ); // No NPE
assertEquals( s, Const.Lpad( s, "", 15 ) );
assertEquals( s, Const.Lpad( s, "*", 5 ) );
assertEquals( null, Const.Lpad( null, "*", 15 ) );
assertEquals( "****Test", Const.Lpad( "Test", "**********", 8 ) );
assertEquals( "*Test", Const.Lpad( "Test", "**", 5 ) );
assertEquals( "****", Const.Lpad( "", "*", 4 ) );
}
@Test
public void testRpad() {
final String s = "pad me";
assertEquals( s, Const.Rpad( s, "-", 0 ) );
assertEquals( s, Const.Rpad( s, "-", 3 ) );
assertEquals( s + "--", Const.Rpad( s, "-", 8 ) );
// add in some edge cases
assertEquals( s, Const.Rpad( s, null, 15 ) ); // No NPE
assertEquals( s, Const.Rpad( s, "", 15 ) );
assertEquals( s, Const.Rpad( s, "*", 5 ) );
assertEquals( null, Const.Rpad( null, "*", 15 ) );
assertEquals( "Test****", Const.Rpad( "Test", "**********", 8 ) );
assertEquals( "Test*", Const.Rpad( "Test", "**", 5 ) );
assertEquals( "****", Const.Rpad( "", "*", 4 ) );
}
@Test
public void testClassIsOrExtends() {
assertFalse( Const.classIsOrExtends( Object.class, Object.class ) );
assertTrue( Const.classIsOrExtends( String.class, String.class ) );
assertTrue( Const.classIsOrExtends( ArrayList.class, ArrayList.class ) );
}
@Test
public void testReleaseType() {
for ( Const.ReleaseType type : Const.ReleaseType.values() ) {
assertFalse( type.getMessage().isEmpty() );
}
}
private void doWithModifiedSystemProperty( final String key, final String value, Runnable action ) {
final String curValue = System.getProperty( key );
System.setProperty( key, value );
action.run();
if ( curValue != null ) {
System.setProperty( key, curValue );
}
}
}