From 841e27f35cbaa78aa049b252fd5ebc4c8f10478c Mon Sep 17 00:00:00 2001 From: str4d Date: Sat, 25 Jul 2015 15:09:32 +0000 Subject: [PATCH] Add tests for I2PSocketAddress --- .../streaming/I2PSocketAddressTest.java | 171 ++++++++++++++++++ 1 file changed, 171 insertions(+) create mode 100644 apps/ministreaming/java/test/junit/net/i2p/client/streaming/I2PSocketAddressTest.java diff --git a/apps/ministreaming/java/test/junit/net/i2p/client/streaming/I2PSocketAddressTest.java b/apps/ministreaming/java/test/junit/net/i2p/client/streaming/I2PSocketAddressTest.java new file mode 100644 index 000000000..7d827ee19 --- /dev/null +++ b/apps/ministreaming/java/test/junit/net/i2p/client/streaming/I2PSocketAddressTest.java @@ -0,0 +1,171 @@ +package net.i2p.client.streaming; + +import static org.hamcrest.Matchers.*; +import static org.junit.Assert.*; + +import java.io.ByteArrayOutputStream; +import java.io.File; +import java.io.FileOutputStream; +import java.io.IOException; + +import net.i2p.client.I2PClientFactory; +import net.i2p.data.Destination; + +import org.junit.AfterClass; +import org.junit.BeforeClass; +import org.junit.Test; + +public class I2PSocketAddressTest { + private static final String STATS_HOST = "stats.i2p"; + private static final String STATS_DEST = "Okd5sN9hFWx-sr0HH8EFaxkeIMi6PC5eGTcjM1KB7uQ0ffCUJ2nVKzcsKZFHQc7pLONjOs2LmG5H-2SheVH504EfLZnoB7vxoamhOMENnDABkIRGGoRisc5AcJXQ759LraLRdiGSR0WTHQ0O1TU0hAz7vAv3SOaDp9OwNDr9u902qFzzTKjUTG5vMTayjTkLo2kOwi6NVchDeEj9M7mjj5ySgySbD48QpzBgcqw1R27oIoHQmjgbtbmV2sBL-2Tpyh3lRe1Vip0-K0Sf4D-Zv78MzSh8ibdxNcZACmZiVODpgMj2ejWJHxAEz41RsfBpazPV0d38Mfg4wzaS95R5hBBo6SdAM4h5vcZ5ESRiheLxJbW0vBpLRd4mNvtKOrcEtyCvtvsP3FpA-6IKVswyZpHgr3wn6ndDHiVCiLAQZws4MsIUE1nkfxKpKtAnFZtPrrB8eh7QO9CkH2JBhj7bG0ED6mV5~X5iqi52UpsZ8gnjZTgyG5pOF8RcFrk86kHxAAAA"; + + @BeforeClass + public static void createHostsFile() throws IOException { + String line = STATS_HOST + "=" + STATS_DEST + "\n"; + FileOutputStream out = new FileOutputStream("hosts.txt"); + try { + out.write(line.getBytes()); + } finally { + out.close(); + } + } + + @AfterClass + public static void deleteHostsFiles() { + File f = new File("hosts.txt"); + f.delete(); + f = new File("hostsdb.blockfile"); + f.delete(); + } + + @Test + public void testConstruct_Host() { + I2PSocketAddress addr = new I2PSocketAddress(STATS_HOST); + assertThat(addr.getPort(), is(0)); + assertThat(addr.getAddress().toBase64(), is(equalTo(STATS_DEST))); + assertThat(addr.getHostName(), is(equalTo(STATS_HOST))); + assertFalse(addr.isUnresolved()); + } + + @Test + public void testConstruct_Host_withPort() { + I2PSocketAddress addr = new I2PSocketAddress(STATS_HOST + ":81"); + assertThat(addr.getPort(), is(81)); + assertThat(addr.getAddress().toBase64(), is(equalTo(STATS_DEST))); + assertThat(addr.getHostName(), is(equalTo(STATS_HOST))); + assertFalse(addr.isUnresolved()); + } + + @Test(expected=IllegalArgumentException.class) + public void testConstruct_Host_negPort_throwsIAE() { + new I2PSocketAddress(STATS_HOST + ":-1"); + } + + @Test(expected=IllegalArgumentException.class) + public void testConstruct_Host_highPort_throwsIAE() { + new I2PSocketAddress(STATS_HOST + ":90000"); + } + + @Test(expected=IllegalArgumentException.class) + public void testConstruct_Host_missingPort_throwsIAE() { + new I2PSocketAddress(STATS_HOST + ":"); + } + + @Test(expected=IllegalArgumentException.class) + public void testConstruct_Host_notAPort_throwsIAE() { + new I2PSocketAddress(STATS_HOST + ":spam"); + } + + @Test + public void testConstruct_Dest() { + Destination dest = new Destination(); + I2PSocketAddress addr = new I2PSocketAddress(dest, 1234); + assertThat(addr.getPort(), is(1234)); + assertThat(addr.getAddress(), is(dest)); + assertThat(addr.getHostName(), is(nullValue())); + assertFalse(addr.isUnresolved()); + } + + @Test(expected=NullPointerException.class) + public void testConstruct_nullDest_throwsNPE() { + new I2PSocketAddress((Destination)null, 1234); + } + + @Test(expected=IllegalArgumentException.class) + public void testConstruct_Dest_negPort_throwsIAE() { + new I2PSocketAddress(new Destination(), -1); + } + + @Test(expected=IllegalArgumentException.class) + public void testConstruct_Dest_highPort_throwsIAE() { + new I2PSocketAddress(new Destination(), 90000); + } + + @Test + public void testConstruct_HostPort() { + I2PSocketAddress addr = new I2PSocketAddress(STATS_HOST, 81); + assertThat(addr.getPort(), is(81)); + assertThat(addr.getAddress().toBase64(), is(equalTo(STATS_DEST))); + assertThat(addr.getHostName(), is(equalTo(STATS_HOST))); + assertFalse(addr.isUnresolved()); + } + + @Test(expected=IllegalArgumentException.class) + public void testConstruct_HostPort_negPort_throwsIAE() { + new I2PSocketAddress(STATS_HOST, -1); + } + + @Test(expected=IllegalArgumentException.class) + public void testConstruct_HostPort_highPort_throwsIAE() { + new I2PSocketAddress(STATS_HOST, 90000); + } + + @Test + public void testCreateUnresolved() { + I2PSocketAddress addr = I2PSocketAddress.createUnresolved(STATS_HOST, 81); + assertThat(addr.getPort(), is(81)); + assertThat(addr.getHostName(), is(STATS_HOST)); + assertTrue(addr.isUnresolved()); + assertThat(addr.getAddress().toBase64(), is(equalTo(STATS_DEST))); + assertFalse(addr.isUnresolved()); + } + + @Test(expected=IllegalArgumentException.class) + public void testCreateUnresolved_negPort_throwsIAE() { + I2PSocketAddress.createUnresolved(STATS_HOST, -1); + } + + @Test(expected=IllegalArgumentException.class) + public void testCreateUnresolved_highPort_throwsIAE() { + I2PSocketAddress.createUnresolved(STATS_HOST, 90000); + } + + @Test + public void testToString() throws Exception { + Destination dest = I2PClientFactory.createClient().createDestination(new ByteArrayOutputStream()); + I2PSocketAddress addr = new I2PSocketAddress(dest, 1234); + assertThat(addr.toString(), is(equalTo(dest.calculateHash().toString() + ":1234"))); + } + + @Test + public void testToString_unresolved() { + I2PSocketAddress addr = I2PSocketAddress.createUnresolved("example.i2p", 1234); + assertThat(addr.toString(), is(equalTo("example.i2p:1234"))); + } + + @Test + public void testEquals() { + I2PSocketAddress addr = I2PSocketAddress.createUnresolved("example.i2p", 1234); + assertTrue(addr.equals(I2PSocketAddress.createUnresolved("example.i2p", 1234))); + assertFalse(addr.equals(I2PSocketAddress.createUnresolved("example2.i2p", 1234))); + assertFalse(addr.equals(I2PSocketAddress.createUnresolved("example.i2p", 1235))); + assertFalse(addr.equals(I2PSocketAddress.createUnresolved("example.i2p", 1235))); + + Destination dest = new Destination(); + I2PSocketAddress addr2 = new I2PSocketAddress(dest, 1234); + assertFalse(addr.equals(null)); + assertFalse(addr.equals(dest)); + assertFalse(addr.equals(addr2)); + assertFalse(addr2.equals(addr)); + } +}