package org.limewire.mojito.routing.impl; import java.net.InetSocketAddress; import junit.framework.TestSuite; import org.limewire.mojito.KUID; import org.limewire.mojito.MojitoTestCase; import org.limewire.mojito.routing.Contact; import org.limewire.mojito.routing.ContactFactory; import org.limewire.mojito.routing.Vendor; import org.limewire.mojito.routing.Version; public class ContactTest extends MojitoTestCase { public ContactTest(String name) { super(name); } public static TestSuite suite() { return buildTestSuite(ContactTest.class); } public static void main(String[] args) { junit.textui.TestRunner.run(suite()); } public void testEquals() { LocalContact lc1 = (LocalContact)ContactFactory.createLocalContact(Vendor.UNKNOWN, Version.ZERO, false); LocalContact lc2 = (LocalContact)ContactFactory.createLocalContact(Vendor.UNKNOWN, Version.ZERO, false); RemoteContact rc1 = (RemoteContact)ContactFactory .createLiveContact(null, Vendor.UNKNOWN, Version.ZERO, KUID.createRandomID(), new InetSocketAddress(1000), 0, Contact.DEFAULT_FLAG); RemoteContact rc2 = (RemoteContact)ContactFactory .createLiveContact(null, Vendor.UNKNOWN, Version.ZERO, KUID.createRandomID(), new InetSocketAddress(1000), 0, Contact.DEFAULT_FLAG); // Initial state assertEquals(lc1, lc1); assertEquals(lc2, lc2); assertEquals(rc1, rc1); assertEquals(rc2, rc2); assertNotEquals(lc1, lc2); assertNotEquals(rc1, rc2); assertNotEquals(lc1, rc2); assertNotEquals(lc2, rc2); assertNotEquals(rc1, lc1); assertNotEquals(rc2, lc1); // Two LocalContacts with the same KUID are considered to be equal lc1.setNodeID(lc2.getNodeID()); assertEquals(lc1, lc2); // The SocketAddress doesn't change anything as there can be only // one LocalContact per Node (RouteTable) lc1.setContactAddress(new InetSocketAddress(3000)); lc1.setSourceAddress(new InetSocketAddress(3000)); lc2.setContactAddress(new InetSocketAddress(4000)); lc2.setSourceAddress(new InetSocketAddress(4000)); assertEquals(lc1, lc2); // Two RemoteContacts with the same KUID and SocketAddress are // considered to be equal rc1 = (RemoteContact)ContactFactory .createLiveContact(null, Vendor.UNKNOWN, Version.ZERO, rc2.getNodeID(), new InetSocketAddress(1000), 0, Contact.DEFAULT_FLAG); assertEquals(rc1, rc2); // But if their SocketAddress is different they're not equal rc1 = (RemoteContact)ContactFactory .createLiveContact(null, Vendor.UNKNOWN, Version.ZERO, rc2.getNodeID(), new InetSocketAddress(2000), 0, Contact.DEFAULT_FLAG); assertNotEquals(rc1, rc2); // A Local- and RemoteContact cannot be equal! rc1 = (RemoteContact)ContactFactory .createLiveContact(null, Vendor.UNKNOWN, Version.ZERO, lc1.getNodeID(), new InetSocketAddress(1000), 0, Contact.DEFAULT_FLAG); assertNotEquals(lc1, rc1); } }