KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > columba > ristretto > parser > HeaderParserTest


1 /* ***** BEGIN LICENSE BLOCK *****
2  * Version: MPL 1.1/GPL 2.0/LGPL 2.1
3  *
4  * The contents of this file are subject to the Mozilla Public License Version
5  * 1.1 (the "License"); you may not use this file except in compliance with
6  * the License. You may obtain a copy of the License at
7  * http://www.mozilla.org/MPL/
8  *
9  * Software distributed under the License is distributed on an "AS IS" basis,
10  * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
11  * for the specific language governing rights and limitations under the
12  * License.
13  *
14  * The Original Code is Ristretto Mail API.
15  *
16  * The Initial Developers of the Original Code are
17  * Timo Stich and Frederik Dietz.
18  * Portions created by the Initial Developers are Copyright (C) 2004
19  * All Rights Reserved.
20  *
21  * Contributor(s):
22  *
23  * Alternatively, the contents of this file may be used under the terms of
24  * either the GNU General Public License Version 2 or later (the "GPL"), or
25  * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
26  * in which case the provisions of the GPL or the LGPL are applicable instead
27  * of those above. If you wish to allow use of your version of this file only
28  * under the terms of either the GPL or the LGPL, and not to allow others to
29  * use your version of this file under the terms of the MPL, indicate your
30  * decision by deleting the provisions above and replace them with the notice
31  * and other provisions required by the GPL or the LGPL. If you do not delete
32  * the provisions above, a recipient may use your version of this file under
33  * the terms of any one of the MPL, the GPL or the LGPL.
34  *
35  * ***** END LICENSE BLOCK ***** */

36 package org.columba.ristretto.parser;
37
38 import junit.framework.TestCase;
39
40 import org.columba.ristretto.io.CharSequenceSource;
41 import org.columba.ristretto.io.Source;
42 import org.columba.ristretto.message.Header;
43
44 public class HeaderParserTest extends TestCase {
45
46     /**
47      * Constructor for HeaderParserTest.
48      * @param arg0
49      */

50     public HeaderParserTest(String JavaDoc arg0) {
51         super(arg0);
52     }
53
54     public void testInputStreamSimpleFoldedLine() {
55         try {
56             String JavaDoc testHeaderInput = "Folded: Line\r\n test\r\n\r\n";
57             Header testHeader =
58                 HeaderParser.parse(new CharSequenceSource(testHeaderInput));
59             assertTrue(testHeader.length() == 1);
60             assertTrue(testHeader.get("Folded").equals("Linetest"));
61
62         } catch (ParserException e) {
63             e.printStackTrace();
64         }
65     }
66
67     public void testInputStreamMultiFoldedLine() {
68         try {
69             String JavaDoc testHeaderInput =
70                 "Folded: Line\r\n test\r\n\t multiple\r\n folded\r\n\r\n";
71             Header testHeader =
72                 HeaderParser.parse(new CharSequenceSource(testHeaderInput));
73             assertTrue(testHeader.length() == 1);
74             assertTrue(
75                 testHeader.get("Folded").equals("Linetest multiple folded"));
76
77         } catch (ParserException e) {
78             e.printStackTrace();
79         }
80     }
81
82     public void testInputStreamSimpleLine() {
83         try {
84             String JavaDoc testHeaderInput = "Simple: Test\r\n\r\n";
85             Header testHeader =
86                 HeaderParser.parse(new CharSequenceSource(testHeaderInput));
87
88             assertTrue(testHeader.length() == 1);
89             assertTrue(testHeader.get("Simple").equals("Test"));
90         } catch (ParserException e) {
91             e.printStackTrace();
92         }
93
94     }
95
96     public void testEmptyValue() {
97         try {
98             String JavaDoc testHeaderInput = "Simple: \r\n\r\n";
99             Header testHeader =
100                 HeaderParser.parse(new CharSequenceSource(testHeaderInput));
101
102             assertTrue(testHeader.length() == 1);
103             assertTrue(testHeader.get("Simple").equals(""));
104         } catch (ParserException e) {
105             e.printStackTrace();
106         }
107
108     }
109
110     public void testInputStreamMultiLine() {
111         try {
112             String JavaDoc testHeaderInput =
113                 "Simple: Test\r\n" + "Is: not enough\r\n" + "\r\n";
114             Header testHeader =
115                 HeaderParser.parse(new CharSequenceSource(testHeaderInput));
116
117             assertTrue(testHeader.length() == 2);
118             assertTrue(testHeader.get("Simple").equals("Test"));
119             assertTrue(testHeader.get("Is").equals("not enough"));
120
121         } catch (ParserException e) {
122             e.printStackTrace();
123         }
124     }
125
126     public void testInputStreamSimpleQuoted() {
127         try {
128             String JavaDoc testHeaderInput =
129                 "Simple: bla:Test\" with (simple) Quotes\"\r\n\r\n";
130             Header testHeader =
131                 HeaderParser.parse(new CharSequenceSource(testHeaderInput));
132
133             assertTrue(testHeader.length() == 1);
134             assertTrue(
135                 testHeader.get("Simple").equals(
136                     "bla:Test\" with (simple) Quotes\""));
137
138         } catch (ParserException e) {
139             e.printStackTrace();
140         }
141
142     }
143
144     public void testInputStreamQuotedFolded() {
145         try {
146             String JavaDoc testHeaderInput =
147                 "Simple: Test\" with (fol\r\n ded) Quotes\"\r\n\r\n";
148             Header testHeader =
149                 HeaderParser.parse(new CharSequenceSource(testHeaderInput));
150
151             assertTrue(testHeader.length() == 1);
152             assertTrue(
153                 testHeader.get("Simple").equals(
154                     "Test\" with (folded) Quotes\""));
155
156         } catch (ParserException e) {
157             e.printStackTrace();
158         }
159     }
160
161     public void testInputStream8BitSafe() {
162         try {
163             String JavaDoc testHeaderInput = "Simple: \"??????\"\r\n\r\n";
164             Header testHeader =
165                 HeaderParser.parse(new CharSequenceSource(testHeaderInput));
166
167             assertTrue(testHeader.length() == 1);
168             assertTrue(testHeader.get("Simple").equals("\"??????\""));
169
170         } catch (ParserException e) {
171             e.printStackTrace();
172         }
173     }
174
175     public void testBogusQuoted() {
176         try {
177             String JavaDoc testHeaderInput =
178                 "Bogus: \"blabl\"bla\"bla\r\n\r\nThis is the body";
179             Header testHeader =
180                 HeaderParser.parse(new CharSequenceSource(testHeaderInput));
181
182             assertTrue(testHeader.length() == 1);
183             assertTrue(testHeader.get("Bogus").equals("\"blabl\"bla\"bla"));
184
185         } catch (ParserException e) {
186             e.printStackTrace();
187         }
188     }
189
190     public void testSourcePosition() {
191         try {
192             String JavaDoc testHeaderInput = "Test: Simple\r\n\r\nThis is the body";
193             Source testSource = new CharSequenceSource(testHeaderInput);
194             Header testHeader = HeaderParser.parse(testSource);
195             String JavaDoc body = testSource.fromActualPosition().toString();
196             assertTrue(body.equals("This is the body"));
197         } catch (ParserException e) {
198             e.printStackTrace();
199         }
200     }
201
202     public void testHeaderEndDetection() {
203         try {
204             String JavaDoc testHeaderInput =
205                 "Test: Simple\r\n\r\nThis is the body: but with a header like text\r\n";
206             Source testSource = new CharSequenceSource(testHeaderInput);
207             Header testHeader = HeaderParser.parse(testSource);
208             String JavaDoc body = testSource.fromActualPosition().toString();
209             assertTrue(
210                 body.equals(
211                     "This is the body: but with a header like text\r\n"));
212         } catch (ParserException e) {
213             e.printStackTrace();
214         }
215     }
216
217     public void testKeyNormalization() {
218         try {
219             String JavaDoc testHeaderInput =
220                 "mesSaGe-id: Simple\r\nIn-Reply-To: Test\r\nsubject: Bla\r\n\r\n";
221             Source testSource = new CharSequenceSource(testHeaderInput);
222             Header testHeader = HeaderParser.parse(testSource);
223             assertTrue(testHeader.length() == 3);
224             assertTrue(testHeader.get("Message-ID").equals("Simple"));
225             assertTrue(testHeader.get("In-Reply-To").equals("Test"));
226             assertTrue(testHeader.get("Subject").equals("Bla"));
227         } catch (ParserException e) {
228             e.printStackTrace();
229         }
230     }
231     
232     public void testInputStream2() {
233         try {
234             String JavaDoc testHeaderInput =
235                 "Message-ID: <8-0-m-77cw0-$11151$3p$h$5@00eif>\n"
236                     + "From: \"Goldie Ames\" <c0a2sg83y9s2@aol.com>\n"
237                     + "To: freddy@sowi.uni-mannheim.de\n"
238                     + "Subject: Find a Mortgage Loan... Refinance, 2nd, Purchase, Home Improvement AA\n"
239                     + " hhxcrad i\n"
240                     + "Date: Tue, 22 Jan 02 05:48:49 GMT\n"
241                     + "Content-Type: multipart/alternative;\n"
242                     + " boundary=\".5AEA83D7D_C8FA_E_E_\";\n";
243
244             Header testHeader =
245                 HeaderParser.parse(new CharSequenceSource(testHeaderInput));
246
247             assertTrue(testHeader.length() == 6);
248
249         } catch (ParserException e) {
250             e.printStackTrace();
251         }
252     }
253
254 }
Popular Tags