10
10
11
11
/**
12
12
* Tests whether the value is an instance of a class.
13
+ * Classes of basic types will be converted to the relevant "Object" classes
13
14
*/
14
15
public class IsInstanceOf extends DiagnosingMatcher <Object > {
15
- private final Class <?> theClass ;
16
+ private final Class <?> expectedClass ;
17
+ private final Class <?> matchableClass ;
16
18
17
19
/**
18
20
* Creates a new instance of IsInstanceOf
19
21
*
20
- * @param theClass The predicate evaluates to true for instances of this class
22
+ * @param expectedClass The predicate evaluates to true for instances of this class
21
23
* or one of its subclasses.
22
24
*/
23
- public IsInstanceOf (Class <?> theClass ) {
24
- this .theClass = theClass ;
25
+ public IsInstanceOf (Class <?> expectedClass ) {
26
+ this .expectedClass = expectedClass ;
27
+ this .matchableClass = matchableClass (expectedClass );
28
+ }
29
+
30
+ private static Class <?> matchableClass (Class <?> expectedClass ) {
31
+ if (boolean .class .equals (expectedClass )) return Boolean .class ;
32
+ if (byte .class .equals (expectedClass )) return Byte .class ;
33
+ if (char .class .equals (expectedClass )) return Character .class ;
34
+ if (double .class .equals (expectedClass )) return Double .class ;
35
+ if (float .class .equals (expectedClass )) return Float .class ;
36
+ if (int .class .equals (expectedClass )) return Integer .class ;
37
+ if (long .class .equals (expectedClass )) return Long .class ;
38
+ if (short .class .equals (expectedClass )) return Short .class ;
39
+ return expectedClass ;
25
40
}
26
41
27
42
@ Override
@@ -31,7 +46,7 @@ protected boolean matches(Object item, Description mismatchDescription) {
31
46
return false ;
32
47
}
33
48
34
- if (!theClass .isInstance (item )) {
49
+ if (!matchableClass .isInstance (item )) {
35
50
mismatchDescription .appendValue (item ).appendText (" is a " + item .getClass ().getName ());
36
51
return false ;
37
52
}
@@ -41,7 +56,7 @@ protected boolean matches(Object item, Description mismatchDescription) {
41
56
42
57
public void describeTo (Description description ) {
43
58
description .appendText ("an instance of " )
44
- .appendText (theClass .getName ());
59
+ .appendText (expectedClass .getName ());
45
60
}
46
61
47
62
/**
0 commit comments