Merge "Update docs header to Magnesium in the master"
[openflowplugin.git] / extension / openflowjava-extension-nicira / src / test / java / org / opendaylight / openflowjava / nx / codec / match / NxmHeaderTest.java
1 /*
2  * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  */
8 package org.opendaylight.openflowjava.nx.codec.match;
9
10 import static org.junit.Assert.assertEquals;
11 import static org.junit.Assert.assertFalse;
12 import static org.junit.Assert.assertTrue;
13
14 import java.math.BigInteger;
15 import org.junit.Test;
16
17 public class NxmHeaderTest {
18
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);
22
23     @Test
24     public void nxmHeaderNoMaskTest() {
25         NxmHeader nxmHeaderFromBigInt = new NxmHeader(NO_MASK_HEADER);
26
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());
33
34         NxmHeader nxmHeaderFromFields = new NxmHeader(
35                 nxmHeaderFromBigInt.getOxmClass(),
36                 nxmHeaderFromBigInt.getNxmField(),
37                 nxmHeaderFromBigInt.isHasMask(),
38                 nxmHeaderFromBigInt.getLength());
39
40         assertEquals(NO_MASK_HEADER, nxmHeaderFromFields.toBigInteger());
41         assertEquals(0x80000496L, nxmHeaderFromFields.toLong());
42         assertFalse(nxmHeaderFromFields.isExperimenter());
43
44         NxmHeader nxmHeaderFromLong = new NxmHeader(NO_MASK_HEADER.longValue());
45
46         assertEquals(NO_MASK_HEADER, nxmHeaderFromLong.toBigInteger());
47         assertEquals(0x80000496L, nxmHeaderFromLong.toLong());
48         assertFalse(nxmHeaderFromLong.isExperimenter());
49
50         assertEquals(nxmHeaderFromBigInt, nxmHeaderFromFields);
51         assertEquals(nxmHeaderFromBigInt, nxmHeaderFromLong);
52         assertEquals(nxmHeaderFromLong, nxmHeaderFromFields);
53         assertEquals(nxmHeaderFromBigInt.hashCode(), nxmHeaderFromFields.hashCode());
54         assertEquals(nxmHeaderFromBigInt.hashCode(), nxmHeaderFromLong.hashCode());
55     }
56
57     @Test
58     public void nxmHeaderMaskTest() {
59         NxmHeader nxmHeaderFromBigInt = new NxmHeader(MASK_HEADER);
60
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());
67
68         NxmHeader nxmHeaderFromFields = new NxmHeader(
69                 nxmHeaderFromBigInt.getOxmClass(),
70                 nxmHeaderFromBigInt.getNxmField(),
71                 nxmHeaderFromBigInt.isHasMask(),
72                 nxmHeaderFromBigInt.getLength());
73
74         assertEquals(MASK_HEADER, nxmHeaderFromFields.toBigInteger());
75         assertEquals(0x80000596L, nxmHeaderFromFields.toLong());
76         assertFalse(nxmHeaderFromFields.isExperimenter());
77
78         NxmHeader nxmHeaderFromLong = new NxmHeader(MASK_HEADER.longValue());
79
80         assertEquals(MASK_HEADER, nxmHeaderFromLong.toBigInteger());
81         assertEquals(0x80000596L, nxmHeaderFromLong.toLong());
82         assertFalse(nxmHeaderFromLong.isExperimenter());
83
84         assertEquals(nxmHeaderFromBigInt, nxmHeaderFromFields);
85         assertEquals(nxmHeaderFromBigInt, nxmHeaderFromLong);
86         assertEquals(nxmHeaderFromLong, nxmHeaderFromFields);
87         assertEquals(nxmHeaderFromBigInt.hashCode(), nxmHeaderFromFields.hashCode());
88         assertEquals(nxmHeaderFromBigInt.hashCode(), nxmHeaderFromLong.hashCode());
89     }
90
91     @Test
92     public void nxmHeaderExpTest() {
93         NxmHeader nxmHeaderFromBigInt = new NxmHeader(EXP_HEADER);
94
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());
102
103         NxmHeader nxmHeaderFromFields = new NxmHeader(
104                 nxmHeaderFromBigInt.getNxmField(),
105                 nxmHeaderFromBigInt.isHasMask(),
106                 nxmHeaderFromBigInt.getLength(),
107                 nxmHeaderFromBigInt.getExperimenterId());
108
109         assertEquals(EXP_HEADER, nxmHeaderFromFields.toBigInteger());
110         assertEquals(0xFFFFF4F300F2AB31L, nxmHeaderFromFields.toLong());
111         assertTrue(nxmHeaderFromFields.isExperimenter());
112         assertEquals(0x00F2AB31L, nxmHeaderFromFields.getExperimenterId());
113
114         NxmHeader nxmHeaderFromLong = new NxmHeader(EXP_HEADER.longValue());
115
116         assertEquals(EXP_HEADER, nxmHeaderFromLong.toBigInteger());
117         assertEquals(0xFFFFF4F300F2AB31L, nxmHeaderFromLong.toLong());
118         assertTrue(nxmHeaderFromLong.isExperimenter());
119         assertEquals(0x00F2AB31L, nxmHeaderFromLong.getExperimenterId());
120
121         assertEquals(nxmHeaderFromBigInt, nxmHeaderFromFields);
122         assertEquals(nxmHeaderFromBigInt, nxmHeaderFromLong);
123         assertEquals(nxmHeaderFromLong, nxmHeaderFromFields);
124         assertEquals(nxmHeaderFromBigInt.hashCode(), nxmHeaderFromFields.hashCode());
125         assertEquals(nxmHeaderFromBigInt.hashCode(), nxmHeaderFromLong.hashCode());
126     }
127
128 }