package com.limegroup.gnutella.dime; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import org.limewire.util.StringUtils; import junit.framework.Test; /** * Tests for DIMEGenerator. */ public final class DIMEGeneratorTest extends org.limewire.gnutella.tests.LimeTestCase { /** * Constructs a new test instance for responses. */ public DIMEGeneratorTest(String name) { super(name); } public static Test suite() { return buildTestSuite(DIMEGeneratorTest.class); } /** * Runs this test individually. */ public static void main(String[] args) { junit.textui.TestRunner.run(suite()); } public void testWrite() throws Exception { DIMEGenerator gen = new DIMEGenerator(); DIMERecord one = new DIMERecord(DIMERecord.TYPE_UNCHANGED, null, null, null, StringUtils.toAsciiBytes("one")); DIMERecord two = new DIMERecord(DIMERecord.TYPE_MEDIA_TYPE, null, null, null, StringUtils.toAsciiBytes("two")); DIMERecord three = new DIMERecord(DIMERecord.TYPE_ABSOLUTE_URI, null, null, null, StringUtils.toAsciiBytes("three")); assertEquals(0, gen.getLength()); gen.add(one); assertEquals(12 + 4, gen.getLength()); gen.add(two); assertEquals(12 + 4 + 12 + 4, gen.getLength()); gen.add(three); assertEquals(12 + 4 + 12 + 4 + 12 + 8, gen.getLength()); ByteArrayOutputStream out = new ByteArrayOutputStream(); gen.write(out); ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); DIMERecord readOne = DIMERecord.createFromStream(in); DIMERecord readTwo = DIMERecord.createFromStream(in); DIMERecord readThree = DIMERecord.createFromStream(in); assertEquals(-1, in.read()); assertEquals(DIMERecord.TYPE_UNCHANGED, readOne.getTypeId()); assertEquals(DIMERecord.TYPE_MEDIA_TYPE, readTwo.getTypeId()); assertEquals(DIMERecord.TYPE_ABSOLUTE_URI, readThree.getTypeId()); assertEquals(StringUtils.toAsciiBytes("one"), readOne.getData()); assertEquals(StringUtils.toAsciiBytes("two"), readTwo.getData()); assertEquals(StringUtils.toAsciiBytes("three"), readThree.getData()); assertTrue(readOne.isFirstRecord()); assertTrue(readThree.isLastRecord()); assertFalse(readOne.isLastRecord()); assertFalse(readTwo.isFirstRecord()); assertFalse(readTwo.isLastRecord()); assertFalse(readThree.isFirstRecord()); } public void testWriteWithOne() throws Exception { DIMEGenerator gen = new DIMEGenerator(); DIMERecord one = new DIMERecord(DIMERecord.TYPE_UNCHANGED, null, null, null, null); gen.add(one); ByteArrayOutputStream out = new ByteArrayOutputStream(); gen.write(out); ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); DIMERecord readOne = DIMERecord.createFromStream(in); assertEquals(-1, in.read()); assertTrue(readOne.isFirstRecord()); assertTrue(readOne.isLastRecord()); } public void testWriteWithNone() throws Exception { DIMEGenerator gen = new DIMEGenerator(); ByteArrayOutputStream out = new ByteArrayOutputStream(); gen.write(out); ByteArrayInputStream in = new ByteArrayInputStream(out.toByteArray()); assertEquals(-1, in.read()); } }