Ayaka Koshibe

Tests for IPAddress and VLANID

Change-Id: If8183366428c9b4fb14f78005922b2229cff1456
......@@ -40,12 +40,11 @@ public class IPAddress {
* @return an IP address
*/
public static IPAddress valueOf(int address) {
byte [] bytes = new byte [] {
(byte) ((address >> 24) & 0xff),
(byte) ((address >> 16) & 0xff),
(byte) ((address >> 8) & 0xff),
(byte) ((address >> 0) & 0xff)
};
byte [] bytes = new byte [INET_LEN];
for (int i = 0; i < INET_LEN; i++) {
bytes[i] = (byte) ((address >> (INET_LEN - (i + 1)) * 8) & 0xff);
}
return new IPAddress(Version.INET, bytes);
}
......@@ -87,12 +86,16 @@ public class IPAddress {
return Arrays.copyOf(this.octets, INET_LEN);
}
/**
* Returns the integral value of this IP address.
*
* @return the IP address's value as an integer
*/
public int toInt() {
int address =
((octets[0] << 24) |
(octets[1] << 16) |
(octets[2] << 8) |
(octets[3] << 0));
int address = 0;
for (int i = 0; i < INET_LEN; i++) {
address |= octets[i] << ((INET_LEN - (i + 1)) * 8);
}
return address;
}
......
......@@ -7,9 +7,9 @@ public class VLANID {
private final short value;
// Based on convention used elsewhere? Check and change if needed
private static final short UNTAGGED = (short) 0xffff;
public static final short UNTAGGED = (short) 0xffff;
// A VLAN ID is actually 12 bits of a VLAN tag.
private static final short MAX_VLAN = 4095;
public static final short MAX_VLAN = 4095;
protected VLANID() {
this.value = UNTAGGED;
......
package org.onlab.packet;
import static org.junit.Assert.assertEquals;
import java.util.Arrays;
import org.junit.Test;
import org.onlab.packet.IPAddress.Version;
import com.google.common.testing.EqualsTester;
public class IPAddressTest {
private static final byte [] BYTES1 = new byte [] {0x0, 0x0, 0x0, 0xa};
private static final byte [] BYTES2 = new byte [] {0x0, 0x0, 0x0, 0xb};
private static final int INTVAL1 = 10;
private static final int INTVAL2 = 12;
private static final String STRVAL = "0.0.0.11";
@Test
public void testEquality() {
IPAddress ip1 = IPAddress.valueOf(BYTES1);
IPAddress ip2 = IPAddress.valueOf(BYTES2);
IPAddress ip3 = IPAddress.valueOf(INTVAL1);
IPAddress ip4 = IPAddress.valueOf(INTVAL2);
IPAddress ip5 = IPAddress.valueOf(STRVAL);
new EqualsTester().addEqualityGroup(ip1, ip3)
.addEqualityGroup(ip2, ip5)
.addEqualityGroup(ip4)
.testEquals();
}
@Test
public void basics() {
IPAddress ip4 = IPAddress.valueOf(BYTES1);
assertEquals("incorrect IP Version", Version.INET, ip4.version());
assertEquals("faulty toOctets()", Arrays.equals(
new byte [] {0x0, 0x0, 0x0, 0xa}, ip4.toOctets()), true);
assertEquals("faulty toInt()", INTVAL1, ip4.toInt());
assertEquals("faulty toString()", "0.0.0.10", ip4.toString());
}
}
package org.onlab.packet;
import static org.junit.Assert.assertEquals;
import org.junit.Test;
import com.google.common.testing.EqualsTester;
public class VLANIDTest {
@Test
public void testEquality() {
VLANID vlan1 = VLANID.vlanId((short) -1);
VLANID vlan2 = VLANID.vlanId((short) 100);
VLANID vlan3 = VLANID.vlanId((short) 100);
new EqualsTester().addEqualityGroup(VLANID.vlanId(), vlan1)
.addEqualityGroup(vlan2, vlan3)
.addEqualityGroup(VLANID.vlanId((short) 10));
}
@Test
public void basics() {
// purposefully create UNTAGGED VLAN
VLANID vlan1 = VLANID.vlanId((short) 10);
VLANID vlan2 = VLANID.vlanId((short) -1);
assertEquals("incorrect VLAN value", 10, vlan1.toShort());
assertEquals("invalid untagged value", VLANID.UNTAGGED, vlan2.toShort());
}
@Test(expected = IllegalArgumentException.class)
public void testIllicitVLAN() {
VLANID.vlanId((short) 5000);
}
}