package org.openstack.atlas.util.ip;
import org.openstack.atlas.util.ip.exception.IPStringConversionException;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.*;
public class IPv4Test {
private final String invalidgoogleIpv4 = "www.google.com";
private final String invalidOctetRangeIpv4 = "192.168.3.510";
private final String notEnoughOctetsIpv4 = "129.168.3";
private final String tooManyOctetsIpv4 = "192.168.3.51.32";
private final String validIpv4 = "192.168.3.51";
private final byte[] expected_ipv4bytes = {-64, -88, 3, 51};
private final String expected_ipv4 = "192.168.3.51";
private final String left_uncompressed = "";
private final String left_compressed = "";
public IPv4Test() {
}
@Before
public void setUp() {
}
@Test(expected = IPStringConversionException.class)
public void shouldRejectGoogleAddress() throws IPStringConversionException {
IPv4 ipv4 = new IPv4(invalidgoogleIpv4);
ipv4.getBytes();
}
@Test(expected = IPStringConversionException.class)
public void shouldRejectInvalidOctetRange() throws IPStringConversionException {
IPv4 ipv4 = new IPv4(invalidOctetRangeIpv4);
ipv4.getBytes();
}
@Test(expected = IPStringConversionException.class)
public void shoudRejectNotEnoughOctetsIpv4() throws IPStringConversionException {
IPv4 ipv4 = new IPv4(notEnoughOctetsIpv4);
ipv4.getBytes();
}
@Test(expected=IPStringConversionException.class)
public void shouldRejectTooManyOctetsIpv4() throws IPStringConversionException {
IPv4 ipv4 = new IPv4(tooManyOctetsIpv4);
ipv4.getBytes();
}
@Test
public void getBytesShouldWork() throws IPStringConversionException {
IPv4 ipv4 = new IPv4(expected_ipv4);
byte[] decodedBytes = ipv4.getBytes();
assertTrue("Expected getBytes to work for \"\"",bytes_match(expected_ipv4bytes,decodedBytes));
}
@Test
public void shouldValidate() {
assertTrue(IPUtils.isValidIpv4String("192.168.3.51"));
assertTrue(IPUtils.isValidIpv4String("127.0.0.1"));
assertTrue(IPUtils.isValidIpv4String("10.0.0.1"));
assertTrue(IPUtils.isValidIpv4String("172.17.10.255"));
}
@Test
public void shouldReject() {
assertFalse(IPUtils.isValidIpv4String("www.google.com"));
assertFalse(IPUtils.isValidIpv4String(null));
assertFalse(IPUtils.isValidIpv4String("888.888.888.888"));
assertFalse(IPUtils.isValidIpv4String(""));
assertFalse(IPUtils.isValidIpv4String("...222"));
assertFalse(IPUtils.isValidIpv4String("-1.-1.-1.-1"));
}
public static boolean bytes_match(byte[] a, byte[] b) {
int i;
for (i = 0; i < 4; i++) {
if (a[i] != b[i]) {
return false;
}
}
return true;
}
}