1 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 50 public HeaderParserTest(String arg0) { 51 super(arg0); 52 } 53 54 public void testInputStreamSimpleFoldedLine() { 55 try { 56 String 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 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 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 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 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 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 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 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 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 testHeaderInput = "Test: Simple\r\n\r\nThis is the body"; 193 Source testSource = new CharSequenceSource(testHeaderInput); 194 Header testHeader = HeaderParser.parse(testSource); 195 String 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 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 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 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 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
|