2 * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
8 package org.opendaylight.openflowjava.nx.codec.match;
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertFalse;
12 import static org.junit.Assert.assertTrue;
14 import java.math.BigInteger;
15 import org.junit.Test;
17 public class NxmHeaderTest {
19 private static final BigInteger NO_MASK_HEADER = new BigInteger("80000496", 16);
20 private static final BigInteger MASK_HEADER = new BigInteger("80000596", 16);
21 private static final BigInteger EXP_HEADER = new BigInteger("FFFFF4F300F2AB31", 16);
24 public void nxmHeaderNoMaskTest() {
25 NxmHeader nxmHeaderFromBigInt = new NxmHeader(NO_MASK_HEADER);
27 assertEquals(0x8000, nxmHeaderFromBigInt.getOxmClass());
28 assertEquals(0x2, nxmHeaderFromBigInt.getNxmField());
29 assertFalse(nxmHeaderFromBigInt.isHasMask());
30 assertEquals(0x96, nxmHeaderFromBigInt.getLength());
31 assertEquals(0x80000496L, nxmHeaderFromBigInt.toLong());
32 assertFalse(nxmHeaderFromBigInt.isExperimenter());
34 NxmHeader nxmHeaderFromFields = new NxmHeader(
35 nxmHeaderFromBigInt.getOxmClass(),
36 nxmHeaderFromBigInt.getNxmField(),
37 nxmHeaderFromBigInt.isHasMask(),
38 nxmHeaderFromBigInt.getLength());
40 assertEquals(NO_MASK_HEADER, nxmHeaderFromFields.toBigInteger());
41 assertEquals(0x80000496L, nxmHeaderFromFields.toLong());
42 assertFalse(nxmHeaderFromFields.isExperimenter());
44 NxmHeader nxmHeaderFromLong = new NxmHeader(NO_MASK_HEADER.longValue());
46 assertEquals(NO_MASK_HEADER, nxmHeaderFromLong.toBigInteger());
47 assertEquals(0x80000496L, nxmHeaderFromLong.toLong());
48 assertFalse(nxmHeaderFromLong.isExperimenter());
50 assertEquals(nxmHeaderFromBigInt, nxmHeaderFromFields);
51 assertEquals(nxmHeaderFromBigInt, nxmHeaderFromLong);
52 assertEquals(nxmHeaderFromLong, nxmHeaderFromFields);
53 assertEquals(nxmHeaderFromBigInt.hashCode(), nxmHeaderFromFields.hashCode());
54 assertEquals(nxmHeaderFromBigInt.hashCode(), nxmHeaderFromLong.hashCode());
58 public void nxmHeaderMaskTest() {
59 NxmHeader nxmHeaderFromBigInt = new NxmHeader(MASK_HEADER);
61 assertEquals(0x8000, nxmHeaderFromBigInt.getOxmClass());
62 assertEquals(0x2, nxmHeaderFromBigInt.getNxmField());
63 assertTrue(nxmHeaderFromBigInt.isHasMask());
64 assertEquals(0x96, nxmHeaderFromBigInt.getLength());
65 assertEquals(0x80000596L, nxmHeaderFromBigInt.toLong());
66 assertFalse(nxmHeaderFromBigInt.isExperimenter());
68 NxmHeader nxmHeaderFromFields = new NxmHeader(
69 nxmHeaderFromBigInt.getOxmClass(),
70 nxmHeaderFromBigInt.getNxmField(),
71 nxmHeaderFromBigInt.isHasMask(),
72 nxmHeaderFromBigInt.getLength());
74 assertEquals(MASK_HEADER, nxmHeaderFromFields.toBigInteger());
75 assertEquals(0x80000596L, nxmHeaderFromFields.toLong());
76 assertFalse(nxmHeaderFromFields.isExperimenter());
78 NxmHeader nxmHeaderFromLong = new NxmHeader(MASK_HEADER.longValue());
80 assertEquals(MASK_HEADER, nxmHeaderFromLong.toBigInteger());
81 assertEquals(0x80000596L, nxmHeaderFromLong.toLong());
82 assertFalse(nxmHeaderFromLong.isExperimenter());
84 assertEquals(nxmHeaderFromBigInt, nxmHeaderFromFields);
85 assertEquals(nxmHeaderFromBigInt, nxmHeaderFromLong);
86 assertEquals(nxmHeaderFromLong, nxmHeaderFromFields);
87 assertEquals(nxmHeaderFromBigInt.hashCode(), nxmHeaderFromFields.hashCode());
88 assertEquals(nxmHeaderFromBigInt.hashCode(), nxmHeaderFromLong.hashCode());
92 public void nxmHeaderExpTest() {
93 NxmHeader nxmHeaderFromBigInt = new NxmHeader(EXP_HEADER);
95 assertEquals(0xFFFF, nxmHeaderFromBigInt.getOxmClass());
96 assertEquals(0xF4 >>> 1, nxmHeaderFromBigInt.getNxmField());
97 assertFalse(nxmHeaderFromBigInt.isHasMask());
98 assertEquals(0xF3, nxmHeaderFromBigInt.getLength());
99 assertEquals(0xFFFFF4F300F2AB31L, nxmHeaderFromBigInt.toLong());
100 assertTrue(nxmHeaderFromBigInt.isExperimenter());
101 assertEquals(0x00F2AB31L, nxmHeaderFromBigInt.getExperimenterId());
103 NxmHeader nxmHeaderFromFields = new NxmHeader(
104 nxmHeaderFromBigInt.getNxmField(),
105 nxmHeaderFromBigInt.isHasMask(),
106 nxmHeaderFromBigInt.getLength(),
107 nxmHeaderFromBigInt.getExperimenterId());
109 assertEquals(EXP_HEADER, nxmHeaderFromFields.toBigInteger());
110 assertEquals(0xFFFFF4F300F2AB31L, nxmHeaderFromFields.toLong());
111 assertTrue(nxmHeaderFromFields.isExperimenter());
112 assertEquals(0x00F2AB31L, nxmHeaderFromFields.getExperimenterId());
114 NxmHeader nxmHeaderFromLong = new NxmHeader(EXP_HEADER.longValue());
116 assertEquals(EXP_HEADER, nxmHeaderFromLong.toBigInteger());
117 assertEquals(0xFFFFF4F300F2AB31L, nxmHeaderFromLong.toLong());
118 assertTrue(nxmHeaderFromLong.isExperimenter());
119 assertEquals(0x00F2AB31L, nxmHeaderFromLong.getExperimenterId());
121 assertEquals(nxmHeaderFromBigInt, nxmHeaderFromFields);
122 assertEquals(nxmHeaderFromBigInt, nxmHeaderFromLong);
123 assertEquals(nxmHeaderFromLong, nxmHeaderFromFields);
124 assertEquals(nxmHeaderFromBigInt.hashCode(), nxmHeaderFromFields.hashCode());
125 assertEquals(nxmHeaderFromBigInt.hashCode(), nxmHeaderFromLong.hashCode());