|
6 | 6 | import org.junit.Test; |
7 | 7 |
|
8 | 8 | public class IsInstanceIsAssignableFromUnitTest { |
9 | | - |
| 9 | + |
10 | 10 | @Test |
11 | | - public void whenUsingIsInstanceProperly_desiredResultsHappen() { |
| 11 | + public void whenUsingInstanceOfProperly_thenDesiredResultsHappen() { |
| 12 | + Shape shape = new Triangle(); |
| 13 | + Triangle triangle = new Triangle(); |
| 14 | + IsoscelesTriangle isoscelesTriangle = new IsoscelesTriangle(); |
| 15 | + Shape nonspecificShape = null; |
| 16 | + |
| 17 | + assertTrue(shape instanceof Shape); |
| 18 | + assertTrue(triangle instanceof Shape); |
| 19 | + assertTrue(isoscelesTriangle instanceof Shape); |
| 20 | + assertFalse(nonspecificShape instanceof Shape); |
| 21 | + |
| 22 | + assertTrue(shape instanceof Triangle); |
| 23 | + assertTrue(triangle instanceof Triangle); |
| 24 | + assertTrue(isoscelesTriangle instanceof Triangle); |
| 25 | + assertFalse(nonspecificShape instanceof Triangle); |
| 26 | + |
| 27 | + assertFalse(shape instanceof IsoscelesTriangle); |
| 28 | + assertFalse(triangle instanceof IsoscelesTriangle); |
| 29 | + assertTrue(isoscelesTriangle instanceof IsoscelesTriangle); |
| 30 | + assertFalse(nonspecificShape instanceof IsoscelesTriangle); |
| 31 | + } |
| 32 | + |
| 33 | + @Test |
| 34 | + public void whenUsingIsInstanceProperly_thenDesiredResultsHappen() { |
12 | 35 | Shape shape = new Triangle(); |
13 | 36 | Triangle triangle = new Triangle(); |
14 | 37 | IsoscelesTriangle isoscelesTriangle = new IsoscelesTriangle(); |
15 | 38 | Triangle isoscelesTriangle2 = new IsoscelesTriangle(); |
16 | 39 | Shape nonspecificShape = null; |
17 | | - |
| 40 | + |
18 | 41 | assertTrue(Shape.class.isInstance(shape)); |
19 | 42 | assertTrue(Shape.class.isInstance(triangle)); |
20 | 43 | assertTrue(Shape.class.isInstance(isoscelesTriangle)); |
21 | 44 | assertTrue(Shape.class.isInstance(isoscelesTriangle2)); |
22 | 45 | assertFalse(Shape.class.isInstance(nonspecificShape)); |
23 | | - |
| 46 | + |
24 | 47 | assertTrue(Triangle.class.isInstance(shape)); |
25 | 48 | assertTrue(Triangle.class.isInstance(triangle)); |
26 | 49 | assertTrue(Triangle.class.isInstance(isoscelesTriangle)); |
27 | 50 | assertTrue(Triangle.class.isInstance(isoscelesTriangle2)); |
28 | | - |
| 51 | + |
29 | 52 | assertFalse(IsoscelesTriangle.class.isInstance(shape)); |
30 | 53 | assertFalse(IsoscelesTriangle.class.isInstance(triangle)); |
31 | 54 | assertTrue(IsoscelesTriangle.class.isInstance(isoscelesTriangle)); |
32 | | - assertTrue(IsoscelesTriangle.class.isInstance(isoscelesTriangle2)); |
| 55 | + assertTrue(IsoscelesTriangle.class.isInstance(isoscelesTriangle2)); |
33 | 56 | } |
34 | | - |
| 57 | + |
35 | 58 | @Test |
36 | | - public void whenUsingIsAssignableFromProperly_desiredResultsHappen() { |
| 59 | + public void whenUsingIsAssignableFromProperly_thenDesiredResultsHappen() { |
37 | 60 | Shape shape = new Triangle(); |
38 | 61 | Triangle triangle = new Triangle(); |
39 | 62 | IsoscelesTriangle isoscelesTriangle = new IsoscelesTriangle(); |
40 | 63 | Triangle isoscelesTriangle2 = new IsoscelesTriangle(); |
41 | | - |
| 64 | + |
42 | 65 | assertFalse(shape.getClass().isAssignableFrom(Shape.class)); |
43 | 66 | assertTrue(shape.getClass().isAssignableFrom(shape.getClass())); |
44 | 67 | assertTrue(shape.getClass().isAssignableFrom(triangle.getClass())); |
45 | 68 | assertTrue(shape.getClass().isAssignableFrom(isoscelesTriangle.getClass())); |
46 | 69 | assertTrue(shape.getClass().isAssignableFrom(isoscelesTriangle2.getClass())); |
47 | | - |
| 70 | + |
48 | 71 | assertFalse(triangle.getClass().isAssignableFrom(Shape.class)); |
49 | 72 | assertTrue(triangle.getClass().isAssignableFrom(shape.getClass())); |
50 | 73 | assertTrue(triangle.getClass().isAssignableFrom(triangle.getClass())); |
51 | 74 | assertTrue(triangle.getClass().isAssignableFrom(isoscelesTriangle.getClass())); |
52 | 75 | assertTrue(triangle.getClass().isAssignableFrom(isoscelesTriangle2.getClass())); |
53 | | - |
| 76 | + |
54 | 77 | assertFalse(isoscelesTriangle.getClass().isAssignableFrom(Shape.class)); |
55 | 78 | assertFalse(isoscelesTriangle.getClass().isAssignableFrom(shape.getClass())); |
56 | 79 | assertFalse(isoscelesTriangle.getClass().isAssignableFrom(triangle.getClass())); |
57 | 80 | assertTrue(isoscelesTriangle.getClass().isAssignableFrom(isoscelesTriangle.getClass())); |
58 | 81 | assertTrue(isoscelesTriangle.getClass().isAssignableFrom(isoscelesTriangle2.getClass())); |
59 | | - |
| 82 | + |
60 | 83 | assertFalse(isoscelesTriangle2.getClass().isAssignableFrom(Shape.class)); |
61 | 84 | assertFalse(isoscelesTriangle2.getClass().isAssignableFrom(shape.getClass())); |
62 | 85 | assertFalse(isoscelesTriangle2.getClass().isAssignableFrom(triangle.getClass())); |
63 | 86 | assertTrue(isoscelesTriangle2.getClass().isAssignableFrom(isoscelesTriangle.getClass())); |
64 | 87 | assertTrue(isoscelesTriangle2.getClass().isAssignableFrom(isoscelesTriangle2.getClass())); |
65 | 88 | } |
66 | 89 |
|
| 90 | + @Test(expected = NullPointerException.class) |
| 91 | + public void whenUsingNull_thenDesiredResultsHappen() { |
| 92 | + assertFalse(null instanceof Shape); |
| 93 | + assertFalse(Shape.class.isInstance(null)); |
| 94 | + assertFalse(Shape.class.isAssignableFrom(null)); // NullPointerException |
| 95 | + } |
| 96 | + |
| 97 | + @Test |
| 98 | + public void whenUsingPrimitiveType_thenDesiredResultsHappen() { |
| 99 | + //assertFalse(10 instanceof int); // illegal |
| 100 | + assertFalse(int.class.isInstance(10)); |
| 101 | + assertTrue(Integer.class.isInstance(10)); |
| 102 | + assertTrue(int.class.isAssignableFrom(int.class)); |
| 103 | + assertFalse(float.class.isAssignableFrom(int.class)); |
| 104 | + } |
| 105 | + |
| 106 | + @Test |
| 107 | + public void whenUsingClassInstanceVariable_thenDesiredResultsHappen() { |
| 108 | + Shape shape = new Triangle(); |
| 109 | + Triangle triangle = new Triangle(); |
| 110 | + Class<?> clazz = shape.getClass(); |
| 111 | + |
| 112 | + //assertFalse(triangle instanceof clazz); // illegal |
| 113 | + assertTrue(clazz.isInstance(triangle)); |
| 114 | + assertTrue(clazz.isAssignableFrom(triangle.getClass())); |
| 115 | + } |
| 116 | + |
67 | 117 | } |
0 commit comments