Skip to content

Commit acd2445

Browse files
committed
Add new section on instanceof
1 parent d451257 commit acd2445

1 file changed

Lines changed: 62 additions & 12 deletions

File tree

core-java-modules/core-java-lang-3/src/test/java/com/baeldung/isinstancevsisassignablefrom/IsInstanceIsAssignableFromUnitTest.java

Lines changed: 62 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,62 +6,112 @@
66
import org.junit.Test;
77

88
public class IsInstanceIsAssignableFromUnitTest {
9-
9+
1010
@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() {
1235
Shape shape = new Triangle();
1336
Triangle triangle = new Triangle();
1437
IsoscelesTriangle isoscelesTriangle = new IsoscelesTriangle();
1538
Triangle isoscelesTriangle2 = new IsoscelesTriangle();
1639
Shape nonspecificShape = null;
17-
40+
1841
assertTrue(Shape.class.isInstance(shape));
1942
assertTrue(Shape.class.isInstance(triangle));
2043
assertTrue(Shape.class.isInstance(isoscelesTriangle));
2144
assertTrue(Shape.class.isInstance(isoscelesTriangle2));
2245
assertFalse(Shape.class.isInstance(nonspecificShape));
23-
46+
2447
assertTrue(Triangle.class.isInstance(shape));
2548
assertTrue(Triangle.class.isInstance(triangle));
2649
assertTrue(Triangle.class.isInstance(isoscelesTriangle));
2750
assertTrue(Triangle.class.isInstance(isoscelesTriangle2));
28-
51+
2952
assertFalse(IsoscelesTriangle.class.isInstance(shape));
3053
assertFalse(IsoscelesTriangle.class.isInstance(triangle));
3154
assertTrue(IsoscelesTriangle.class.isInstance(isoscelesTriangle));
32-
assertTrue(IsoscelesTriangle.class.isInstance(isoscelesTriangle2));
55+
assertTrue(IsoscelesTriangle.class.isInstance(isoscelesTriangle2));
3356
}
34-
57+
3558
@Test
36-
public void whenUsingIsAssignableFromProperly_desiredResultsHappen() {
59+
public void whenUsingIsAssignableFromProperly_thenDesiredResultsHappen() {
3760
Shape shape = new Triangle();
3861
Triangle triangle = new Triangle();
3962
IsoscelesTriangle isoscelesTriangle = new IsoscelesTriangle();
4063
Triangle isoscelesTriangle2 = new IsoscelesTriangle();
41-
64+
4265
assertFalse(shape.getClass().isAssignableFrom(Shape.class));
4366
assertTrue(shape.getClass().isAssignableFrom(shape.getClass()));
4467
assertTrue(shape.getClass().isAssignableFrom(triangle.getClass()));
4568
assertTrue(shape.getClass().isAssignableFrom(isoscelesTriangle.getClass()));
4669
assertTrue(shape.getClass().isAssignableFrom(isoscelesTriangle2.getClass()));
47-
70+
4871
assertFalse(triangle.getClass().isAssignableFrom(Shape.class));
4972
assertTrue(triangle.getClass().isAssignableFrom(shape.getClass()));
5073
assertTrue(triangle.getClass().isAssignableFrom(triangle.getClass()));
5174
assertTrue(triangle.getClass().isAssignableFrom(isoscelesTriangle.getClass()));
5275
assertTrue(triangle.getClass().isAssignableFrom(isoscelesTriangle2.getClass()));
53-
76+
5477
assertFalse(isoscelesTriangle.getClass().isAssignableFrom(Shape.class));
5578
assertFalse(isoscelesTriangle.getClass().isAssignableFrom(shape.getClass()));
5679
assertFalse(isoscelesTriangle.getClass().isAssignableFrom(triangle.getClass()));
5780
assertTrue(isoscelesTriangle.getClass().isAssignableFrom(isoscelesTriangle.getClass()));
5881
assertTrue(isoscelesTriangle.getClass().isAssignableFrom(isoscelesTriangle2.getClass()));
59-
82+
6083
assertFalse(isoscelesTriangle2.getClass().isAssignableFrom(Shape.class));
6184
assertFalse(isoscelesTriangle2.getClass().isAssignableFrom(shape.getClass()));
6285
assertFalse(isoscelesTriangle2.getClass().isAssignableFrom(triangle.getClass()));
6386
assertTrue(isoscelesTriangle2.getClass().isAssignableFrom(isoscelesTriangle.getClass()));
6487
assertTrue(isoscelesTriangle2.getClass().isAssignableFrom(isoscelesTriangle2.getClass()));
6588
}
6689

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+
67117
}

0 commit comments

Comments
 (0)