1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 package org.archive.util.anvl;
26
27 import java.io.ByteArrayInputStream;
28 import java.io.IOException;
29 import java.io.UnsupportedEncodingException;
30 import java.util.Map;
31
32 import junit.framework.TestCase;
33
34 public class ANVLRecordTest extends TestCase {
35 public void testAdd() throws Exception {
36 ANVLRecord am = new ANVLRecord();
37 am.add(new Element(new Label("entry")));
38 am.add(new Element(new Label("who"),
39 new Value("Gilbert, W.S. | Sullivan, Arthur")));
40 am.add(new Element(new Label("what"),
41 new Value("\rThe Yeoman of \rthe guard")));
42 am.add(new Element(new Label("what"),
43 new Value("The Yeoman of\r\n the guard")));
44 am.add(new Element(new Label("what"),
45 new Value("The Yeoman of \n\tthe guard")));
46 am.add(new Element(new Label("what"),
47 new Value("The Yeoman of \r the guard")));
48 am.add(new Element(new Label("when/created"),
49 new Value("1888")));
50 System.out.println(am.toString());
51 Map m = am.asMap();
52 System.out.println(m.toString());
53 }
54
55 public void testEmptyRecord() throws Exception {
56 byte [] b = ANVLRecord.EMPTY_ANVL_RECORD.getUTF8Bytes();
57 assertEquals(b.length, 2);
58 assertEquals(b[0], '\r');
59 assertEquals(b[1], '\n');
60 }
61
62 public void testFolding() throws Exception {
63 ANVLRecord am = new ANVLRecord();
64 Exception e = null;
65 try {
66 am.addLabel("Label with \n in it");
67 } catch (IllegalArgumentException iae) {
68 e = iae;
69 }
70 assertTrue(e != null && e instanceof IllegalArgumentException);
71 am.addLabelValue("label", "value with \n in it");
72 }
73
74 public void testParse() throws UnsupportedEncodingException, IOException {
75 String record = " a: b\r\n#c#\r\nc:d\r\n \t\t\r\t\n\te" +
76 "\r\nx:\r\n # z\r\n\r\n";
77 ANVLRecord r = ANVLRecord.load(new ByteArrayInputStream(
78 record.getBytes("ISO-8859-1")));
79 System.out.println(r);
80 assertEquals(r.get(0).toString(), "a: b");
81 record = " a: b\r\n\r\nsdfsdsdfds";
82 r = ANVLRecord.load(new ByteArrayInputStream(
83 record.getBytes("ISO-8859-1")));
84 System.out.println(r);
85 record = "x:\r\n # z\r\ny:\r\n\r\n";
86 r = ANVLRecord.load(new ByteArrayInputStream(
87 record.getBytes("ISO-8859-1")));
88 System.out.println(r);
89 assertEquals(r.get(0).toString(), "x:");
90 }
91
92 public void testExampleParse()
93 throws UnsupportedEncodingException, IOException {
94 final String sample = "entry:\t\t\r\n# first ###draft\r\n" +
95 "who:\tGilbert, W.S. | Sullivan, Arthur\r\n" +
96 "what:\tThe Yeoman of\r\n" +
97 "\t\tthe Guard\r\n" +
98 "when/created:\t 1888\r\n\r\n";
99 ANVLRecord r = ANVLRecord.load(new ByteArrayInputStream(
100 sample.getBytes("ISO-8859-1")));
101 System.out.println(r);
102 }
103
104 public void testPoundLabel()
105 throws UnsupportedEncodingException, IOException {
106 final String sample = "ent#ry:\t\t\r\n# first ###draft\r\n" +
107 "who:\tGilbert, W.S. | Sullivan, Arthur\r\n" +
108 "what:\tThe Yeoman of\r\n" +
109 "\t\tthe Guard\r\n" +
110 "when/created:\t 1888\r\n\r\n";
111 ANVLRecord r = ANVLRecord.load(sample);
112 System.out.println(r);
113 }
114
115 public void testNewlineLabel()
116 throws UnsupportedEncodingException, IOException {
117 final String sample = "ent\nry:\t\t\r\n# first ###draft\r\n" +
118 "who:\tGilbert, W.S. | Sullivan, Arthur\r\n" +
119 "what:\tThe Yeoman of\r\n" +
120 "\t\tthe Guard\r\n" +
121 "when/created:\t 1888\r\n\r\n";
122 IllegalArgumentException iae = null;
123 try {
124 ANVLRecord.load(sample);
125 } catch(IllegalArgumentException e) {
126 iae = e;
127 }
128 assertTrue(iae != null);
129 }
130 }