1 package org.djutils.primitives;
2
3 import org.junit.Test;
4
5 import junit.framework.TestCase;
6
7
8
9
10
11
12
13
14
15
16
17 public class PrimitiveTest extends TestCase
18 {
19
20
21
22
23 @Test
24 public void test()
25 {
26 assertEquals(Primitive.getPrimitive(Boolean.class), boolean.class);
27 assertEquals(Primitive.getPrimitive(Integer.class), int.class);
28 assertEquals(Primitive.getPrimitive(Double.class), double.class);
29 assertEquals(Primitive.getPrimitive(Float.class), float.class);
30 assertEquals(Primitive.getPrimitive(Character.class), char.class);
31 assertEquals(Primitive.getPrimitive(Byte.class), byte.class);
32 assertEquals(Primitive.getPrimitive(Short.class), short.class);
33 assertEquals(Primitive.getPrimitive(Long.class), long.class);
34 assertNull(Primitive.getPrimitive(String.class));
35
36 assertEquals(Primitive.getWrapper(boolean.class), Boolean.class);
37 assertEquals(Primitive.getWrapper(int.class), Integer.class);
38 assertEquals(Primitive.getWrapper(double.class), Double.class);
39 assertEquals(Primitive.getWrapper(float.class), Float.class);
40 assertEquals(Primitive.getWrapper(char.class), Character.class);
41 assertEquals(Primitive.getWrapper(byte.class), Byte.class);
42 assertEquals(Primitive.getWrapper(long.class), Long.class);
43 assertEquals(Primitive.getWrapper(short.class), Short.class);
44 try
45 {
46 Primitive.getWrapper(String[].class);
47 fail("getWrapper for non primitive class should have thrown an IllegalArgumentException");
48 }
49 catch (IllegalArgumentException iae)
50 {
51
52 }
53
54 assertEquals(Primitive.toBoolean(Integer.valueOf(1)), Boolean.TRUE);
55 assertEquals(Primitive.toBoolean(1.0), Boolean.TRUE);
56 assertEquals(Primitive.toBoolean(1.0f), Boolean.TRUE);
57 assertEquals(Primitive.toBoolean((short) 1.0), Boolean.TRUE);
58 assertEquals(Primitive.toBoolean(1L), Boolean.TRUE);
59
60 assertEquals(Primitive.toBoolean(Integer.valueOf(0)), Boolean.FALSE);
61 assertEquals(Primitive.toBoolean(0.0), Boolean.FALSE);
62 assertEquals(Primitive.toBoolean(0.0f), Boolean.FALSE);
63 assertEquals(Primitive.toBoolean((short) 0.0), Boolean.FALSE);
64 assertEquals(Primitive.toBoolean(0L), Boolean.FALSE);
65 try
66 {
67 Primitive.toBoolean(Integer.valueOf(-1));
68 fail("casting number not in {0, 1} to boolean should have thrown an IllegalArgumentException");
69 }
70 catch (IllegalArgumentException iae)
71 {
72
73 }
74 try
75 {
76 Primitive.toBoolean(Integer.valueOf(2));
77 fail("casting number not in {0, 1} to boolean should have thrown an IllegalArgumentException");
78 }
79 catch (IllegalArgumentException iae)
80 {
81
82 }
83 try
84 {
85 Primitive.toBoolean(new String[] {"ab", "cd"});
86 fail("casting unrelated object to boolean should have thrown a ClassCastException");
87 }
88 catch (ClassCastException cce)
89 {
90
91 }
92 assertEquals(Primitive.toBoolean(false), Boolean.FALSE);
93 assertEquals(Primitive.toBoolean(true), Boolean.TRUE);
94
95 assertEquals((Integer) 0x61, Primitive.toInteger('a'));
96 assertEquals((Integer) 1, Primitive.toInteger(true));
97 assertEquals((Integer) 0, Primitive.toInteger(false));
98 }
99
100
101
102
103 @Test
104 public void testCast()
105 {
106 String junk = "Junk";
107 assertEquals(junk, Primitive.cast(String.class, junk));
108 assertEquals(true, Primitive.cast(boolean.class, 1));
109 assertEquals('a', Primitive.cast(char.class, 0x61));
110 Byte b = 0x77;
111 assertEquals(b, Primitive.cast(byte.class, 0x77));
112 assertEquals(123.0, Primitive.cast(double.class, 123L));
113 assertEquals(123.0f, Primitive.cast(float.class, 123L));
114 assertEquals(123456L, Primitive.cast(long.class, 123456.0));
115 assertEquals(-123456, Primitive.cast(int.class, -123456.0));
116 assertEquals((short) -123, Primitive.cast(short.class, -123.0));
117 Object[] in = new Object[] {123, 2.0};
118 Class<?>[] to = new Class[] {float.class, byte.class};
119 Object[] out = Primitive.cast(to, in);
120 assertEquals(123.0f, out[0]);
121 assertEquals((byte) 2, out[1]);
122 }
123
124
125
126
127 @Test
128 public void testPrimitiveAssignable()
129 {
130 assertFalse(Primitive.isPrimitiveAssignableFrom(Integer.class, Number.class));
131 assertTrue(Primitive.isPrimitiveAssignableFrom(Number.class, Integer.class));
132 assertFalse(Primitive.isPrimitiveAssignableFrom(double.class, Number.class));
133 assertTrue(Primitive.isPrimitiveAssignableFrom(Number.class, double.class));
134 assertTrue(Primitive.isPrimitiveAssignableFrom(Integer.class, int.class));
135 assertFalse(Primitive.isPrimitiveAssignableFrom(Double.class, Integer.class));
136 assertTrue(Primitive.isPrimitiveAssignableFrom(long.class, Long.class));
137 assertFalse(Primitive.isPrimitiveAssignableFrom(double.class, int.class));
138 assertFalse(Primitive.isPrimitiveAssignableFrom(Double.class, int.class));
139 assertFalse(Primitive.isPrimitiveAssignableFrom(double.class, Integer.class));
140 assertFalse(Primitive.isPrimitiveAssignableFrom(String.class, CharSequence.class));
141 assertTrue(Primitive.isPrimitiveAssignableFrom(CharSequence.class, String.class));
142 }
143 }