byte[] raw = message.getBytes("US-ASCII");
ByteArrayInputStream instream = new ByteArrayInputStream(raw);
LineNumberInputStream lineInput = new LineNumberInputStream(instream);
BufferedLineReaderInputStream rawstream = new BufferedLineReaderInputStream(lineInput, 24);
MimeEntity entity = new MimeEntity(
lineInput,
rawstream,
null,
EntityStates.T_START_MESSAGE,
EntityStates.T_END_MESSAGE);
assertEquals(EntityStates.T_START_MESSAGE, entity.getState());
entity.advance();
assertEquals(EntityStates.T_START_HEADER, entity.getState());
entity.advance();
assertEquals(EntityStates.T_FIELD, entity.getState());
assertEquals("To", entity.getField().getName());
assertEquals(" Road Runner <runner@example.org>", entity.getField().getBody());
entity.advance();
assertEquals(EntityStates.T_FIELD, entity.getState());
assertEquals("From", entity.getField().getName());
assertEquals(" Wile E. Cayote <wile@example.org>", entity.getField().getBody());
entity.advance();
assertEquals(EntityStates.T_FIELD, entity.getState());
assertEquals("Date", entity.getField().getName());
assertEquals(" Tue, 12 Feb 2008 17:34:09 +0000 (GMT)", entity.getField().getBody());
entity.advance();
assertEquals(EntityStates.T_FIELD, entity.getState());
assertEquals("Subject", entity.getField().getName());
assertEquals(" Mail", entity.getField().getBody());
entity.advance();
assertEquals(EntityStates.T_FIELD, entity.getState());
assertEquals("Content-Type", entity.getField().getName());
assertEquals(" multipart/mixed;boundary=1729", entity.getField().getBody());
entity.advance();
assertEquals(EntityStates.T_END_HEADER, entity.getState());
entity.advance();
assertEquals(EntityStates.T_START_MULTIPART, entity.getState());
entity.advance();
assertEquals(EntityStates.T_PREAMBLE, entity.getState());
assertEquals("Hello!", IOUtils.toString(entity.getContentStream()));
EntityStateMachine p1 = entity.advance();
assertNotNull(p1);
assertEquals(EntityStates.T_START_BODYPART, p1.getState());
p1.advance();
assertEquals(EntityStates.T_START_HEADER, p1.getState());
p1.advance();
assertEquals(EntityStates.T_FIELD, p1.getState());
assertEquals("Content-Type", p1.getField().getName());
assertEquals(" text/plain; charset=US-ASCII", p1.getField().getBody());
p1.advance();
assertEquals(EntityStates.T_END_HEADER, p1.getState());
p1.advance();
assertEquals(EntityStates.T_BODY, p1.getState());
assertEquals("blah blah blah", IOUtils.toString(p1.getContentStream()));
p1.advance();
assertEquals(EntityStates.T_END_BODYPART, p1.getState());
p1.advance();
assertEquals(EntityStates.T_END_OF_STREAM, p1.getState());
EntityStateMachine p2 = entity.advance();
assertNotNull(p2);
assertEquals(EntityStates.T_START_BODYPART, p2.getState());
p2.advance();
assertEquals(EntityStates.T_START_HEADER, p2.getState());
p2.advance();
assertEquals(EntityStates.T_FIELD, p2.getState());
assertEquals("Content-Type", p2.getField().getName());
assertEquals(" text/plain; charset=US-ASCII", p2.getField().getBody());
p2.advance();
assertEquals(EntityStates.T_END_HEADER, p2.getState());
p2.advance();
assertEquals(EntityStates.T_BODY, p2.getState());
assertEquals("yada yada yada", IOUtils.toString(p2.getContentStream()));
p2.advance();
assertEquals(EntityStates.T_END_BODYPART, p2.getState());
p2.advance();
assertEquals(EntityStates.T_END_OF_STREAM, p2.getState());
entity.advance();
assertEquals(EntityStates.T_EPILOGUE, entity.getState());
assertEquals("Goodbye!", IOUtils.toString(entity.getContentStream()));
entity.advance();
assertEquals(EntityStates.T_END_MULTIPART, entity.getState());
entity.advance();
assertEquals(EntityStates.T_END_MESSAGE, entity.getState());
entity.advance();
assertEquals(EntityStates.T_END_OF_STREAM, entity.getState());
}