/**
* Copyright (c) 2012, 2014, Credit Suisse (Anatole Tresch), Werner Keil and others by the @author tag.
*
* 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.javamoney.moneta.spi;
import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicLong;
import org.testng.Assert;
import org.testng.annotations.Test;
/**
* Tests for {@link org.javamoney.moneta.spi.ConvertNumberValue}.
*/
public class ConvertNumberValueTest {
@Test
public void integerTest() {
Number valueTest = 20d;
Integer expectedValue = 20;
Integer number = ConvertNumberValue.of(Integer.class, valueTest);
Integer numberExact = ConvertNumberValue.ofExact(Integer.class, valueTest);
Assert.assertTrue(number != null);
Assert.assertTrue(numberExact != null);
Assert.assertEquals(expectedValue, number);
Assert.assertEquals(expectedValue, numberExact);
}
@Test
public void longTest() {
Number valueTest = 20d;
Long expectedValue = 20l;
Long number = ConvertNumberValue.of(Long.class, valueTest);
Long numberExact = ConvertNumberValue.ofExact(Long.class, valueTest);
Assert.assertTrue(number != null);
Assert.assertTrue(numberExact != null);
Assert.assertEquals(expectedValue, number);
Assert.assertEquals(expectedValue, numberExact);
}
@Test
public void byteTest() {
Number valueTest = 20d;
Byte expectedValue = 20;
Byte number = ConvertNumberValue.of(Byte.class, valueTest);
Byte numberExact = ConvertNumberValue.ofExact(Byte.class, valueTest);
Assert.assertTrue(number != null);
Assert.assertTrue(numberExact != null);
Assert.assertEquals(expectedValue, number);
Assert.assertEquals(expectedValue, numberExact);
}
@Test
public void shortTest() {
Number valueTest = 20d;
Short expectedValue = 20;
Short number = ConvertNumberValue.of(Short.class, valueTest);
Short numberExact = ConvertNumberValue.ofExact(Short.class, valueTest);
Assert.assertTrue(number != null);
Assert.assertTrue(numberExact != null);
Assert.assertEquals(expectedValue, number);
Assert.assertEquals(expectedValue, numberExact);
}
@Test
public void floatTest() {
Number valueTest = 20.2f;
Float expectedValue = 20.2f;
Float number = ConvertNumberValue.of(Float.class, valueTest);
Float numberExact = ConvertNumberValue.ofExact(Float.class, valueTest);
Assert.assertTrue(number != null);
Assert.assertTrue(numberExact != null);
Assert.assertEquals(expectedValue, number);
Assert.assertEquals(expectedValue, numberExact);
}
@Test
public void doubleTest() {
Number valueTest = 20.3456d;
Double expectedValue = 20.3456d;
Double number = ConvertNumberValue.of(Double.class, valueTest);
Double numberExact = ConvertNumberValue.ofExact(Double.class, valueTest);
Assert.assertTrue(number != null);
Assert.assertTrue(numberExact != null);
Assert.assertEquals(expectedValue, number);
Assert.assertEquals(expectedValue, numberExact);
}
@Test
public void bigIntegerTest() {
Number valueTest = BigInteger.TEN;
BigInteger expectedValue = BigInteger.TEN;
BigInteger number = ConvertNumberValue.of(BigInteger.class, valueTest);
BigInteger numberExact = ConvertNumberValue.ofExact(BigInteger.class, valueTest);
Assert.assertTrue(number != null);
Assert.assertTrue(numberExact != null);
Assert.assertEquals(expectedValue, number);
Assert.assertEquals(expectedValue, numberExact);
}
@Test
public void bigDecimalTest() {
Number valueTest = BigDecimal.valueOf(20.3456d);
BigDecimal expectedValue = BigDecimal.valueOf(20.3456d);
BigDecimal number = ConvertNumberValue.of(BigDecimal.class, valueTest);
BigDecimal numberExact = ConvertNumberValue.ofExact(BigDecimal.class, valueTest);
Assert.assertTrue(number != null);
Assert.assertTrue(numberExact != null);
Assert.assertEquals(expectedValue, number);
Assert.assertEquals(expectedValue, numberExact);
}
@Test
public void atomicIntegerTest() {
Number valueTest = 20d;
AtomicInteger expectedValue = new AtomicInteger(20);
AtomicInteger number = ConvertNumberValue.of(AtomicInteger.class, valueTest);
AtomicInteger numberExact = ConvertNumberValue.ofExact(AtomicInteger.class, valueTest);
Assert.assertTrue(number != null);
Assert.assertTrue(numberExact != null);
Assert.assertEquals(expectedValue.get(), number.get());
Assert.assertEquals(expectedValue.get(), numberExact.get());
}
@Test
public void atomicLongTest() {
Number valueTest = 20d;
AtomicLong expectedValue = new AtomicLong(20l);
AtomicLong number = ConvertNumberValue.of(AtomicLong.class, valueTest);
AtomicLong numberExact = ConvertNumberValue.ofExact(AtomicLong.class, valueTest);
Assert.assertTrue(number != null);
Assert.assertTrue(numberExact != null);
Assert.assertEquals(expectedValue.get(), number.get());
Assert.assertEquals(expectedValue.get(), numberExact.get());
}
}