package org.limewire.io;
import junit.framework.Test;
import org.limewire.util.BaseTestCase;
/**
* Unit tests for IP, IPFilter, IPList
*/
public class IPTest extends BaseTestCase {
byte[] guid;
public IPTest(String name) {
super(name);
}
public static Test suite() {
return buildTestSuite(IPTest.class);
}
public static void main(String[] args) {
junit.textui.TestRunner.run(suite());
}
private byte[] bytes(int one, int two, int three, int four) {
return new byte[] { (byte)one, (byte)two, (byte)three, (byte)four };
}
public void testIPLegacy() {
IP a=new IP("1.1.1.*");
IP b=new IP("1.1.1.2");
IP c=new IP("1.1.2.1");
IP b1 = new IP(bytes(1,1,1,2));
IP c1 = new IP(bytes(1,1,2,1));
assertTrue(a.contains(b));
assertTrue(! b.contains(a));
assertTrue(! a.contains(c));
assertTrue(! c.contains(a));
assertTrue(b.contains(b1));
assertTrue(c.contains(c1));
assertTrue(b1.contains(b));
assertTrue(c1.contains(c));
assertNotEquals(a,c);
assertNotEquals(a,b);
assertNotEquals(b,a);
assertNotEquals(b,c);
assertEquals(a, a);
assertEquals(b,b);
assertEquals(b, b1);
assertEquals(c, c1);
assertEquals(b.hashCode(), b1.hashCode());
assertEquals(c.hashCode(), c1.hashCode());
assertNotEquals("asdf", a);
IP d=new IP("1.1.1.0/255.255.255.0");
IP e=new IP("1.1.1.0/24");
IP f=new IP("1.1.1/24");
assertEquals(a,d);
assertEquals(d,a);
assertEquals(a.hashCode(),d.hashCode());
assertEquals(a,e);
assertEquals(e,a);
assertEquals(a.hashCode(),e.hashCode());
assertEquals(a,f);
assertEquals(f,a);
assertEquals(a.hashCode(),f.hashCode());
assertEquals(d,e);
assertEquals(f,e);
try {
new IP("this should fail.");
fail("illegal argument expected.");
} catch(IllegalArgumentException ignored) {}
try {
new IP("821.1.1.0");
fail("illegal argument excepted.");
} catch(IllegalArgumentException ignored) {}
try {
new IP("1.1*.1.0");
fail("illegal argument expected.");
} catch(IllegalArgumentException ignored) {}
try {
new IP("1.256.0.0");
fail("illegal argument expected.");
} catch(IllegalArgumentException ignored) {}
try {
new IP("1.1.1.1/33");
fail("illegal argument expected.");
} catch(IllegalArgumentException ignored) {}
try {
new IP("1.1.1.1/-1");
fail("illegal argument expected.");
} catch(IllegalArgumentException ignored) {}
try {
new IP("1.1..1");
fail("illegal argument expected.");
} catch(IllegalArgumentException ignored) {}
try {
new IP("1.1.1.1/255.255.256.255");
fail("illegal argument expected.");
} catch(IllegalArgumentException ignored) {}
try {
new IP("1.1234.1.1");
fail("illegal argument expected.");
} catch(IllegalArgumentException ignored) {}
try {
new IP("1.1.1.1/255.1234.255.255");
fail("illegal argument expected.");
} catch(IllegalArgumentException ignored) {}
try {
new IP(new byte[] {0,0,0});
fail("illegal argument expected.");
} catch(IllegalArgumentException ignored) {}
try {
new IP(new byte[] {0,0,0,0,0});
fail("illegal argument expected.");
} catch(IllegalArgumentException ignored) {}
}
public void testGetDistanceTo() {
IP ipRange = new IP("18.194.0.1/16");
IP ip = new IP("18.194.0.37");
assertEquals("Distance between an IP and its subnet should be zero.", 0, ipRange.getDistanceTo(ip));
ip = new IP("128.0.0.1");
assertLessThan("Expect the high-order bit of the xor distance to be set", 0 , ipRange.getDistanceTo(ip));
ipRange = new IP("0.0.0.0/16");
ip = new IP("127.255.255.255"); // = Integer.MAX_VALUE
assertEquals(0x7FFF0000, ipRange.getDistanceTo(ip));
IP ipRange2 = new IP("10.1.2.3/8");
assertEquals("Incorrect distance between two ranges", 0x0A000000,ipRange.getDistanceTo(ipRange2));
}
}