1
/****************************************************************
2
* Licensed to the Apache Software Foundation (ASF) under one *
3
* or more contributor license agreements. See the NOTICE file *
4
* distributed with this work for additional information *
5
* regarding copyright ownership. The ASF licenses this file *
6
* to you under the Apache License, Version 2.0 (the *
7
* "License"); you may not use this file except in compliance *
8
* with the License. You may obtain a copy of the License at *
10
* http://www.apache.org/licenses/LICENSE-2.0 *
12
* Unless required by applicable law or agreed to in writing, *
13
* software distributed under the License is distributed on an *
14
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY *
15
* KIND, either express or implied. See the License for the *
16
* specific language governing permissions and limitations *
17
* under the License. *
18
****************************************************************/
20
package org.apache.james.mime4j.parser;
22
import org.apache.james.mime4j.ExampleMail;
23
import org.apache.james.mime4j.parser.MimeTokenStream;
24
import org.apache.james.mime4j.parser.RecursionMode;
26
import java.io.ByteArrayInputStream;
28
import junit.framework.TestCase;
30
public class MimeStreamTokenMessageRfc822Test extends TestCase {
32
MimeTokenStream stream;
35
protected void setUp() throws Exception {
37
stream = new MimeTokenStream();
38
stream.parse(new ByteArrayInputStream(ExampleMail.MIME_RFC822_SIMPLE_BYTES));
42
protected void tearDown() throws Exception {
46
public void testShouldParseMessageRFC822CorrectWithDefaultConfiguration() throws Exception {
47
nextIs(MimeTokenStream.T_START_HEADER);
48
nextIs(MimeTokenStream.T_FIELD);
49
nextIs(MimeTokenStream.T_FIELD);
50
nextIs(MimeTokenStream.T_FIELD);
51
nextIs(MimeTokenStream.T_FIELD);
52
nextIs(MimeTokenStream.T_FIELD);
53
nextIs(MimeTokenStream.T_FIELD);
54
nextIs(MimeTokenStream.T_END_HEADER);
55
nextIs(MimeTokenStream.T_START_MESSAGE);
56
nextIs(MimeTokenStream.T_START_HEADER);
57
nextIs(MimeTokenStream.T_FIELD);
58
nextIs(MimeTokenStream.T_FIELD);
59
nextIs(MimeTokenStream.T_FIELD);
60
nextIs(MimeTokenStream.T_FIELD);
61
nextIs(MimeTokenStream.T_END_HEADER);
62
nextIs(MimeTokenStream.T_BODY);
63
nextIs(MimeTokenStream.T_END_MESSAGE);
64
nextIs(MimeTokenStream.T_END_MESSAGE);
65
nextIs(MimeTokenStream.T_END_OF_STREAM);
68
public void testShouldParseMessageRFC822CorrectWithNoRecurse() throws Exception {
69
stream.setRecursionMode(RecursionMode.M_NO_RECURSE);
70
nextIs(MimeTokenStream.T_START_HEADER);
71
nextIs(MimeTokenStream.T_FIELD);
72
nextIs(MimeTokenStream.T_FIELD);
73
nextIs(MimeTokenStream.T_FIELD);
74
nextIs(MimeTokenStream.T_FIELD);
75
nextIs(MimeTokenStream.T_FIELD);
76
nextIs(MimeTokenStream.T_FIELD);
77
nextIs(MimeTokenStream.T_END_HEADER);
78
nextIs(MimeTokenStream.T_BODY);
79
nextIs(MimeTokenStream.T_END_MESSAGE);
80
nextIs(MimeTokenStream.T_END_OF_STREAM);
83
public void testShouldParseMessageRFC822CorrectWithFlat() throws Exception {
84
stream.setRecursionMode(RecursionMode.M_FLAT);
85
nextIs(MimeTokenStream.T_START_HEADER);
86
nextIs(MimeTokenStream.T_FIELD);
87
nextIs(MimeTokenStream.T_FIELD);
88
nextIs(MimeTokenStream.T_FIELD);
89
nextIs(MimeTokenStream.T_FIELD);
90
nextIs(MimeTokenStream.T_FIELD);
91
nextIs(MimeTokenStream.T_FIELD);
92
nextIs(MimeTokenStream.T_END_HEADER);
93
nextIs(MimeTokenStream.T_BODY);
94
nextIs(MimeTokenStream.T_END_MESSAGE);
95
nextIs(MimeTokenStream.T_END_OF_STREAM);
98
private void nextIs(int state) throws Exception {
99
assertEquals(MimeTokenStream.stateToString(state), MimeTokenStream.stateToString(stream.next()));