package org.springside.modules.utils.number;
import static org.assertj.core.api.Assertions.*;
import org.junit.Test;
public class NumberUtilTest {
@Test
public void toBytes() {
byte[] bytes = NumberUtil.toBytes(1);
assertThat(bytes).hasSize(4).containsSequence((byte) 0, (byte) 0, (byte) 0, (byte) 1);
bytes = NumberUtil.toBytes(257);
assertThat(bytes).containsSequence((byte) 0, (byte) 0, (byte) 1, (byte) 1);
assertThat(NumberUtil.toInt(bytes)).isEqualTo(257);
//long
byte[] bytes2 = NumberUtil.toBytes(1L);
assertThat(bytes2).hasSize(8);
bytes2 = NumberUtil.toBytes(257L);
assertThat(bytes2).containsSequence((byte) 0, (byte) 0, (byte) 1, (byte) 1);
assertThat(NumberUtil.toLong(bytes2)).isEqualTo(257L);
//dobule
byte[] bytes3 = NumberUtil.toBytes(1.123d);
assertThat(NumberUtil.toDouble(bytes3)).isEqualTo(1.123d);
//toInt32
assertThat(NumberUtil.toInt32(123l)).isEqualTo(123);
try{
NumberUtil.toInt32(Long.valueOf(Integer.MAX_VALUE+1l));
fail("should fail here");
}catch(Exception e){
assertThat(e).isInstanceOf(IllegalArgumentException.class);
}
}
@Test
public void isNumber() {
assertThat(NumberUtil.isNumber("123")).isTrue();
assertThat(NumberUtil.isNumber("-123.1")).isTrue();
assertThat(NumberUtil.isNumber("-1a3.1")).isFalse();
assertThat(NumberUtil.isHexNumber("0x12F")).isTrue();
assertThat(NumberUtil.isHexNumber("-0x12A3")).isTrue();
assertThat(NumberUtil.isHexNumber("12A3")).isFalse();
}
@Test
public void toNumber() {
assertThat(NumberUtil.toInt("122")).isEqualTo(122);
assertThat(NumberUtil.toInt("12A")).isEqualTo(0);
assertThat(NumberUtil.toInt((String) null)).isEqualTo(0);
assertThat(NumberUtil.toInt("12A", 123)).isEqualTo(123);
assertThat(NumberUtil.toLong("122")).isEqualTo(122L);
assertThat(NumberUtil.toLong("12A")).isEqualTo(0L);
assertThat(NumberUtil.toLong((String) null)).isEqualTo(0);
assertThat(NumberUtil.toLong("12A", 123)).isEqualTo(123L);
assertThat(NumberUtil.toDouble("122.1")).isEqualTo(122.1);
assertThat(NumberUtil.toDouble("12A")).isEqualTo(0L);
assertThat(NumberUtil.toDouble("12A", 123.1)).isEqualTo(123.1);
assertThat(NumberUtil.toIntObject("122")).isEqualTo(122);
assertThat(NumberUtil.toIntObject("12A")).isEqualTo(null);
assertThat(NumberUtil.toIntObject("12A", 123)).isEqualTo(123);
assertThat(NumberUtil.toIntObject(null, 123)).isEqualTo(123);
assertThat(NumberUtil.toIntObject("", 123)).isEqualTo(123);
assertThat(NumberUtil.toLongObject("122")).isEqualTo(122L);
assertThat(NumberUtil.toLongObject("12A")).isEqualTo(null);
assertThat(NumberUtil.toLongObject("12A", 123L)).isEqualTo(123L);
assertThat(NumberUtil.toLongObject(null, 123L)).isEqualTo(123L);
assertThat(NumberUtil.toDoubleObject("122.1")).isEqualTo(122.1);
assertThat(NumberUtil.toDoubleObject("12A")).isEqualTo(null);
assertThat(NumberUtil.toDoubleObject("12A", 123.1)).isEqualTo(123.1);
assertThat(NumberUtil.hexToIntObject("0x10")).isEqualTo(16);
assertThat(NumberUtil.hexToIntObject("0X100")).isEqualTo(256);
assertThat(NumberUtil.hexToIntObject("-0x100")).isEqualTo(-256);
assertThat(NumberUtil.hexToIntObject("0xHI")).isEqualTo(null);
assertThat(NumberUtil.hexToIntObject(null)).isEqualTo(null);
assertThat(NumberUtil.hexToIntObject("0xHI", 123)).isEqualTo(123);
assertThat(NumberUtil.hexToLongObject("0x10")).isEqualTo(16L);
assertThat(NumberUtil.hexToLongObject("0X100")).isEqualTo(256L);
assertThat(NumberUtil.hexToLongObject("-0x100")).isEqualTo(-256L);
assertThat(NumberUtil.hexToLongObject("0xHI")).isEqualTo(null);
assertThat(NumberUtil.hexToLongObject(null)).isEqualTo(null);
assertThat(NumberUtil.hexToLongObject("0xHI", 123L)).isEqualTo(123L);
}
@Test
public void toStringTest() {
assertThat(NumberUtil.toString(23)).isEqualTo("23");
assertThat(NumberUtil.toString(new Integer(23))).isEqualTo("23");
assertThat(NumberUtil.toString(23l)).isEqualTo("23");
assertThat(NumberUtil.toString(new Long(23))).isEqualTo("23");
assertThat(NumberUtil.toString(23l)).isEqualTo("23");
assertThat(NumberUtil.toString(new Double(23.112d))).isEqualTo("23.112");
assertThat(NumberUtil.toString(23.112d)).isEqualTo("23.112");
assertThat(NumberUtil.to2DigitString(23.112d)).isEqualTo("23.11");
assertThat(NumberUtil.to2DigitString(23.116d)).isEqualTo("23.12");
}
}