Committed by
Gerrit Code Review
Fix bug of Resource#isSubTypeOf() and improve unit test coverage
Change-Id: I5488c1065a8f83abb110ad67276c30eb719ccd01
Showing
4 changed files
with
49 additions
and
5 deletions
... | @@ -77,8 +77,7 @@ public final class ContinuousResource implements Resource { | ... | @@ -77,8 +77,7 @@ public final class ContinuousResource implements Resource { |
77 | String typeName = (String) id.components().get(id.components().size() - 1); | 77 | String typeName = (String) id.components().get(id.components().size() - 1); |
78 | boolean foundInLeaf = typeName.equals(ancestor.getCanonicalName()); | 78 | boolean foundInLeaf = typeName.equals(ancestor.getCanonicalName()); |
79 | boolean foundInAncestor = id.components().subList(0, id.components().size()).stream() | 79 | boolean foundInAncestor = id.components().subList(0, id.components().size()).stream() |
80 | - .map(Object::getClass) | 80 | + .filter(x -> ancestor.isAssignableFrom(x.getClass())) |
81 | - .filter(x -> x.equals(ancestor)) | ||
82 | .findAny() | 81 | .findAny() |
83 | .isPresent(); | 82 | .isPresent(); |
84 | return foundInAncestor || foundInLeaf; | 83 | return foundInAncestor || foundInLeaf; | ... | ... |
... | @@ -66,8 +66,7 @@ public final class DiscreteResource implements Resource { | ... | @@ -66,8 +66,7 @@ public final class DiscreteResource implements Resource { |
66 | checkNotNull(ancestor); | 66 | checkNotNull(ancestor); |
67 | 67 | ||
68 | return id.components().stream() | 68 | return id.components().stream() |
69 | - .map(Object::getClass) | 69 | + .filter(x -> ancestor.isAssignableFrom(x.getClass())) |
70 | - .filter(x -> x.equals(ancestor)) | ||
71 | .findAny() | 70 | .findAny() |
72 | .isPresent(); | 71 | .isPresent(); |
73 | } | 72 | } | ... | ... |
... | @@ -52,6 +52,7 @@ public class ContinuousResourceTest { | ... | @@ -52,6 +52,7 @@ public class ContinuousResourceTest { |
52 | public void testTypeOf() { | 52 | public void testTypeOf() { |
53 | ContinuousResource continuous = Resources.continuous(D1, P1, Bandwidth.class) | 53 | ContinuousResource continuous = Resources.continuous(D1, P1, Bandwidth.class) |
54 | .resource(BW1.bps()); | 54 | .resource(BW1.bps()); |
55 | + | ||
55 | assertThat(continuous.isTypeOf(DeviceId.class), is(false)); | 56 | assertThat(continuous.isTypeOf(DeviceId.class), is(false)); |
56 | assertThat(continuous.isTypeOf(PortNumber.class), is(false)); | 57 | assertThat(continuous.isTypeOf(PortNumber.class), is(false)); |
57 | assertThat(continuous.isTypeOf(Bandwidth.class), is(true)); | 58 | assertThat(continuous.isTypeOf(Bandwidth.class), is(true)); |
... | @@ -61,6 +62,7 @@ public class ContinuousResourceTest { | ... | @@ -61,6 +62,7 @@ public class ContinuousResourceTest { |
61 | public void testSubTypeOf() { | 62 | public void testSubTypeOf() { |
62 | ContinuousResource continuous = Resources.continuous(D1, P1, Bandwidth.class) | 63 | ContinuousResource continuous = Resources.continuous(D1, P1, Bandwidth.class) |
63 | .resource(BW1.bps()); | 64 | .resource(BW1.bps()); |
65 | + | ||
64 | assertThat(continuous.isSubTypeOf(DeviceId.class), is(true)); | 66 | assertThat(continuous.isSubTypeOf(DeviceId.class), is(true)); |
65 | assertThat(continuous.isSubTypeOf(PortNumber.class), is(true)); | 67 | assertThat(continuous.isSubTypeOf(PortNumber.class), is(true)); |
66 | assertThat(continuous.isSubTypeOf(Bandwidth.class), is(true)); | 68 | assertThat(continuous.isSubTypeOf(Bandwidth.class), is(true)); |
... | @@ -68,11 +70,46 @@ public class ContinuousResourceTest { | ... | @@ -68,11 +70,46 @@ public class ContinuousResourceTest { |
68 | } | 70 | } |
69 | 71 | ||
70 | @Test | 72 | @Test |
71 | - public void testValueAs() { | 73 | + public void testSubTypeOfObject() { |
74 | + ContinuousResource continuous = Resources.continuous(D1, P1, Bandwidth.class) | ||
75 | + .resource(BW1.bps()); | ||
76 | + | ||
77 | + assertThat(continuous.isSubTypeOf(Object.class), is(true)); | ||
78 | + } | ||
79 | + | ||
80 | + @Test | ||
81 | + public void testValueAsPrimitiveDouble() { | ||
72 | ContinuousResource resource = Resources.continuous(D1, P1, Bandwidth.class) | 82 | ContinuousResource resource = Resources.continuous(D1, P1, Bandwidth.class) |
73 | .resource(BW1.bps()); | 83 | .resource(BW1.bps()); |
74 | 84 | ||
75 | Optional<Double> volume = resource.valueAs(double.class); | 85 | Optional<Double> volume = resource.valueAs(double.class); |
76 | assertThat(volume.get(), is(BW1.bps())); | 86 | assertThat(volume.get(), is(BW1.bps())); |
77 | } | 87 | } |
88 | + | ||
89 | + @Test | ||
90 | + public void testValueAsDouble() { | ||
91 | + ContinuousResource resource = Resources.continuous(D1, P1, Bandwidth.class) | ||
92 | + .resource(BW1.bps()); | ||
93 | + | ||
94 | + Optional<Double> value = resource.valueAs(Double.class); | ||
95 | + assertThat(value.get(), is(BW1.bps())); | ||
96 | + } | ||
97 | + | ||
98 | + @Test | ||
99 | + public void testValueAsObject() { | ||
100 | + ContinuousResource resource = Resources.continuous(D1, P1, Bandwidth.class) | ||
101 | + .resource(BW1.bps()); | ||
102 | + | ||
103 | + Optional<Double> value = resource.valueAs(Double.class); | ||
104 | + assertThat(value.get(), is(BW1.bps())); | ||
105 | + } | ||
106 | + | ||
107 | + @Test | ||
108 | + public void testValueAsIncompatibleType() { | ||
109 | + ContinuousResource resource = Resources.continuous(D1, P1, Bandwidth.class) | ||
110 | + .resource(BW1.bps()); | ||
111 | + | ||
112 | + Optional<VlanId> value = resource.valueAs(VlanId.class); | ||
113 | + assertThat(value, is(Optional.empty())); | ||
114 | + } | ||
78 | } | 115 | } | ... | ... |
... | @@ -76,6 +76,7 @@ public class DiscreteResourceTest { | ... | @@ -76,6 +76,7 @@ public class DiscreteResourceTest { |
76 | @Test | 76 | @Test |
77 | public void testTypeOf() { | 77 | public void testTypeOf() { |
78 | DiscreteResource discrete = Resources.discrete(D1, P1, VLAN1).resource(); | 78 | DiscreteResource discrete = Resources.discrete(D1, P1, VLAN1).resource(); |
79 | + | ||
79 | assertThat(discrete.isTypeOf(DeviceId.class), is(false)); | 80 | assertThat(discrete.isTypeOf(DeviceId.class), is(false)); |
80 | assertThat(discrete.isTypeOf(PortNumber.class), is(false)); | 81 | assertThat(discrete.isTypeOf(PortNumber.class), is(false)); |
81 | assertThat(discrete.isTypeOf(VlanId.class), is(true)); | 82 | assertThat(discrete.isTypeOf(VlanId.class), is(true)); |
... | @@ -84,6 +85,7 @@ public class DiscreteResourceTest { | ... | @@ -84,6 +85,7 @@ public class DiscreteResourceTest { |
84 | @Test | 85 | @Test |
85 | public void testSubTypeOf() { | 86 | public void testSubTypeOf() { |
86 | DiscreteResource discrete = Resources.discrete(D1, P1, VLAN1).resource(); | 87 | DiscreteResource discrete = Resources.discrete(D1, P1, VLAN1).resource(); |
88 | + | ||
87 | assertThat(discrete.isSubTypeOf(DeviceId.class), is(true)); | 89 | assertThat(discrete.isSubTypeOf(DeviceId.class), is(true)); |
88 | assertThat(discrete.isSubTypeOf(PortNumber.class), is(true)); | 90 | assertThat(discrete.isSubTypeOf(PortNumber.class), is(true)); |
89 | assertThat(discrete.isSubTypeOf(VlanId.class), is(true)); | 91 | assertThat(discrete.isSubTypeOf(VlanId.class), is(true)); |
... | @@ -91,6 +93,13 @@ public class DiscreteResourceTest { | ... | @@ -91,6 +93,13 @@ public class DiscreteResourceTest { |
91 | } | 93 | } |
92 | 94 | ||
93 | @Test | 95 | @Test |
96 | + public void testSubTypeOfObject() { | ||
97 | + DiscreteResource discrete = Resources.discrete(D1, P1, VLAN1).resource(); | ||
98 | + | ||
99 | + assertThat(discrete.isSubTypeOf(Object.class), is(true)); | ||
100 | + } | ||
101 | + | ||
102 | + @Test | ||
94 | public void testValueAs() { | 103 | public void testValueAs() { |
95 | DiscreteResource resource = Resources.discrete(D1).resource(); | 104 | DiscreteResource resource = Resources.discrete(D1).resource(); |
96 | 105 | ... | ... |
-
Please register or login to post a comment