blob: 99b467dc33b5c608d5e4e12d998ada6c6cf11fed [file] [log] [blame]
Charles Chan928ff8b2017-05-04 12:22:54 -07001/*
Brian O'Connora09fe5b2017-08-03 21:12:30 -07002 * Copyright 2017-present Open Networking Foundation
Charles Chan928ff8b2017-05-04 12:22:54 -07003 *
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};
Dominika Molenda52cc3a92017-06-19 17:08:35 +020049 private static final String INVALID_MAC_ADDITIONAL_COLON = "00:00:00:00:00:00:";
50 private static final String INVALID_MAC_OCTET_TOO_LONG = "000:000:000:000:000:00";
51 private static final String INVALID_MAC_OCTET_TOO_SHORT = "00:0:00:00:00:00";
52
Charles Chan928ff8b2017-05-04 12:22:54 -070053
54 @Test
55 public void testValueOfString() throws Exception {
56 assertArrayEquals(MAC_ONOS_BYTE, MacAddress.valueOf(MAC_ONOS_STR).toBytes());
57 }
58
59 @Test(expected = IllegalArgumentException.class)
60 public void testValueOfInvalidString() throws Exception {
61 MacAddress.valueOf(INVALID_STR);
62 }
63
Dominika Molenda52cc3a92017-06-19 17:08:35 +020064 @Test(expected = IllegalArgumentException.class)
65 public void testValueOfInvalidStringWithAdditionalColon() throws Exception {
66 MacAddress.valueOf(INVALID_MAC_ADDITIONAL_COLON);
67 }
68
69 @Test(expected = IllegalArgumentException.class)
70 public void testValueOfInvalidStringWithTooLongOctet() throws Exception {
71 MacAddress.valueOf(INVALID_MAC_OCTET_TOO_LONG);
72 }
73
74 @Test(expected = IllegalArgumentException.class)
75 public void testValueOfInvalidStringWithTooShortOctet() throws Exception {
76 MacAddress.valueOf(INVALID_MAC_OCTET_TOO_SHORT);
77 }
78
Charles Chan928ff8b2017-05-04 12:22:54 -070079 @Test
80 public void testValueOfByte() throws Exception {
81 assertArrayEquals(MAC_ONOS_BYTE, MacAddress.valueOf(MAC_ONOS_BYTE).toBytes());
82 }
83
84 @Test(expected = IllegalArgumentException.class)
85 public void testValueOfInvalidByte() throws Exception {
86 MacAddress.valueOf(INVALID_BYTE);
87 }
88
89 @Test
90 public void testValueOfLong() throws Exception {
91 assertArrayEquals(MAC_ONOS_BYTE, MacAddress.valueOf(MAC_ONOS_LONG).toBytes());
92 }
93
94 @Test
95 public void testLength() throws Exception {
96 assertEquals(LENGTH, MAC_NORMAL.length());
97 }
98
99 @Test
100 public void testToBytes() throws Exception {
101 assertArrayEquals(MAC_ONOS_BYTE, MAC_ONOS.toBytes());
102 }
103
104 @Test
105 public void testToLong() throws Exception {
106 assertEquals(MAC_ONOS_LONG, MAC_ONOS.toLong());
107 }
108
109 @Test
110 public void testIsBroadcast() throws Exception {
111 assertFalse(MAC_NORMAL.isBroadcast());
112 assertTrue(MAC_BCAST.isBroadcast());
113 assertFalse(MAC_MCAST.isBroadcast());
114 assertFalse(MAC_MCAST_2.isBroadcast());
115 assertFalse(MAC_LLDP.isBroadcast());
116 assertFalse(MAC_LLDP_2.isBroadcast());
117 assertFalse(MAC_LLDP_3.isBroadcast());
118 assertFalse(MAC_ONOS.isBroadcast());
119 }
120
121 @Test
122 public void testIsMulticast() throws Exception {
123 // Note: LLDP MACs are also a multicast MACs
124 assertFalse(MAC_NORMAL.isMulticast());
125 assertFalse(MAC_BCAST.isMulticast());
126 assertTrue(MAC_MCAST.isMulticast());
127 assertTrue(MAC_MCAST_2.isMulticast());
128 assertTrue(MAC_LLDP.isMulticast());
129 assertTrue(MAC_LLDP_2.isMulticast());
130 assertTrue(MAC_LLDP_3.isMulticast());
131 assertFalse(MAC_ONOS.isMulticast());
132 }
133
134 @Test
Charles Chan928ff8b2017-05-04 12:22:54 -0700135 public void testIsLldp() throws Exception {
136 assertFalse(MAC_NORMAL.isLldp());
137 assertFalse(MAC_BCAST.isLldp());
138 assertFalse(MAC_MCAST.isLldp());
139 assertFalse(MAC_MCAST_2.isLldp());
140 assertTrue(MAC_LLDP.isLldp());
141 assertTrue(MAC_LLDP_2.isLldp());
142 assertTrue(MAC_LLDP_3.isLldp());
143 assertFalse(MAC_ONOS.isLldp());
144 }
145
146 @Test
147 public void testIsOnos() throws Exception {
148 assertFalse(MAC_NORMAL.isOnos());
149 assertFalse(MAC_BCAST.isOnos());
150 assertFalse(MAC_MCAST.isOnos());
151 assertFalse(MAC_MCAST_2.isOnos());
152 assertFalse(MAC_LLDP.isOnos());
153 assertFalse(MAC_LLDP_2.isOnos());
154 assertFalse(MAC_LLDP_3.isOnos());
155 assertTrue(MAC_ONOS.isOnos());
156 }
157
158 @Test
159 public void testOui() throws Exception {
160 assertArrayEquals(MAC_ONOS.oui(), OUI_ONOS);
161 }
162
163 @Test
164 public void testEquals() throws Exception {
165 assertTrue(MAC_ONOS.equals(MAC_ONOS));
166 assertFalse(MAC_ONOS.equals(MAC_ONOS_STR));
167 assertTrue(MAC_ONOS.equals(MAC_ONOS_EQUAL));
168 assertFalse(MAC_ONOS.equals(MAC_NORMAL));
169 assertFalse(MAC_ONOS.equals(MAC_BCAST));
170 assertFalse(MAC_ONOS.equals(MAC_MCAST));
171 assertFalse(MAC_ONOS.equals(MAC_MCAST_2));
172 assertFalse(MAC_ONOS.equals(MAC_LLDP));
173 assertFalse(MAC_ONOS.equals(MAC_LLDP_2));
174 assertFalse(MAC_ONOS.equals(MAC_LLDP_3));
175 }
176
177 @Test
178 public void testHashCode() throws Exception {
179 assertEquals(Long.hashCode(MAC_ONOS_LONG), MAC_ONOS.hashCode());
180 }
181
182 @Test
183 public void testToString() throws Exception {
184 assertEquals(MAC_ONOS_STR, MAC_ONOS.toString());
185 }
186
187 @Test
188 public void testToStringNoColon() throws Exception {
189 assertEquals(MAC_ONOS_STR_NO_COLON, MAC_ONOS.toStringNoColon());
190 }
191
192}