22
22
import org .junit .After ;
23
23
import org .junit .Before ;
24
24
import org .junit .Test ;
25
+ import org .metafacture .framework .MetafactureException ;
25
26
import org .metafacture .framework .helpers .DefaultObjectReceiver ;
26
27
27
28
/**
33
34
*/
34
35
35
36
public class MarcXmlEncoderTest {
36
- private static StringBuilder resultCollector ;
37
- private static MarcXmlEncoder encoder ;
37
+ private static StringBuilder resultCollector ;
38
+ private static MarcXmlEncoder encoder ;
38
39
private static final String XML_DECLARATION = "<?xml version=\" 1.0\" encoding=\" UTF-8\" ?>" ;
39
40
private static final String XML_1_DECLARATION = "<?xml version=\" 1.1\" encoding=\" UTF-8\" ?>" ;
40
41
private static final String XML_16_DECLARATION = "<?xml version=\" 1.0\" encoding=\" UTF-16\" ?>" ;
@@ -46,9 +47,9 @@ public class MarcXmlEncoderTest {
46
47
+ "</marc:datafield></marc:record>" ;
47
48
private static final String XML_MARC_COLLECTION_END_TAG = "</marc:collection>" ;
48
49
private static final String RECORD_ID = "92005291" ;
49
-
50
+
50
51
@ Before
51
- public void setUp () throws Exception {
52
+ public void setUp () {
52
53
encoder = new MarcXmlEncoder ();
53
54
encoder .setFormatted (false );
54
55
encoder .setReceiver (new DefaultObjectReceiver <String >() {
@@ -57,11 +58,11 @@ public void process(final String obj) {
57
58
resultCollector .append (obj );
58
59
}
59
60
});
60
- resultCollector = new StringBuilder ();
61
+ resultCollector = new StringBuilder ();
61
62
}
62
63
63
64
@ After
64
- public void tearDown () throws Exception {
65
+ public void tearDown () {
65
66
}
66
67
67
68
private void addOneRecord (MarcXmlEncoder encoder ) {
@@ -74,7 +75,7 @@ private void addOneRecord(MarcXmlEncoder encoder) {
74
75
}
75
76
76
77
@ Test
77
- public void doNotOmitXmlDeclaration () throws Exception {
78
+ public void doNotOmitXmlDeclaration () {
78
79
encoder .omitXmlDeclaration (false );
79
80
addOneRecord (encoder );
80
81
encoder .closeStream ();
@@ -84,7 +85,7 @@ public void doNotOmitXmlDeclaration() throws Exception {
84
85
}
85
86
86
87
@ Test
87
- public void omitXmlDeclaration () throws Exception {
88
+ public void omitXmlDeclaration () {
88
89
encoder .omitXmlDeclaration (true );
89
90
addOneRecord (encoder );
90
91
encoder .closeStream ();
@@ -94,7 +95,7 @@ public void omitXmlDeclaration() throws Exception {
94
95
}
95
96
96
97
@ Test
97
- public void setXmlVersion () throws Exception {
98
+ public void setXmlVersion () {
98
99
encoder .omitXmlDeclaration (false );
99
100
encoder .setXmlVersion ("1.1" );
100
101
addOneRecord (encoder );
@@ -105,7 +106,7 @@ public void setXmlVersion() throws Exception {
105
106
}
106
107
107
108
@ Test
108
- public void setXmlEncoding () throws Exception {
109
+ public void setXmlEncoding () {
109
110
encoder .omitXmlDeclaration (false );
110
111
encoder .setXmlEncoding ("UTF-16" );
111
112
addOneRecord (encoder );
@@ -116,45 +117,90 @@ public void setXmlEncoding() throws Exception {
116
117
}
117
118
118
119
@ Test
119
- public void createAnEmptyRecord () throws Exception {
120
- encoder .startRecord ("1" );
120
+ public void createAnEmptyRecord () {
121
+ encoder .startRecord (RECORD_ID );
121
122
encoder .endRecord ();
122
123
encoder .closeStream ();
123
- String expected = XML_DECLARATION + XML_ROOT_OPEN + "<marc:record></marc:record>"
124
- + XML_MARC_COLLECTION_END_TAG ;
124
+ String expected = XML_DECLARATION + XML_ROOT_OPEN + "<marc:record></marc:record>" + XML_MARC_COLLECTION_END_TAG ;
125
125
String actual = resultCollector .toString ();
126
126
assertEquals (expected , actual );
127
127
}
128
128
129
129
@ Test
130
- public void createARecord () throws Exception {
130
+ public void createARecordPrettyPrint () {
131
+ encoder .setFormatted (true );
131
132
addOneRecord (encoder );
132
133
encoder .closeStream ();
133
- String expected = XML_DECLARATION + XML_ROOT_OPEN + XML_RECORD + "</marc:collection>" ;
134
+ String expected = XML_DECLARATION + "\n " + XML_ROOT_OPEN + "\n " // " <marc:record>\n"
135
+ + "\t <marc:record>\n " //
136
+ + "\t \t <marc:controlfield tag=\" 001\" >92005291</marc:controlfield>\n " //
137
+ + "\t \t <marc:datafield tag=\" 010\" ind1=\" \" ind2=\" \" >\n " //
138
+ + "\t \t \t <marc:subfield code=\" a\" >92005291</marc:subfield>\n " //
139
+ + "\t \t </marc:datafield>\n "
140
+ + "\t </marc:record>\n " //
141
+ + XML_MARC_COLLECTION_END_TAG ;
134
142
String actual = resultCollector .toString ();
135
143
assertEquals (expected , actual );
136
144
}
137
145
138
146
@ Test
139
- public void createTwoRecordsInOneCollection () throws Exception {
147
+ public void createARecordWithEscapedSequences () {
148
+ encoder .startRecord (RECORD_ID );
149
+ encoder .literal ("001" , "&<>\" " );
150
+ encoder .endRecord ();
151
+ encoder .onResetStream ();
152
+ String expected = XML_DECLARATION + XML_ROOT_OPEN + "<marc:record>"
153
+ + "<marc:controlfield tag=\" 001\" >&<>"</marc:controlfield>" + "</marc:record>"
154
+ + XML_MARC_COLLECTION_END_TAG ;
155
+ String actual = resultCollector .toString ();
156
+ assertEquals (expected , actual );
157
+ }
158
+
159
+ @ Test
160
+ public void createTwoRecordsInOneCollection () {
140
161
addOneRecord (encoder );
141
162
addOneRecord (encoder );
142
163
encoder .closeStream ();
143
- String expected = XML_DECLARATION + XML_ROOT_OPEN + XML_RECORD + XML_RECORD + "</marc:collection>" ;
164
+ String expected = XML_DECLARATION + XML_ROOT_OPEN + XML_RECORD + XML_RECORD + XML_MARC_COLLECTION_END_TAG ;
144
165
String actual = resultCollector .toString ();
145
166
assertEquals (expected , actual );
146
167
}
147
168
169
+ @ Test (expected = MetafactureException .class )
170
+ public void emitExceptionWhenEntityLengthNot5 () {
171
+ encoder .startRecord (RECORD_ID );
172
+ encoder .startEntity ("123456" );
173
+ }
174
+
148
175
@ Test
149
- public void createAnRecordWithLeader () throws Exception {
176
+ public void createAnRecordWithLeader () {
150
177
encoder .startRecord ("1" );
151
- encoder .startEntity ("leader" );
152
- encoder .literal ("leader" , "dummy" );
178
+ encoder .startEntity (Marc21EventNames . LEADER_ENTITY );
179
+ encoder .literal (Marc21EventNames . LEADER_ENTITY , "dummy" );
153
180
encoder .endEntity ();
154
181
encoder .endRecord ();
155
182
encoder .closeStream ();
156
- String expected = XML_DECLARATION + XML_ROOT_OPEN + "<marc:record><marc:leader>dummy</marc:leader></marc:record>"
157
- + XML_MARC_COLLECTION_END_TAG ;
183
+ String expected = XML_DECLARATION + XML_ROOT_OPEN
184
+ + "<marc:record><marc:leader>dummy</marc:leader></marc:record>" + XML_MARC_COLLECTION_END_TAG ;
185
+ String actual = resultCollector .toString ();
186
+ assertEquals (expected , actual );
187
+ }
188
+
189
+ @ Test
190
+ public void sendDataAndClearWhenRecordStartedAndStreamResets () {
191
+ encoder .startRecord ("1" );
192
+ encoder .onResetStream ();
193
+ encoder .endRecord ();
194
+ String expected = XML_DECLARATION + XML_ROOT_OPEN + "<marc:record>" + XML_MARC_COLLECTION_END_TAG
195
+ + "</marc:record>" ;
196
+ String actual = resultCollector .toString ();
197
+ assertEquals (expected , actual );
198
+ }
199
+
200
+ @ Test
201
+ public void sendAndClearDataWhenOnResetStream () {
202
+ encoder .onResetStream ();
203
+ String expected = "" ;
158
204
String actual = resultCollector .toString ();
159
205
assertEquals (expected , actual );
160
206
}
0 commit comments