Committed by
Jonathan Hart
Fix unit tests and bugs of EncodableDiscreteResources
Change-Id: Iea3b39dbdcfabaf23fa7e7ef6cb8a98bfe432081
Showing
2 changed files
with
46 additions
and
33 deletions
... | @@ -66,6 +66,17 @@ final class EncodableDiscreteResources implements DiscreteResources { | ... | @@ -66,6 +66,17 @@ final class EncodableDiscreteResources implements DiscreteResources { |
66 | return new EncodableDiscreteResources(parent, values); | 66 | return new EncodableDiscreteResources(parent, values); |
67 | } | 67 | } |
68 | 68 | ||
69 | + private static DiscreteResources of(DiscreteResource parent, Map<Class<?>, EncodedDiscreteResources> map) { | ||
70 | + if (isEmpty(map)) { | ||
71 | + return DiscreteResources.empty(); | ||
72 | + } | ||
73 | + return new EncodableDiscreteResources(parent, map); | ||
74 | + } | ||
75 | + | ||
76 | + private static boolean isEmpty(Map<Class<?>, EncodedDiscreteResources> map) { | ||
77 | + return map.values().stream().allMatch(EncodedDiscreteResources::isEmpty); | ||
78 | + } | ||
79 | + | ||
69 | EncodableDiscreteResources(DiscreteResource parent, Map<Class<?>, EncodedDiscreteResources> map) { | 80 | EncodableDiscreteResources(DiscreteResource parent, Map<Class<?>, EncodedDiscreteResources> map) { |
70 | this.parent = parent; | 81 | this.parent = parent; |
71 | this.map = map; | 82 | this.map = map; |
... | @@ -73,6 +84,9 @@ final class EncodableDiscreteResources implements DiscreteResources { | ... | @@ -73,6 +84,9 @@ final class EncodableDiscreteResources implements DiscreteResources { |
73 | 84 | ||
74 | @Override | 85 | @Override |
75 | public Optional<DiscreteResource> lookup(DiscreteResourceId id) { | 86 | public Optional<DiscreteResource> lookup(DiscreteResourceId id) { |
87 | + if (!id.parent().filter(parent.id()::equals).isPresent()) { | ||
88 | + return Optional.empty(); | ||
89 | + } | ||
76 | DiscreteResource resource = Resources.discrete(id).resource(); | 90 | DiscreteResource resource = Resources.discrete(id).resource(); |
77 | Class<?> cls = getClass(resource); | 91 | Class<?> cls = getClass(resource); |
78 | return Optional.ofNullable(map.get(cls)) | 92 | return Optional.ofNullable(map.get(cls)) |
... | @@ -92,7 +106,7 @@ final class EncodableDiscreteResources implements DiscreteResources { | ... | @@ -92,7 +106,7 @@ final class EncodableDiscreteResources implements DiscreteResources { |
92 | Map.Entry::getValue, | 106 | Map.Entry::getValue, |
93 | EncodedDiscreteResources::difference, | 107 | EncodedDiscreteResources::difference, |
94 | LinkedHashMap::new)); | 108 | LinkedHashMap::new)); |
95 | - return new EncodableDiscreteResources(parent, newMap); | 109 | + return of(parent, newMap); |
96 | } else if (other instanceof EmptyDiscreteResources) { | 110 | } else if (other instanceof EmptyDiscreteResources) { |
97 | return this; | 111 | return this; |
98 | } | 112 | } |
... | @@ -102,8 +116,7 @@ final class EncodableDiscreteResources implements DiscreteResources { | ... | @@ -102,8 +116,7 @@ final class EncodableDiscreteResources implements DiscreteResources { |
102 | 116 | ||
103 | @Override | 117 | @Override |
104 | public boolean isEmpty() { | 118 | public boolean isEmpty() { |
105 | - return map.values().stream() | 119 | + return isEmpty(map); |
106 | - .allMatch(x -> x.isEmpty()); | ||
107 | } | 120 | } |
108 | 121 | ||
109 | @Override | 122 | @Override |
... | @@ -125,7 +138,7 @@ final class EncodableDiscreteResources implements DiscreteResources { | ... | @@ -125,7 +138,7 @@ final class EncodableDiscreteResources implements DiscreteResources { |
125 | EncodedDiscreteResources::add, | 138 | EncodedDiscreteResources::add, |
126 | LinkedHashMap::new | 139 | LinkedHashMap::new |
127 | )); | 140 | )); |
128 | - return new EncodableDiscreteResources(parent, newMap); | 141 | + return of(parent, newMap); |
129 | } else if (other instanceof EmptyDiscreteResources) { | 142 | } else if (other instanceof EmptyDiscreteResources) { |
130 | return this; | 143 | return this; |
131 | } | 144 | } | ... | ... |
... | @@ -62,9 +62,9 @@ public class EncodableDiscreteResourcesTest { | ... | @@ -62,9 +62,9 @@ public class EncodableDiscreteResourcesTest { |
62 | @Test | 62 | @Test |
63 | public void testIfResourceIsNotFound() { | 63 | public void testIfResourceIsNotFound() { |
64 | DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(1)).resource(); | 64 | DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(1)).resource(); |
65 | - DiscreteResource res2 = Resources.discrete(DeviceId.deviceId("b"), PortNumber.portNumber(1)).resource(); | 65 | + DiscreteResource res2 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(2)).resource(); |
66 | 66 | ||
67 | - DiscreteResources sut = GenericDiscreteResources.of(ImmutableSet.of(res1)); | 67 | + DiscreteResources sut = EncodableDiscreteResources.of(ImmutableSet.of(res1)); |
68 | 68 | ||
69 | assertThat(sut.lookup(res2.id()), is(Optional.empty())); | 69 | assertThat(sut.lookup(res2.id()), is(Optional.empty())); |
70 | } | 70 | } |
... | @@ -72,39 +72,39 @@ public class EncodableDiscreteResourcesTest { | ... | @@ -72,39 +72,39 @@ public class EncodableDiscreteResourcesTest { |
72 | @Test | 72 | @Test |
73 | public void testIfDifferenceIsEmpty() { | 73 | public void testIfDifferenceIsEmpty() { |
74 | DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(1)).resource(); | 74 | DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(1)).resource(); |
75 | - DiscreteResource res2 = Resources.discrete(DeviceId.deviceId("b"), PortNumber.portNumber(1)).resource(); | 75 | + DiscreteResource res2 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(2)).resource(); |
76 | 76 | ||
77 | - DiscreteResources sut = GenericDiscreteResources.of(ImmutableSet.of(res1, res2)); | 77 | + DiscreteResources sut = EncodableDiscreteResources.of(ImmutableSet.of(res1, res2)); |
78 | 78 | ||
79 | - DiscreteResources other = GenericDiscreteResources.of(ImmutableSet.of(res1, res2)); | 79 | + DiscreteResources other = EncodableDiscreteResources.of(ImmutableSet.of(res1, res2)); |
80 | 80 | ||
81 | - DiscreteResources expected = GenericDiscreteResources.of(ImmutableSet.of()); | 81 | + DiscreteResources expected = DiscreteResources.empty(); |
82 | assertThat(sut.difference(other), is(expected)); | 82 | assertThat(sut.difference(other), is(expected)); |
83 | } | 83 | } |
84 | 84 | ||
85 | @Test | 85 | @Test |
86 | public void testIfDifferenceIsNotEmpty() { | 86 | public void testIfDifferenceIsNotEmpty() { |
87 | DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(1)).resource(); | 87 | DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(1)).resource(); |
88 | - DiscreteResource res2 = Resources.discrete(DeviceId.deviceId("b"), PortNumber.portNumber(1)).resource(); | 88 | + DiscreteResource res2 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(2)).resource(); |
89 | 89 | ||
90 | - DiscreteResources sut = GenericDiscreteResources.of(ImmutableSet.of(res1, res2)); | 90 | + DiscreteResources sut = EncodableDiscreteResources.of(ImmutableSet.of(res1, res2)); |
91 | 91 | ||
92 | - DiscreteResources other = GenericDiscreteResources.of(ImmutableSet.of(res1)); | 92 | + DiscreteResources other = EncodableDiscreteResources.of(ImmutableSet.of(res1)); |
93 | 93 | ||
94 | - DiscreteResources expected = GenericDiscreteResources.of(ImmutableSet.of(res2)); | 94 | + DiscreteResources expected = EncodableDiscreteResources.of(ImmutableSet.of(res2)); |
95 | assertThat(sut.difference(other), is(expected)); | 95 | assertThat(sut.difference(other), is(expected)); |
96 | } | 96 | } |
97 | 97 | ||
98 | @Test | 98 | @Test |
99 | public void testIfDifferenceIsNotChanged() { | 99 | public void testIfDifferenceIsNotChanged() { |
100 | DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(1)).resource(); | 100 | DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(1)).resource(); |
101 | - DiscreteResource res2 = Resources.discrete(DeviceId.deviceId("b"), PortNumber.portNumber(1)).resource(); | 101 | + DiscreteResource res2 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(2)).resource(); |
102 | 102 | ||
103 | - DiscreteResources sut = GenericDiscreteResources.of(ImmutableSet.of(res1)); | 103 | + DiscreteResources sut = EncodableDiscreteResources.of(ImmutableSet.of(res1)); |
104 | 104 | ||
105 | - DiscreteResources other = GenericDiscreteResources.of(ImmutableSet.of(res2)); | 105 | + DiscreteResources other = EncodableDiscreteResources.of(ImmutableSet.of(res2)); |
106 | 106 | ||
107 | - DiscreteResources expected = GenericDiscreteResources.of(ImmutableSet.of(res1)); | 107 | + DiscreteResources expected = EncodableDiscreteResources.of(ImmutableSet.of(res1)); |
108 | assertThat(sut.difference(other), is(expected)); | 108 | assertThat(sut.difference(other), is(expected)); |
109 | } | 109 | } |
110 | 110 | ||
... | @@ -112,17 +112,17 @@ public class EncodableDiscreteResourcesTest { | ... | @@ -112,17 +112,17 @@ public class EncodableDiscreteResourcesTest { |
112 | public void testDifferenceFromEmpty() { | 112 | public void testDifferenceFromEmpty() { |
113 | DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(1)).resource(); | 113 | DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(1)).resource(); |
114 | 114 | ||
115 | - DiscreteResources sut = GenericDiscreteResources.of(ImmutableSet.of(res1)); | 115 | + DiscreteResources sut = EncodableDiscreteResources.of(ImmutableSet.of(res1)); |
116 | 116 | ||
117 | - DiscreteResources other = GenericDiscreteResources.of(ImmutableSet.of()); | 117 | + DiscreteResources other = DiscreteResources.empty(); |
118 | 118 | ||
119 | - DiscreteResources expected = GenericDiscreteResources.of(ImmutableSet.of(res1)); | 119 | + DiscreteResources expected = EncodableDiscreteResources.of(ImmutableSet.of(res1)); |
120 | assertThat(sut.difference(other), is(expected)); | 120 | assertThat(sut.difference(other), is(expected)); |
121 | } | 121 | } |
122 | 122 | ||
123 | @Test | 123 | @Test |
124 | public void testEmpty() { | 124 | public void testEmpty() { |
125 | - DiscreteResources sut = GenericDiscreteResources.of(ImmutableSet.of()); | 125 | + DiscreteResources sut = EncodableDiscreteResources.of(ImmutableSet.of()); |
126 | 126 | ||
127 | assertThat(sut.isEmpty(), is(true)); | 127 | assertThat(sut.isEmpty(), is(true)); |
128 | } | 128 | } |
... | @@ -131,7 +131,7 @@ public class EncodableDiscreteResourcesTest { | ... | @@ -131,7 +131,7 @@ public class EncodableDiscreteResourcesTest { |
131 | public void testNotEmpty() { | 131 | public void testNotEmpty() { |
132 | DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(1)).resource(); | 132 | DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(1)).resource(); |
133 | 133 | ||
134 | - DiscreteResources sut = GenericDiscreteResources.of(ImmutableSet.of(res1)); | 134 | + DiscreteResources sut = EncodableDiscreteResources.of(ImmutableSet.of(res1)); |
135 | 135 | ||
136 | assertThat(sut.isEmpty(), is(false)); | 136 | assertThat(sut.isEmpty(), is(false)); |
137 | } | 137 | } |
... | @@ -140,7 +140,7 @@ public class EncodableDiscreteResourcesTest { | ... | @@ -140,7 +140,7 @@ public class EncodableDiscreteResourcesTest { |
140 | public void testIfResourceIsContained() { | 140 | public void testIfResourceIsContained() { |
141 | DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(1)).resource(); | 141 | DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(1)).resource(); |
142 | 142 | ||
143 | - DiscreteResources sut = GenericDiscreteResources.of(ImmutableSet.of(res1)); | 143 | + DiscreteResources sut = EncodableDiscreteResources.of(ImmutableSet.of(res1)); |
144 | 144 | ||
145 | assertThat(sut.containsAny(ImmutableSet.of(res1)), is(true)); | 145 | assertThat(sut.containsAny(ImmutableSet.of(res1)), is(true)); |
146 | } | 146 | } |
... | @@ -148,9 +148,9 @@ public class EncodableDiscreteResourcesTest { | ... | @@ -148,9 +148,9 @@ public class EncodableDiscreteResourcesTest { |
148 | @Test | 148 | @Test |
149 | public void testIfResourceIsNotContained() { | 149 | public void testIfResourceIsNotContained() { |
150 | DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(1)).resource(); | 150 | DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(1)).resource(); |
151 | - DiscreteResource res2 = Resources.discrete(DeviceId.deviceId("b"), PortNumber.portNumber(1)).resource(); | 151 | + DiscreteResource res2 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(2)).resource(); |
152 | 152 | ||
153 | - DiscreteResources sut = GenericDiscreteResources.of(ImmutableSet.of(res1)); | 153 | + DiscreteResources sut = EncodableDiscreteResources.of(ImmutableSet.of(res1)); |
154 | 154 | ||
155 | assertThat(sut.containsAny(ImmutableSet.of(res2)), is(false)); | 155 | assertThat(sut.containsAny(ImmutableSet.of(res2)), is(false)); |
156 | } | 156 | } |
... | @@ -159,7 +159,7 @@ public class EncodableDiscreteResourcesTest { | ... | @@ -159,7 +159,7 @@ public class EncodableDiscreteResourcesTest { |
159 | public void testContainsWithEmpty() { | 159 | public void testContainsWithEmpty() { |
160 | DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(1)).resource(); | 160 | DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(1)).resource(); |
161 | 161 | ||
162 | - DiscreteResources sut = GenericDiscreteResources.of(ImmutableSet.of(res1)); | 162 | + DiscreteResources sut = EncodableDiscreteResources.of(ImmutableSet.of(res1)); |
163 | 163 | ||
164 | assertThat(sut.containsAny(ImmutableSet.of()), is(false)); | 164 | assertThat(sut.containsAny(ImmutableSet.of()), is(false)); |
165 | } | 165 | } |
... | @@ -167,22 +167,22 @@ public class EncodableDiscreteResourcesTest { | ... | @@ -167,22 +167,22 @@ public class EncodableDiscreteResourcesTest { |
167 | @Test | 167 | @Test |
168 | public void testAdd() { | 168 | public void testAdd() { |
169 | DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(1)).resource(); | 169 | DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(1)).resource(); |
170 | - DiscreteResource res2 = Resources.discrete(DeviceId.deviceId("b"), PortNumber.portNumber(1)).resource(); | 170 | + DiscreteResource res2 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(2)).resource(); |
171 | 171 | ||
172 | - DiscreteResources sut = GenericDiscreteResources.of(ImmutableSet.of(res1)); | 172 | + DiscreteResources sut = EncodableDiscreteResources.of(ImmutableSet.of(res1)); |
173 | 173 | ||
174 | - DiscreteResources other = GenericDiscreteResources.of(ImmutableSet.of(res2)); | 174 | + DiscreteResources other = EncodableDiscreteResources.of(ImmutableSet.of(res2)); |
175 | 175 | ||
176 | - DiscreteResources expected = GenericDiscreteResources.of(ImmutableSet.of(res1, res2)); | 176 | + DiscreteResources expected = EncodableDiscreteResources.of(ImmutableSet.of(res1, res2)); |
177 | assertThat(sut.add(other), is(expected)); | 177 | assertThat(sut.add(other), is(expected)); |
178 | } | 178 | } |
179 | 179 | ||
180 | @Test | 180 | @Test |
181 | public void testValues() { | 181 | public void testValues() { |
182 | DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(1)).resource(); | 182 | DiscreteResource res1 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(1)).resource(); |
183 | - DiscreteResource res2 = Resources.discrete(DeviceId.deviceId("b"), PortNumber.portNumber(1)).resource(); | 183 | + DiscreteResource res2 = Resources.discrete(DeviceId.deviceId("a"), PortNumber.portNumber(2)).resource(); |
184 | 184 | ||
185 | - DiscreteResources sut = GenericDiscreteResources.of(ImmutableSet.of(res1, res2)); | 185 | + DiscreteResources sut = EncodableDiscreteResources.of(ImmutableSet.of(res1, res2)); |
186 | 186 | ||
187 | assertThat(sut.values(), is(ImmutableSet.of(res1, res2))); | 187 | assertThat(sut.values(), is(ImmutableSet.of(res1, res2))); |
188 | } | 188 | } | ... | ... |
-
Please register or login to post a comment