Author: rdonkin
Date: Tue Jul 8 13:16:45 2008
New Revision: 674936
URL: http://svn.apache.org/viewvc?rev=674936&view=rev
Log:
Trying to track down why Mime4J now longer parses complex nested messages
correctly.
Added:
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/MimeTokenEmbeddedMessageTest.java
Modified:
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/InputBufferTest.java
Modified:
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/InputBufferTest.java
URL:
http://svn.apache.org/viewvc/james/mime4j/trunk/src/test/java/org/apache/james/mime4j/InputBufferTest.java?rev=674936&r1=674935&r2=674936&view=diff
==============================================================================
---
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/InputBufferTest.java
(original)
+++
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/InputBufferTest.java
Tue Jul 8 13:16:45 2008
@@ -58,4 +58,14 @@
assertEquals(-1, i);
}
+ public void testPatternMatching4() throws Exception {
+ String text = "bla bla yada yada haha haha";
+ String pattern = "bla";
+ byte[] b1 = text.getBytes("US-ASCII");
+ byte[] b2 = pattern.getBytes("US-ASCII");
+ InputBuffer inbuffer = new InputBuffer(new ByteArrayInputStream(b1),
4096);
+ inbuffer.fillBuffer();
+ int i = inbuffer.indexOf(b2);
+ assertEquals(0, i);
+ }
}
Added:
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/MimeTokenEmbeddedMessageTest.java
URL:
http://svn.apache.org/viewvc/james/mime4j/trunk/src/test/java/org/apache/james/mime4j/MimeTokenEmbeddedMessageTest.java?rev=674936&view=auto
==============================================================================
---
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/MimeTokenEmbeddedMessageTest.java
(added)
+++
james/mime4j/trunk/src/test/java/org/apache/james/mime4j/MimeTokenEmbeddedMessageTest.java
Tue Jul 8 13:16:45 2008
@@ -0,0 +1,209 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one *
+ * or more contributor license agreements. See the NOTICE file *
+ * distributed with this work for additional information *
+ * regarding copyright ownership. The ASF licenses this file *
+ * to you under the Apache License, Version 2.0 (the *
+ * "License"); you may not use this file except in compliance *
+ * with the License. You may obtain a copy of the License at *
+ * *
+ * http://www.apache.org/licenses/LICENSE-2.0 *
+ * *
+ * Unless required by applicable law or agreed to in writing, *
+ * software distributed under the License is distributed on an *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
+ * KIND, either express or implied. See the License for the *
+ * specific language governing permissions and limitations *
+ * under the License. *
+ ****************************************************************/
+
+package org.apache.james.mime4j;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+import java.nio.charset.Charset;
+
+import junit.framework.TestCase;
+
+public class MimeTokenEmbeddedMessageTest extends TestCase {
+
+ MimeTokenStream stream;
+
+ protected void setUp() throws Exception {
+ super.setUp();
+ stream = new MimeTokenStream();
+ InputStream in = new
ByteArrayInputStream(ExampleMail.MIME_MULTIPART_EMBEDDED_MESSAGES_BYTES);
+ stream.parse(in);
+ }
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ }
+
+ public void _testWhenRecurseShouldVisitInnerMailsAndInnerMultiparts()
throws Exception {
+ stream.setRecursionMode(MimeTokenStream.M_RECURSE);
+
+ nextIs(MimeTokenStream.T_START_HEADER);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_END_HEADER);
+
+ nextIs(MimeTokenStream.T_START_MULTIPART);
+
+ nextIs(MimeTokenStream.T_PREAMBLE);
+
+ // PART ONE
+ nextIs(MimeTokenStream.T_START_BODYPART);
+ nextIs(MimeTokenStream.T_START_HEADER);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_END_HEADER);
+ nextIs(MimeTokenStream.T_BODY);
+ checkInputStream("Rhubarb!\r\n");
+ nextIs(MimeTokenStream.T_END_BODYPART);
+
+ // PART TWO
+ nextIs(MimeTokenStream.T_START_BODYPART);
+ nextIs(MimeTokenStream.T_START_HEADER);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_END_HEADER);
+ nextIs(MimeTokenStream.T_BODY);
+ checkInputStream("987654321AHPLA\r\n");
+ nextIs(MimeTokenStream.T_END_BODYPART);
+
+ // PART THREE
+ nextIs(MimeTokenStream.T_START_BODYPART);
+ nextIs(MimeTokenStream.T_START_HEADER);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_END_HEADER);
+ nextIs(MimeTokenStream.T_START_MESSAGE);
+ nextIs(MimeTokenStream.T_START_HEADER);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_END_HEADER);
+ nextIs(MimeTokenStream.T_START_MULTIPART);
+ nextIs(MimeTokenStream.T_PREAMBLE);
+ nextIs(MimeTokenStream.T_START_BODYPART);
+ nextIs(MimeTokenStream.T_START_HEADER);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_END_HEADER);
+ nextIs(MimeTokenStream.T_BODY);
+ checkInputStream("Custard!\r\n");
+ nextIs(MimeTokenStream.T_END_BODYPART);
+ nextIs(MimeTokenStream.T_START_BODYPART);
+ nextIs(MimeTokenStream.T_START_HEADER);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_END_HEADER);
+ nextIs(MimeTokenStream.T_BODY);
+ checkInputStream("CUSTARDCUSTARDCUSTARD\r\n");
+ nextIs(MimeTokenStream.T_END_BODYPART);
+ nextIs(MimeTokenStream.T_EPILOGUE);
+ nextIs(MimeTokenStream.T_END_MULTIPART);
+ nextIs(MimeTokenStream.T_END_MESSAGE);
+ nextIs(MimeTokenStream.T_END_BODYPART);
+
+ // PART FOUR
+ nextIs(MimeTokenStream.T_START_BODYPART);
+ nextIs(MimeTokenStream.T_START_HEADER);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_END_HEADER);
+ nextIs(MimeTokenStream.T_BODY);
+
checkInputStream(ExampleMail.MIME_MULTIPART_EMBEDDED_MESSAGES_INNER_MULTIPART_MIXED);
+ nextIs(MimeTokenStream.T_END_BODYPART);
+ nextIs(MimeTokenStream.T_EPILOGUE);
+ nextIs(MimeTokenStream.T_END_MULTIPART);
+ }
+
+
+ public void testWhenFlatAtStartShouldIgnoreMultipartStructure() throws
Exception {
+ stream.setRecursionMode(MimeTokenStream.M_FLAT);
+ nextIs(MimeTokenStream.T_START_HEADER);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_END_HEADER);
+
+ nextIs(MimeTokenStream.T_BODY);
+
+ checkInputStream(ExampleMail.MIME_MULTIPART_EMBEDDED_MESSAGES_BODY);
+
+ nextIs(MimeTokenStream.T_END_MESSAGE);
+ }
+
+ public void testWhenFlatShouldIgnoreInnerMailsAndInnerMultiparts() throws
Exception {
+ nextIs(MimeTokenStream.T_START_HEADER);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_END_HEADER);
+
+ nextIs(MimeTokenStream.T_START_MULTIPART);
+
+ stream.setRecursionMode(MimeTokenStream.M_FLAT);
+ nextIs(MimeTokenStream.T_PREAMBLE);
+
+ // PART ONE
+ nextIs(MimeTokenStream.T_START_BODYPART);
+ nextIs(MimeTokenStream.T_START_HEADER);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_END_HEADER);
+ nextIs(MimeTokenStream.T_BODY);
+ checkInputStream("Rhubarb!\r\n");
+ nextIs(MimeTokenStream.T_END_BODYPART);
+
+ // PART TWO
+ nextIs(MimeTokenStream.T_START_BODYPART);
+ nextIs(MimeTokenStream.T_START_HEADER);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_END_HEADER);
+ nextIs(MimeTokenStream.T_BODY);
+ checkInputStream("987654321AHPLA\r\n");
+ nextIs(MimeTokenStream.T_END_BODYPART);
+
+ // PART THREE
+ nextIs(MimeTokenStream.T_START_BODYPART);
+ nextIs(MimeTokenStream.T_START_HEADER);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_END_HEADER);
+ nextIs(MimeTokenStream.T_BODY);
+
checkInputStream(ExampleMail.MIME_MULTIPART_EMBEDDED_MESSAGES_INNER_MAIL);
+ nextIs(MimeTokenStream.T_END_BODYPART);
+
+ // PART FOUR
+ nextIs(MimeTokenStream.T_START_BODYPART);
+ nextIs(MimeTokenStream.T_START_HEADER);
+ nextIs(MimeTokenStream.T_FIELD);
+ nextIs(MimeTokenStream.T_END_HEADER);
+ nextIs(MimeTokenStream.T_BODY);
+
checkInputStream(ExampleMail.MIME_MULTIPART_EMBEDDED_MESSAGES_INNER_MULTIPART_MIXED);
+ nextIs(MimeTokenStream.T_END_BODYPART);
+ nextIs(MimeTokenStream.T_EPILOGUE);
+ nextIs(MimeTokenStream.T_END_MULTIPART);
+ }
+
+ private void checkInputStream(String expected) throws Exception {
+ InputStream inputStream = stream.getInputStream();
+ int next = inputStream.read();
+ int i=0;
+ while (next != -1) {
+ assertEquals("@" + i, expected.charAt(i++), (char) next);
+ next = inputStream.read();
+ }
+ assertEquals(expected.length(), i);
+ }
+
+ private void nextIs(int state) throws Exception {
+ assertEquals(MimeTokenStream.stateToString(state),
MimeTokenStream.stateToString(stream.next()));
+ }
+}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]