blob: 6bf46803376f2e1b08df83d8238b4f46aa401acc [file] [log] [blame]
Ray Milkey73ba84a2015-02-04 17:08:41 -08001/*
2 * Copyright 2015 Open Networking Laboratory
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16package org.onosproject.codec.impl;
17
18import java.util.EnumMap;
19
Ray Milkey9ee62f52015-02-06 13:47:35 -080020import org.junit.Before;
Ray Milkey73ba84a2015-02-04 17:08:41 -080021import org.junit.Test;
Ray Milkey9ee62f52015-02-06 13:47:35 -080022import org.onlab.packet.Ip6Address;
23import org.onlab.packet.IpPrefix;
24import org.onlab.packet.MacAddress;
Michele Santuari4b6019e2014-12-19 11:31:45 +010025import org.onlab.packet.MplsLabel;
Hyunsun Mooncf732fb2015-08-22 21:04:23 -070026import org.onlab.packet.TpPort;
Ray Milkey9ee62f52015-02-06 13:47:35 -080027import org.onlab.packet.VlanId;
28import org.onosproject.codec.CodecContext;
29import org.onosproject.codec.JsonCodec;
Sho SHIMIZUc44c0c32015-06-01 11:40:48 -070030import org.onosproject.net.ChannelSpacing;
31import org.onosproject.net.GridType;
32import org.onosproject.net.Lambda;
Sho SHIMIZU6c70f642015-05-29 17:27:22 -070033import org.onosproject.net.OchSignalType;
Ray Milkey9ee62f52015-02-06 13:47:35 -080034import org.onosproject.net.PortNumber;
35import org.onosproject.net.flow.criteria.Criteria;
Ray Milkey73ba84a2015-02-04 17:08:41 -080036import org.onosproject.net.flow.criteria.Criterion;
37
Ray Milkey9ee62f52015-02-06 13:47:35 -080038import com.fasterxml.jackson.databind.node.ObjectNode;
39
Ray Milkey73ba84a2015-02-04 17:08:41 -080040import static org.hamcrest.MatcherAssert.assertThat;
Ray Milkey0cc189e2015-02-09 11:08:01 -080041import static org.hamcrest.Matchers.is;
42import static org.hamcrest.Matchers.notNullValue;
43import static org.onlab.junit.TestUtils.getField;
44import static org.onlab.junit.TestUtils.setField;
Ray Milkey46670a82015-02-08 17:57:17 -080045import static org.onosproject.codec.impl.CriterionJsonMatcher.matchesCriterion;
Ray Milkey73ba84a2015-02-04 17:08:41 -080046
47/**
48 * Unit tests for criterion codec.
49 */
50public class CriterionCodecTest {
51
Ray Milkey9ee62f52015-02-06 13:47:35 -080052 CodecContext context;
53 JsonCodec<Criterion> criterionCodec;
54 final PortNumber port = PortNumber.portNumber(1);
55 final IpPrefix ipPrefix4 = IpPrefix.valueOf("10.1.1.0/24");
56 final IpPrefix ipPrefix6 = IpPrefix.valueOf("fe80::/64");
57 final MacAddress mac1 = MacAddress.valueOf("00:00:11:00:00:01");
Hyunsun Mooncf732fb2015-08-22 21:04:23 -070058 final TpPort tpPort = TpPort.tpPort(40000);
Ray Milkey9ee62f52015-02-06 13:47:35 -080059
60 /**
61 * Sets up for each test. Creates a context and fetches the criterion
62 * codec.
63 */
64 @Before
65 public void setUp() {
66 context = new MockCodecContext();
67 criterionCodec = context.codec(Criterion.class);
68 assertThat(criterionCodec, notNullValue());
69 }
70
71
Ray Milkey73ba84a2015-02-04 17:08:41 -080072 /**
73 * Checks that all criterion types are covered by the codec.
74 */
75 @Test
76 public void checkCriterionTypes() throws Exception {
Ray Milkey6d7968e2015-07-06 14:30:02 -070077 EncodeCriterionCodecHelper encoder = new EncodeCriterionCodecHelper(
Ray Milkeyd43fe452015-05-29 09:35:12 -070078 Criteria.dummy(), context);
Ray Milkey9ee62f52015-02-06 13:47:35 -080079 EnumMap<Criterion.Type, Object> formatMap =
Ray Milkeyd43fe452015-05-29 09:35:12 -070080 getField(encoder, "formatMap");
Ray Milkey73ba84a2015-02-04 17:08:41 -080081 assertThat(formatMap, notNullValue());
82
83 for (Criterion.Type type : Criterion.Type.values()) {
84 assertThat("Entry not found for " + type.toString(),
85 formatMap.get(type), notNullValue());
86 }
87 }
Ray Milkey9ee62f52015-02-06 13:47:35 -080088
89 /**
90 * Tests in port criterion.
91 */
92 @Test
93 public void matchInPortTest() {
94 Criterion criterion = Criteria.matchInPort(port);
95 ObjectNode result = criterionCodec.encode(criterion, context);
Ray Milkey46670a82015-02-08 17:57:17 -080096 assertThat(result, matchesCriterion(criterion));
Ray Milkey9ee62f52015-02-06 13:47:35 -080097 }
98
99 /**
100 * Tests in physical port criterion.
101 */
102 @Test
103 public void matchInPhyPortTest() {
104 Criterion criterion = Criteria.matchInPhyPort(port);
105 ObjectNode result = criterionCodec.encode(criterion, context);
Ray Milkey46670a82015-02-08 17:57:17 -0800106 assertThat(result, matchesCriterion(criterion));
Ray Milkey9ee62f52015-02-06 13:47:35 -0800107 }
108
109 /**
110 * Tests metadata criterion.
111 */
112 @Test
113 public void matchMetadataTest() {
114 Criterion criterion = Criteria.matchMetadata(0xabcdL);
115 ObjectNode result = criterionCodec.encode(criterion, context);
Ray Milkey46670a82015-02-08 17:57:17 -0800116 assertThat(result, matchesCriterion(criterion));
Ray Milkey9ee62f52015-02-06 13:47:35 -0800117 }
118
119 /**
120 * Tests ethernet destination criterion.
121 */
122 @Test
123 public void matchEthDstTest() {
124 Criterion criterion = Criteria.matchEthDst(mac1);
125 ObjectNode result = criterionCodec.encode(criterion, context);
Ray Milkey46670a82015-02-08 17:57:17 -0800126 assertThat(result, matchesCriterion(criterion));
Ray Milkey9ee62f52015-02-06 13:47:35 -0800127 }
128
129 /**
130 * Tests ethernet source criterion.
131 */
132 @Test
133 public void matchEthSrcTest() {
134 Criterion criterion = Criteria.matchEthSrc(mac1);
135 ObjectNode result = criterionCodec.encode(criterion, context);
Ray Milkey46670a82015-02-08 17:57:17 -0800136 assertThat(result, matchesCriterion(criterion));
Ray Milkey9ee62f52015-02-06 13:47:35 -0800137 }
138
139 /**
140 * Tests ethernet type criterion.
141 */
142 @Test
143 public void matchEthTypeTest() {
Pavlin Radoslavovf3b69332015-02-06 15:47:05 -0800144 Criterion criterion = Criteria.matchEthType((short) 0x8844);
Ray Milkey9ee62f52015-02-06 13:47:35 -0800145 ObjectNode result = criterionCodec.encode(criterion, context);
Ray Milkey46670a82015-02-08 17:57:17 -0800146 assertThat(result, matchesCriterion(criterion));
Ray Milkey9ee62f52015-02-06 13:47:35 -0800147 }
148
149 /**
150 * Tests VLAN Id criterion.
151 */
152 @Test
153 public void matchVlanIdTest() {
154 Criterion criterion = Criteria.matchVlanId(VlanId.ANY);
155 ObjectNode result = criterionCodec.encode(criterion, context);
Ray Milkey46670a82015-02-08 17:57:17 -0800156 assertThat(result, matchesCriterion(criterion));
Ray Milkey9ee62f52015-02-06 13:47:35 -0800157 }
158
159 /**
160 * Tests VLAN PCP criterion.
161 */
162 @Test
163 public void matchVlanPcpTest() {
Pavlin Radoslavovf3b69332015-02-06 15:47:05 -0800164 Criterion criterion = Criteria.matchVlanPcp((byte) 7);
Ray Milkey9ee62f52015-02-06 13:47:35 -0800165 ObjectNode result = criterionCodec.encode(criterion, context);
Ray Milkey46670a82015-02-08 17:57:17 -0800166 assertThat(result, matchesCriterion(criterion));
Ray Milkey9ee62f52015-02-06 13:47:35 -0800167 }
168
169 /**
170 * Tests IP DSCP criterion.
171 */
172 @Test
173 public void matchIPDscpTest() {
Pavlin Radoslavovf3b69332015-02-06 15:47:05 -0800174 Criterion criterion = Criteria.matchIPDscp((byte) 63);
Ray Milkey9ee62f52015-02-06 13:47:35 -0800175 ObjectNode result = criterionCodec.encode(criterion, context);
Ray Milkey46670a82015-02-08 17:57:17 -0800176 assertThat(result, matchesCriterion(criterion));
Ray Milkey9ee62f52015-02-06 13:47:35 -0800177 }
178
179 /**
180 * Tests IP ECN criterion.
181 */
182 @Test
183 public void matchIPEcnTest() {
Pavlin Radoslavovab8553a2015-02-20 14:13:50 -0800184 Criterion criterion = Criteria.matchIPEcn((byte) 3);
Ray Milkey9ee62f52015-02-06 13:47:35 -0800185 ObjectNode result = criterionCodec.encode(criterion, context);
Ray Milkey46670a82015-02-08 17:57:17 -0800186 assertThat(result, matchesCriterion(criterion));
Ray Milkey9ee62f52015-02-06 13:47:35 -0800187 }
188
189 /**
190 * Tests IP protocol criterion.
191 */
192 @Test
193 public void matchIPProtocolTest() {
Pavlin Radoslavovf3b69332015-02-06 15:47:05 -0800194 Criterion criterion = Criteria.matchIPProtocol((byte) 250);
Ray Milkey9ee62f52015-02-06 13:47:35 -0800195 ObjectNode result = criterionCodec.encode(criterion, context);
Ray Milkey46670a82015-02-08 17:57:17 -0800196 assertThat(result, matchesCriterion(criterion));
Ray Milkey9ee62f52015-02-06 13:47:35 -0800197 }
198
199 /**
200 * Tests IP source criterion.
201 */
202 @Test
203 public void matchIPSrcTest() {
204 Criterion criterion = Criteria.matchIPSrc(ipPrefix4);
205 ObjectNode result = criterionCodec.encode(criterion, context);
Ray Milkey46670a82015-02-08 17:57:17 -0800206 assertThat(result, matchesCriterion(criterion));
Ray Milkey9ee62f52015-02-06 13:47:35 -0800207 }
208
209 /**
210 * Tests IP destination criterion.
211 */
212 @Test
213 public void matchIPDstTest() {
214 Criterion criterion = Criteria.matchIPDst(ipPrefix4);
215 ObjectNode result = criterionCodec.encode(criterion, context);
Ray Milkey46670a82015-02-08 17:57:17 -0800216 assertThat(result, matchesCriterion(criterion));
Ray Milkey9ee62f52015-02-06 13:47:35 -0800217 }
218
219 /**
220 * Tests source TCP port criterion.
221 */
222 @Test
223 public void matchTcpSrcTest() {
Hyunsun Mooncf732fb2015-08-22 21:04:23 -0700224 Criterion criterion = Criteria.matchTcpSrc(tpPort);
Ray Milkey9ee62f52015-02-06 13:47:35 -0800225 ObjectNode result = criterionCodec.encode(criterion, context);
Ray Milkey46670a82015-02-08 17:57:17 -0800226 assertThat(result, matchesCriterion(criterion));
Ray Milkey9ee62f52015-02-06 13:47:35 -0800227 }
228
229 /**
230 * Tests destination TCP port criterion.
231 */
232 @Test
233 public void matchTcpDstTest() {
Hyunsun Mooncf732fb2015-08-22 21:04:23 -0700234 Criterion criterion = Criteria.matchTcpDst(tpPort);
Ray Milkey9ee62f52015-02-06 13:47:35 -0800235 ObjectNode result = criterionCodec.encode(criterion, context);
Ray Milkey46670a82015-02-08 17:57:17 -0800236 assertThat(result, matchesCriterion(criterion));
Ray Milkey9ee62f52015-02-06 13:47:35 -0800237 }
238
239 /**
240 * Tests source UDP port criterion.
241 */
242 @Test
243 public void matchUdpSrcTest() {
Hyunsun Mooncf732fb2015-08-22 21:04:23 -0700244 Criterion criterion = Criteria.matchUdpSrc(tpPort);
Ray Milkey9ee62f52015-02-06 13:47:35 -0800245 ObjectNode result = criterionCodec.encode(criterion, context);
Ray Milkey46670a82015-02-08 17:57:17 -0800246 assertThat(result, matchesCriterion(criterion));
Ray Milkey9ee62f52015-02-06 13:47:35 -0800247 }
248
249 /**
250 * Tests destination UDP criterion.
251 */
252 @Test
253 public void matchUdpDstTest() {
Hyunsun Mooncf732fb2015-08-22 21:04:23 -0700254 Criterion criterion = Criteria.matchUdpDst(tpPort);
Ray Milkey9ee62f52015-02-06 13:47:35 -0800255 ObjectNode result = criterionCodec.encode(criterion, context);
Ray Milkey46670a82015-02-08 17:57:17 -0800256 assertThat(result, matchesCriterion(criterion));
Ray Milkey9ee62f52015-02-06 13:47:35 -0800257 }
258
259 /**
260 * Tests source SCTP criterion.
261 */
262 @Test
263 public void matchSctpSrcTest() {
Hyunsun Mooncf732fb2015-08-22 21:04:23 -0700264 Criterion criterion = Criteria.matchSctpSrc(tpPort);
Ray Milkey9ee62f52015-02-06 13:47:35 -0800265 ObjectNode result = criterionCodec.encode(criterion, context);
Ray Milkey46670a82015-02-08 17:57:17 -0800266 assertThat(result, matchesCriterion(criterion));
Ray Milkey9ee62f52015-02-06 13:47:35 -0800267 }
268
269 /**
270 * Tests destination SCTP criterion.
271 */
272 @Test
273 public void matchSctpDstTest() {
Hyunsun Mooncf732fb2015-08-22 21:04:23 -0700274 Criterion criterion = Criteria.matchSctpDst(tpPort);
Ray Milkey9ee62f52015-02-06 13:47:35 -0800275 ObjectNode result = criterionCodec.encode(criterion, context);
Ray Milkey46670a82015-02-08 17:57:17 -0800276 assertThat(result, matchesCriterion(criterion));
Ray Milkey9ee62f52015-02-06 13:47:35 -0800277 }
278
279 /**
280 * Tests ICMP type criterion.
281 */
282 @Test
283 public void matchIcmpTypeTest() {
Pavlin Radoslavovf3b69332015-02-06 15:47:05 -0800284 Criterion criterion = Criteria.matchIcmpType((byte) 250);
Ray Milkey9ee62f52015-02-06 13:47:35 -0800285 ObjectNode result = criterionCodec.encode(criterion, context);
Ray Milkey46670a82015-02-08 17:57:17 -0800286 assertThat(result, matchesCriterion(criterion));
Ray Milkey9ee62f52015-02-06 13:47:35 -0800287 }
288
289 /**
290 * Tests ICMP code criterion.
291 */
292 @Test
293 public void matchIcmpCodeTest() {
Pavlin Radoslavovf3b69332015-02-06 15:47:05 -0800294 Criterion criterion = Criteria.matchIcmpCode((byte) 250);
Ray Milkey9ee62f52015-02-06 13:47:35 -0800295 ObjectNode result = criterionCodec.encode(criterion, context);
Ray Milkey46670a82015-02-08 17:57:17 -0800296 assertThat(result, matchesCriterion(criterion));
Ray Milkey9ee62f52015-02-06 13:47:35 -0800297 }
298
299 /**
300 * Tests IPv6 source criterion.
301 */
302 @Test
303 public void matchIPv6SrcTest() {
304 Criterion criterion = Criteria.matchIPv6Src(ipPrefix6);
305 ObjectNode result = criterionCodec.encode(criterion, context);
Ray Milkey46670a82015-02-08 17:57:17 -0800306 assertThat(result, matchesCriterion(criterion));
Ray Milkey9ee62f52015-02-06 13:47:35 -0800307 }
308
309 /**
310 * Tests IPv6 destination criterion.
311 */
312 @Test
313 public void matchIPv6DstTest() {
314 Criterion criterion = Criteria.matchIPv6Dst(ipPrefix6);
315 ObjectNode result = criterionCodec.encode(criterion, context);
Ray Milkey46670a82015-02-08 17:57:17 -0800316 assertThat(result, matchesCriterion(criterion));
Ray Milkey9ee62f52015-02-06 13:47:35 -0800317 }
318
319 /**
320 * Tests IPv6 flow label criterion.
321 */
322 @Test
323 public void matchIPv6FlowLabelTest() {
Pavlin Radoslavovf3b69332015-02-06 15:47:05 -0800324 Criterion criterion = Criteria.matchIPv6FlowLabel(0xffffe);
Ray Milkey9ee62f52015-02-06 13:47:35 -0800325 ObjectNode result = criterionCodec.encode(criterion, context);
Ray Milkey46670a82015-02-08 17:57:17 -0800326 assertThat(result, matchesCriterion(criterion));
Ray Milkey9ee62f52015-02-06 13:47:35 -0800327 }
328
329 /**
330 * Tests ICMP v6 type criterion.
331 */
332 @Test
333 public void matchIcmpv6TypeTest() {
Pavlin Radoslavovf3b69332015-02-06 15:47:05 -0800334 Criterion criterion = Criteria.matchIcmpv6Type((byte) 250);
Ray Milkey9ee62f52015-02-06 13:47:35 -0800335 ObjectNode result = criterionCodec.encode(criterion, context);
Ray Milkey46670a82015-02-08 17:57:17 -0800336 assertThat(result, matchesCriterion(criterion));
Ray Milkey9ee62f52015-02-06 13:47:35 -0800337 }
338
339 /**
340 * Tests ICMP v6 code criterion.
341 */
342 @Test
343 public void matchIcmpv6CodeTest() {
Pavlin Radoslavovf3b69332015-02-06 15:47:05 -0800344 Criterion criterion = Criteria.matchIcmpv6Code((byte) 250);
Ray Milkey9ee62f52015-02-06 13:47:35 -0800345 ObjectNode result = criterionCodec.encode(criterion, context);
Ray Milkey46670a82015-02-08 17:57:17 -0800346 assertThat(result, matchesCriterion(criterion));
Ray Milkey9ee62f52015-02-06 13:47:35 -0800347 }
348
349 /**
350 * Tests IPV6 target address criterion.
351 */
352 @Test
353 public void matchIPv6NDTargetAddressTest() {
354 Criterion criterion =
355 Criteria.matchIPv6NDTargetAddress(
356 Ip6Address.valueOf("1111:2222::"));
357 ObjectNode result = criterionCodec.encode(criterion, context);
Ray Milkey46670a82015-02-08 17:57:17 -0800358 assertThat(result, matchesCriterion(criterion));
Ray Milkey9ee62f52015-02-06 13:47:35 -0800359 }
360
361 /**
362 * Tests IPV6 SLL criterion.
363 */
364 @Test
365 public void matchIPv6NDSourceLinkLayerAddressTest() {
366 Criterion criterion = Criteria.matchIPv6NDSourceLinkLayerAddress(mac1);
367 ObjectNode result = criterionCodec.encode(criterion, context);
Ray Milkey46670a82015-02-08 17:57:17 -0800368 assertThat(result, matchesCriterion(criterion));
Ray Milkey9ee62f52015-02-06 13:47:35 -0800369 }
370
371 /**
372 * Tests IPV6 TLL criterion.
373 */
374 @Test
375 public void matchIPv6NDTargetLinkLayerAddressTest() {
376 Criterion criterion = Criteria.matchIPv6NDTargetLinkLayerAddress(mac1);
377 ObjectNode result = criterionCodec.encode(criterion, context);
Ray Milkey46670a82015-02-08 17:57:17 -0800378 assertThat(result, matchesCriterion(criterion));
Ray Milkey9ee62f52015-02-06 13:47:35 -0800379 }
380
381 /**
382 * Tests MPLS label criterion.
383 */
384 @Test
385 public void matchMplsLabelTest() {
Michele Santuari4b6019e2014-12-19 11:31:45 +0100386 Criterion criterion = Criteria.matchMplsLabel(MplsLabel.mplsLabel(0xffffe));
Ray Milkey9ee62f52015-02-06 13:47:35 -0800387 ObjectNode result = criterionCodec.encode(criterion, context);
Ray Milkey46670a82015-02-08 17:57:17 -0800388 assertThat(result, matchesCriterion(criterion));
Ray Milkey9ee62f52015-02-06 13:47:35 -0800389 }
390
391 /**
Pavlin Radoslavov5e4f7542015-02-06 18:18:21 -0800392 * Tests IPv6 Extension Header pseudo-field flags criterion.
393 */
394 @Test
395 public void matchIPv6ExthdrFlagsTest() {
396 int exthdrFlags =
397 Criterion.IPv6ExthdrFlags.NONEXT.getValue() |
398 Criterion.IPv6ExthdrFlags.ESP.getValue() |
399 Criterion.IPv6ExthdrFlags.AUTH.getValue() |
400 Criterion.IPv6ExthdrFlags.DEST.getValue() |
401 Criterion.IPv6ExthdrFlags.FRAG.getValue() |
402 Criterion.IPv6ExthdrFlags.ROUTER.getValue() |
403 Criterion.IPv6ExthdrFlags.HOP.getValue() |
404 Criterion.IPv6ExthdrFlags.UNREP.getValue() |
405 Criterion.IPv6ExthdrFlags.UNSEQ.getValue();
406 Criterion criterion = Criteria.matchIPv6ExthdrFlags(exthdrFlags);
407 ObjectNode result = criterionCodec.encode(criterion, context);
Ray Milkey46670a82015-02-08 17:57:17 -0800408
409 assertThat(result, matchesCriterion(criterion));
Pavlin Radoslavov5e4f7542015-02-06 18:18:21 -0800410 }
411
412 /**
Ray Milkey9ee62f52015-02-06 13:47:35 -0800413 * Tests lambda criterion.
414 */
415 @Test
Sho SHIMIZUc44c0c32015-06-01 11:40:48 -0700416 public void matchOchSignal() {
417 Lambda ochSignal = Lambda.ochSignal(GridType.DWDM, ChannelSpacing.CHL_100GHZ, 4, 8);
418 Criterion criterion = Criteria.matchLambda(ochSignal);
Ray Milkey9ee62f52015-02-06 13:47:35 -0800419 ObjectNode result = criterionCodec.encode(criterion, context);
Ray Milkey46670a82015-02-08 17:57:17 -0800420 assertThat(result, matchesCriterion(criterion));
Ray Milkey9ee62f52015-02-06 13:47:35 -0800421 }
422
423 /**
Sho SHIMIZU68b8c1f2015-05-29 18:42:26 -0700424 * Tests Och signal type criterion.
Ray Milkey9ee62f52015-02-06 13:47:35 -0800425 */
426 @Test
Sho SHIMIZU68b8c1f2015-05-29 18:42:26 -0700427 public void matchOchSignalTypeTest() {
Sho SHIMIZU6c70f642015-05-29 17:27:22 -0700428 Criterion criterion = Criteria.matchOchSignalType(OchSignalType.FIXED_GRID);
Ray Milkey9ee62f52015-02-06 13:47:35 -0800429 ObjectNode result = criterionCodec.encode(criterion, context);
Ray Milkey46670a82015-02-08 17:57:17 -0800430 assertThat(result, matchesCriterion(criterion));
Ray Milkey9ee62f52015-02-06 13:47:35 -0800431 }
432
Ray Milkey0cc189e2015-02-09 11:08:01 -0800433 /**
434 * Tests that an unimplemented criterion type only returns the type and
435 * no other data.
436 */
437 @Test
438 public void matchUnknownTypeTest() throws Exception {
439 Criterion criterion = Criteria.matchOpticalSignalType((byte) 250);
440 setField(criterion, "type", Criterion.Type.UNASSIGNED_40);
441 ObjectNode result = criterionCodec.encode(criterion, context);
442 assertThat(result.get("type").textValue(), is(criterion.type().toString()));
443 assertThat(result.size(), is(1));
444 }
Ray Milkey73ba84a2015-02-04 17:08:41 -0800445}