package com.limegroup.gnutella.dime; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import junit.framework.Test; /** * Tests for DIMEGenerator. */ public final class DIMEGeneratorTest extends com.limegroup.gnutella.util.BaseTestCase { /** * 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, "one".getBytes()); DIMERecord two = new DIMERecord(DIMERecord.TYPE_MEDIA_TYPE, null, null, null, "two".getBytes()); DIMERecord three = new DIMERecord(DIMERecord.TYPE_ABSOLUTE_URI, null, null, null, "three".getBytes()); 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("one".getBytes(), readOne.getData()); assertEquals("two".getBytes(), readTwo.getData()); assertEquals("three".getBytes(), 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()); } }