blob: 38a3b433579236e02b582f7ecc5c78a662995bf4 [file] [log] [blame]
Charles Chan928ff8b2017-05-04 12:22:54 -07001/*
2 * Copyright 2017-present 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 */
16
17package org.onlab.packet;
18
19import org.junit.Test;
20
21import static org.junit.Assert.*;
22
23/**
24 * Tests for class {@link MacAddress}.
25 */
26public class MacAddressTest {
27 private static final MacAddress MAC_NORMAL = MacAddress.valueOf("00:00:00:00:00:01");
28 private static final MacAddress MAC_BCAST = MacAddress.valueOf("ff:ff:ff:ff:ff:ff");
29 private static final MacAddress MAC_MCAST = MacAddress.valueOf("01:00:5e:00:00:00");
30 private static final MacAddress MAC_MCAST_2 = MacAddress.valueOf("01:00:0c:cc:cc:cc");
31 private static final MacAddress MAC_LLDP = MacAddress.valueOf("01:80:c2:00:00:00");
32 private static final MacAddress MAC_LLDP_2 = MacAddress.valueOf("01:80:c2:00:00:03");
33 private static final MacAddress MAC_LLDP_3 = MacAddress.valueOf("01:80:c2:00:00:0e");
34 private static final MacAddress MAC_ONOS = MacAddress.valueOf("a4:23:05:01:02:03");
35 private static final MacAddress MAC_ONOS_EQUAL = MacAddress.valueOf("a4:23:05:01:02:03");
36
37 private static final byte[] OUI_ONOS = {(byte) 0xa4, (byte) 0x23, (byte) 0x05};
38 private static final byte[] MAC_ONOS_BYTE = {
39 (byte) 0xa4, (byte) 0x23, (byte) 0x05, (byte) 0x01, (byte) 0x02, (byte) 0x03
40 };
41 private static final long MAC_ONOS_LONG = 180470314762755L;
42 private static final String MAC_ONOS_STR = "A4:23:05:01:02:03";
43 private static final String MAC_ONOS_STR_NO_COLON = "A42305010203";
44
45 private static final int LENGTH = 6;
46
47 private static final String INVALID_STR = "invalid";
48 private static final byte[] INVALID_BYTE = {(byte) 0xaa};
49
50 @Test
51 public void testValueOfString() throws Exception {
52 assertArrayEquals(MAC_ONOS_BYTE, MacAddress.valueOf(MAC_ONOS_STR).toBytes());
53 }
54
55 @Test(expected = IllegalArgumentException.class)
56 public void testValueOfInvalidString() throws Exception {
57 MacAddress.valueOf(INVALID_STR);
58 }
59
60 @Test
61 public void testValueOfByte() throws Exception {
62 assertArrayEquals(MAC_ONOS_BYTE, MacAddress.valueOf(MAC_ONOS_BYTE).toBytes());
63 }
64
65 @Test(expected = IllegalArgumentException.class)
66 public void testValueOfInvalidByte() throws Exception {
67 MacAddress.valueOf(INVALID_BYTE);
68 }
69
70 @Test
71 public void testValueOfLong() throws Exception {
72 assertArrayEquals(MAC_ONOS_BYTE, MacAddress.valueOf(MAC_ONOS_LONG).toBytes());
73 }
74
75 @Test
76 public void testLength() throws Exception {
77 assertEquals(LENGTH, MAC_NORMAL.length());
78 }
79
80 @Test
81 public void testToBytes() throws Exception {
82 assertArrayEquals(MAC_ONOS_BYTE, MAC_ONOS.toBytes());
83 }
84
85 @Test
86 public void testToLong() throws Exception {
87 assertEquals(MAC_ONOS_LONG, MAC_ONOS.toLong());
88 }
89
90 @Test
91 public void testIsBroadcast() throws Exception {
92 assertFalse(MAC_NORMAL.isBroadcast());
93 assertTrue(MAC_BCAST.isBroadcast());
94 assertFalse(MAC_MCAST.isBroadcast());
95 assertFalse(MAC_MCAST_2.isBroadcast());
96 assertFalse(MAC_LLDP.isBroadcast());
97 assertFalse(MAC_LLDP_2.isBroadcast());
98 assertFalse(MAC_LLDP_3.isBroadcast());
99 assertFalse(MAC_ONOS.isBroadcast());
100 }
101
102 @Test
103 public void testIsMulticast() throws Exception {
104 // Note: LLDP MACs are also a multicast MACs
105 assertFalse(MAC_NORMAL.isMulticast());
106 assertFalse(MAC_BCAST.isMulticast());
107 assertTrue(MAC_MCAST.isMulticast());
108 assertTrue(MAC_MCAST_2.isMulticast());
109 assertTrue(MAC_LLDP.isMulticast());
110 assertTrue(MAC_LLDP_2.isMulticast());
111 assertTrue(MAC_LLDP_3.isMulticast());
112 assertFalse(MAC_ONOS.isMulticast());
113 }
114
115 @Test
116 @Deprecated
117 public void testIsLinkLocal() throws Exception {
118 assertFalse(MAC_NORMAL.isLinkLocal());
119 assertFalse(MAC_BCAST.isLinkLocal());
120 assertFalse(MAC_MCAST.isLinkLocal());
121 assertFalse(MAC_MCAST_2.isLinkLocal());
122 assertTrue(MAC_LLDP.isLinkLocal());
123 assertTrue(MAC_LLDP_2.isLinkLocal());
124 assertTrue(MAC_LLDP_3.isLinkLocal());
125 assertFalse(MAC_ONOS.isLinkLocal());
126 }
127
128
129 @Test
130 public void testIsLldp() throws Exception {
131 assertFalse(MAC_NORMAL.isLldp());
132 assertFalse(MAC_BCAST.isLldp());
133 assertFalse(MAC_MCAST.isLldp());
134 assertFalse(MAC_MCAST_2.isLldp());
135 assertTrue(MAC_LLDP.isLldp());
136 assertTrue(MAC_LLDP_2.isLldp());
137 assertTrue(MAC_LLDP_3.isLldp());
138 assertFalse(MAC_ONOS.isLldp());
139 }
140
141 @Test
142 public void testIsOnos() throws Exception {
143 assertFalse(MAC_NORMAL.isOnos());
144 assertFalse(MAC_BCAST.isOnos());
145 assertFalse(MAC_MCAST.isOnos());
146 assertFalse(MAC_MCAST_2.isOnos());
147 assertFalse(MAC_LLDP.isOnos());
148 assertFalse(MAC_LLDP_2.isOnos());
149 assertFalse(MAC_LLDP_3.isOnos());
150 assertTrue(MAC_ONOS.isOnos());
151 }
152
153 @Test
154 public void testOui() throws Exception {
155 assertArrayEquals(MAC_ONOS.oui(), OUI_ONOS);
156 }
157
158 @Test
159 public void testEquals() throws Exception {
160 assertTrue(MAC_ONOS.equals(MAC_ONOS));
161 assertFalse(MAC_ONOS.equals(MAC_ONOS_STR));
162 assertTrue(MAC_ONOS.equals(MAC_ONOS_EQUAL));
163 assertFalse(MAC_ONOS.equals(MAC_NORMAL));
164 assertFalse(MAC_ONOS.equals(MAC_BCAST));
165 assertFalse(MAC_ONOS.equals(MAC_MCAST));
166 assertFalse(MAC_ONOS.equals(MAC_MCAST_2));
167 assertFalse(MAC_ONOS.equals(MAC_LLDP));
168 assertFalse(MAC_ONOS.equals(MAC_LLDP_2));
169 assertFalse(MAC_ONOS.equals(MAC_LLDP_3));
170 }
171
172 @Test
173 public void testHashCode() throws Exception {
174 assertEquals(Long.hashCode(MAC_ONOS_LONG), MAC_ONOS.hashCode());
175 }
176
177 @Test
178 public void testToString() throws Exception {
179 assertEquals(MAC_ONOS_STR, MAC_ONOS.toString());
180 }
181
182 @Test
183 public void testToStringNoColon() throws Exception {
184 assertEquals(MAC_ONOS_STR_NO_COLON, MAC_ONOS.toStringNoColon());
185 }
186
187}