blob: af86d9b0897227d883b98c85930ff57756236fcb [file] [log] [blame]
package org.openflow.types;
import static org.junit.Assert.assertArrayEquals;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import java.util.Arrays;
import org.jboss.netty.buffer.ChannelBuffers;
import org.junit.Test;
import org.openflow.exceptions.OFParseError;
import org.openflow.exceptions.OFShortRead;
public class MacAddressTest {
byte[][] testAddresses = new byte[][] {
{0x01, 0x02, 0x03, 0x04, 0x05, 0x06 },
{(byte) 0x80, 0x0, 0x0, 0x0, 0x0, 0x01},
{(byte) 255, (byte) 255, (byte) 255, (byte) 255, (byte) 255, (byte) 255 }
};
String[] testStrings = {
"01:02:03:04:05:06",
"80:00:00:00:00:01",
"ff:ff:ff:ff:ff:ff"
};
long[] testInts = {
0x00010203040506L,
0x00800000000001L,
0x00ffffffffffffL
};
String[] invalidMacs = {
"",
"1.2.3.4",
"00:ff:ef:12:12:ff:",
"00:fff:ef:12:12:ff",
"01:02:03:04:05;06",
"0:1:2:3:4:5:6",
"01:02:03:04"
};
@Test
public void testOfString() {
for(int i=0; i < testAddresses.length; i++ ) {
MacAddress ip = MacAddress.of(testStrings[i]);
assertEquals(testInts[i], ip.getLong());
assertArrayEquals(testAddresses[i], ip.getBytes());
assertEquals(testStrings[i], ip.toString());
}
}
@Test
public void testOfByteArray() {
for(int i=0; i < testAddresses.length; i++ ) {
MacAddress ip = MacAddress.of(testAddresses[i]);
assertEquals("error checking long representation of "+Arrays.toString(testAddresses[i]) + "(should be "+Long.toHexString(testInts[i]) +")", testInts[i], ip.getLong());
assertArrayEquals(testAddresses[i], ip.getBytes());
assertEquals(testStrings[i], ip.toString());
}
}
@Test
public void testReadFrom() throws OFParseError, OFShortRead {
for(int i=0; i < testAddresses.length; i++ ) {
MacAddress ip = MacAddress.readFrom(ChannelBuffers.copiedBuffer(testAddresses[i]));
assertEquals(testInts[i], ip.getLong());
assertArrayEquals(testAddresses[i], ip.getBytes());
assertEquals(testStrings[i], ip.toString());
}
}
@Test
public void testInvalidMacss() throws OFParseError, OFShortRead {
for(String invalid : invalidMacs) {
try {
MacAddress.of(invalid);
fail("Invalid IP "+invalid+ " should have raised IllegalArgumentException");
} catch(IllegalArgumentException e) {
// ok
}
}
}
}