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
9 package org.opendaylight.openflowjava.nx.codec.match;
11 import static org.junit.Assert.assertEquals;
12 import static org.junit.Assert.assertFalse;
13 import static org.junit.Assert.assertTrue;
15 import java.math.BigInteger;
16 import org.junit.Test;
18 public class NxmHeaderTest {
20 private static final BigInteger NO_MASK_HEADER = new BigInteger("80000496", 16);
21 private static final BigInteger MASK_HEADER = new BigInteger("80000596", 16);
22 private static final BigInteger EXP_HEADER = new BigInteger("FFFFF4F300F2AB31", 16);
25 public void nxmHeaderNoMaskTest() {
26 NxmHeader nxmHeaderFromBigInt = new NxmHeader(NO_MASK_HEADER);
28 assertEquals(0x8000, nxmHeaderFromBigInt.getOxmClass());
29 assertEquals(0x2, nxmHeaderFromBigInt.getNxmField());
30 assertFalse(nxmHeaderFromBigInt.isHasMask());
31 assertEquals(0x96, nxmHeaderFromBigInt.getLength());
32 assertEquals(0x80000496L, nxmHeaderFromBigInt.toLong());
33 assertFalse(nxmHeaderFromBigInt.isExperimenter());
35 NxmHeader nxmHeaderFromFields = new NxmHeader(
36 nxmHeaderFromBigInt.getOxmClass(),
37 nxmHeaderFromBigInt.getNxmField(),
38 nxmHeaderFromBigInt.isHasMask(),
39 nxmHeaderFromBigInt.getLength());
41 assertEquals(NO_MASK_HEADER, nxmHeaderFromFields.toBigInteger());
42 assertEquals(0x80000496L, nxmHeaderFromFields.toLong());
43 assertFalse(nxmHeaderFromFields.isExperimenter());
45 NxmHeader nxmHeaderFromLong = new NxmHeader(NO_MASK_HEADER.longValue());
47 assertEquals(NO_MASK_HEADER, nxmHeaderFromLong.toBigInteger());
48 assertEquals(0x80000496L, nxmHeaderFromLong.toLong());
49 assertFalse(nxmHeaderFromLong.isExperimenter());
51 assertEquals(nxmHeaderFromBigInt, nxmHeaderFromFields);
52 assertEquals(nxmHeaderFromBigInt, nxmHeaderFromLong);
53 assertEquals(nxmHeaderFromLong, nxmHeaderFromFields);
54 assertEquals(nxmHeaderFromBigInt.hashCode(), nxmHeaderFromFields.hashCode());
55 assertEquals(nxmHeaderFromBigInt.hashCode(), nxmHeaderFromLong.hashCode());
59 public void nxmHeaderMaskTest() {
60 NxmHeader nxmHeaderFromBigInt = new NxmHeader(MASK_HEADER);
62 assertEquals(0x8000, nxmHeaderFromBigInt.getOxmClass());
63 assertEquals(0x2, nxmHeaderFromBigInt.getNxmField());
64 assertTrue(nxmHeaderFromBigInt.isHasMask());
65 assertEquals(0x96, nxmHeaderFromBigInt.getLength());
66 assertEquals(0x80000596L, nxmHeaderFromBigInt.toLong());
67 assertFalse(nxmHeaderFromBigInt.isExperimenter());
69 NxmHeader nxmHeaderFromFields = new NxmHeader(
70 nxmHeaderFromBigInt.getOxmClass(),
71 nxmHeaderFromBigInt.getNxmField(),
72 nxmHeaderFromBigInt.isHasMask(),
73 nxmHeaderFromBigInt.getLength());
75 assertEquals(MASK_HEADER, nxmHeaderFromFields.toBigInteger());
76 assertEquals(0x80000596L, nxmHeaderFromFields.toLong());
77 assertFalse(nxmHeaderFromFields.isExperimenter());
79 NxmHeader nxmHeaderFromLong = new NxmHeader(MASK_HEADER.longValue());
81 assertEquals(MASK_HEADER, nxmHeaderFromLong.toBigInteger());
82 assertEquals(0x80000596L, nxmHeaderFromLong.toLong());
83 assertFalse(nxmHeaderFromLong.isExperimenter());
85 assertEquals(nxmHeaderFromBigInt, nxmHeaderFromFields);
86 assertEquals(nxmHeaderFromBigInt, nxmHeaderFromLong);
87 assertEquals(nxmHeaderFromLong, nxmHeaderFromFields);
88 assertEquals(nxmHeaderFromBigInt.hashCode(), nxmHeaderFromFields.hashCode());
89 assertEquals(nxmHeaderFromBigInt.hashCode(), nxmHeaderFromLong.hashCode());
93 public void nxmHeaderExpTest() {
94 NxmHeader nxmHeaderFromBigInt = new NxmHeader(EXP_HEADER);
96 assertEquals(0xFFFF, nxmHeaderFromBigInt.getOxmClass());
97 assertEquals(0xF4 >>> 1, nxmHeaderFromBigInt.getNxmField());
98 assertFalse(nxmHeaderFromBigInt.isHasMask());
99 assertEquals(0xF3, nxmHeaderFromBigInt.getLength());
100 assertEquals(0xFFFFF4F300F2AB31L, nxmHeaderFromBigInt.toLong());
101 assertTrue(nxmHeaderFromBigInt.isExperimenter());
102 assertEquals(0x00F2AB31L, nxmHeaderFromBigInt.getExperimenterId());
104 NxmHeader nxmHeaderFromFields = new NxmHeader(
105 nxmHeaderFromBigInt.getNxmField(),
106 nxmHeaderFromBigInt.isHasMask(),
107 nxmHeaderFromBigInt.getLength(),
108 nxmHeaderFromBigInt.getExperimenterId());
110 assertEquals(EXP_HEADER, nxmHeaderFromFields.toBigInteger());
111 assertEquals(0xFFFFF4F300F2AB31L, nxmHeaderFromFields.toLong());
112 assertTrue(nxmHeaderFromFields.isExperimenter());
113 assertEquals(0x00F2AB31L, nxmHeaderFromFields.getExperimenterId());
115 NxmHeader nxmHeaderFromLong = new NxmHeader(EXP_HEADER.longValue());
117 assertEquals(EXP_HEADER, nxmHeaderFromLong.toBigInteger());
118 assertEquals(0xFFFFF4F300F2AB31L, nxmHeaderFromLong.toLong());
119 assertTrue(nxmHeaderFromLong.isExperimenter());
120 assertEquals(0x00F2AB31L, nxmHeaderFromLong.getExperimenterId());
122 assertEquals(nxmHeaderFromBigInt, nxmHeaderFromFields);
123 assertEquals(nxmHeaderFromBigInt, nxmHeaderFromLong);
124 assertEquals(nxmHeaderFromLong, nxmHeaderFromFields);
125 assertEquals(nxmHeaderFromBigInt.hashCode(), nxmHeaderFromFields.hashCode());
126 assertEquals(nxmHeaderFromBigInt.hashCode(), nxmHeaderFromLong.hashCode());