package test.utils.lang;
import com.firefly.utils.lang.JDK;
import com.firefly.utils.lang.TypeUtils;
import org.hamcrest.Matchers;
import org.junit.Assert;
import org.junit.Test;
public class TestTypeUtils {
@Test
public void convertHexDigitTest() {
Assert.assertEquals((byte) 0, TypeUtils.convertHexDigit((byte) '0'));
Assert.assertEquals((byte) 9, TypeUtils.convertHexDigit((byte) '9'));
Assert.assertEquals((byte) 10, TypeUtils.convertHexDigit((byte) 'a'));
Assert.assertEquals((byte) 10, TypeUtils.convertHexDigit((byte) 'A'));
Assert.assertEquals((byte) 15, TypeUtils.convertHexDigit((byte) 'f'));
Assert.assertEquals((byte) 15, TypeUtils.convertHexDigit((byte) 'F'));
Assert.assertEquals(0, TypeUtils.convertHexDigit((int) '0'));
Assert.assertEquals(9, TypeUtils.convertHexDigit((int) '9'));
Assert.assertEquals(10, TypeUtils.convertHexDigit((int) 'a'));
Assert.assertEquals(10, TypeUtils.convertHexDigit((int) 'A'));
Assert.assertEquals(15, TypeUtils.convertHexDigit((int) 'f'));
Assert.assertEquals(15, TypeUtils.convertHexDigit((int) 'F'));
}
@Test
public void testToHexInt() throws Exception {
StringBuilder b = new StringBuilder();
b.setLength(0);
TypeUtils.toHex(0, b);
Assert.assertEquals("00000000", b.toString());
b.setLength(0);
TypeUtils.toHex(Integer.MAX_VALUE, b);
Assert.assertEquals("7FFFFFFF", b.toString());
b.setLength(0);
TypeUtils.toHex(Integer.MIN_VALUE, b);
Assert.assertEquals("80000000", b.toString());
b.setLength(0);
TypeUtils.toHex(0x12345678, b);
Assert.assertEquals("12345678", b.toString());
b.setLength(0);
TypeUtils.toHex(0x9abcdef0, b);
Assert.assertEquals("9ABCDEF0", b.toString());
}
@Test
public void testToHexLong() throws Exception {
StringBuilder b = new StringBuilder();
b.setLength(0);
TypeUtils.toHex((long) 0, b);
Assert.assertEquals("0000000000000000", b.toString());
b.setLength(0);
TypeUtils.toHex(Long.MAX_VALUE, b);
Assert.assertEquals("7FFFFFFFFFFFFFFF", b.toString());
b.setLength(0);
TypeUtils.toHex(Long.MIN_VALUE, b);
Assert.assertEquals("8000000000000000", b.toString());
b.setLength(0);
TypeUtils.toHex(0x123456789abcdef0L, b);
Assert.assertEquals("123456789ABCDEF0", b.toString());
}
@Test
public void testIsTrue() throws Exception {
Assert.assertTrue(TypeUtils.isTrue(Boolean.TRUE));
Assert.assertTrue(TypeUtils.isTrue(true));
Assert.assertTrue(TypeUtils.isTrue("true"));
Assert.assertTrue(TypeUtils.isTrue(new Object() {
@Override
public String toString() {
return "true";
}
}));
Assert.assertFalse(TypeUtils.isTrue(Boolean.FALSE));
Assert.assertFalse(TypeUtils.isTrue(false));
Assert.assertFalse(TypeUtils.isTrue("false"));
Assert.assertFalse(TypeUtils.isTrue("blargle"));
Assert.assertFalse(TypeUtils.isTrue(new Object() {
@Override
public String toString() {
return "false";
}
}));
}
@Test
public void testIsFalse() throws Exception {
Assert.assertTrue(TypeUtils.isFalse(Boolean.FALSE));
Assert.assertTrue(TypeUtils.isFalse(false));
Assert.assertTrue(TypeUtils.isFalse("false"));
Assert.assertTrue(TypeUtils.isFalse(new Object() {
@Override
public String toString() {
return "false";
}
}));
Assert.assertFalse(TypeUtils.isFalse(Boolean.TRUE));
Assert.assertFalse(TypeUtils.isFalse(true));
Assert.assertFalse(TypeUtils.isFalse("true"));
Assert.assertFalse(TypeUtils.isFalse("blargle"));
Assert.assertFalse(TypeUtils.isFalse(new Object() {
@Override
public String toString() {
return "true";
}
}));
}
@Test
public void testGetLocationOfClass() throws Exception {
// Classes from maven dependencies
Assert.assertThat(TypeUtils.getLocationOfClass(Assert.class).toASCIIString(), Matchers.containsString("repository/"));
// Class from project dependencies
Assert.assertThat(TypeUtils.getLocationOfClass(TypeUtils.class).toASCIIString(), Matchers.containsString("/classes/"));
// Class from JVM core
String expectedJavaBase = "/rt.jar";
if (JDK.IS_9)
expectedJavaBase = "/java.base/";
Assert.assertThat(TypeUtils.getLocationOfClass(String.class).toASCIIString(), Matchers.containsString(expectedJavaBase));
}
}