1616
1717package org .metafacture .biblio .marc21 ;
1818
19- import static org .junit . Assert . assertEquals ;
20- import static org .junit . Assert . assertTrue ;
19+ import org .metafacture . framework . MetafactureException ;
20+ import org .metafacture . framework . helpers . DefaultObjectReceiver ;
2121
22- import org .junit .After ;
2322import org .junit .Before ;
2423import org .junit .Test ;
25- import org .metafacture .framework .MetafactureException ;
26- import org .metafacture .framework .helpers .DefaultObjectReceiver ;
24+
25+ import static org .junit .Assert .assertEquals ;
26+ import static org .junit .Assert .assertTrue ;
2727
2828/**
2929 * Tests for class {@link MarcXmlEncoder}.
@@ -63,11 +63,7 @@ public void process(final String obj) {
6363 resultCollector = new StringBuilder ();
6464 }
6565
66- @ After
67- public void tearDown () {
68- }
69-
70- private void addOneRecord (MarcXmlEncoder encoder ) {
66+ private void addOneRecord (final MarcXmlEncoder encoder ) {
7167 encoder .startRecord (RECORD_ID );
7268 encoder .literal ("001" , RECORD_ID );
7369 encoder .startEntity ("010 " );
@@ -201,7 +197,7 @@ public void createAnRecordWithLeader() {
201197 }
202198
203199 @ Test
204- public void issue336_createRecordWithTopLevelLeader () {
200+ public void issue336_createRecordWithTopLevelLeader_dummy () {
205201 encoder .startRecord ("1" );
206202 encoder .literal (Marc21EventNames .LEADER_ENTITY , "dummy" );
207203 encoder .endRecord ();
@@ -212,6 +208,49 @@ public void issue336_createRecordWithTopLevelLeader() {
212208 assertEquals (expected , actual );
213209 }
214210
211+ @ Test
212+ public void issue336_createRecordWithTopLevelLeader_defaultMarc21Xml () {
213+ issue336_createRecordWithTopLevelLeader (encoder , "00000naa a2200000uc 4500" );
214+ }
215+
216+ private void issue336_createRecordWithTopLevelLeader (final MarcXmlEncoder encoder , final String expectedLeader ) {
217+ encoder .startRecord ("1" );
218+ encoder .literal ("001" , "8u3287432" );
219+ encoder .literal (Marc21EventNames .LEADER_ENTITY , "00000naa a2200000uc 4500" );
220+ encoder .endRecord ();
221+ encoder .closeStream ();
222+ String expected = XML_DECLARATION + XML_ROOT_OPEN
223+ + "<marc:record><marc:controlfield tag=\" 001\" >8u3287432</marc:controlfield>" +
224+ "<marc:leader>" + expectedLeader + "</marc:leader></marc:record>" + XML_MARC_COLLECTION_END_TAG ;
225+ String actual = resultCollector .toString ();
226+ assertEquals (expected , actual );
227+ }
228+
229+ @ Test
230+ public void issue527_shouldEmitLeaderAlwaysAsWholeString () {
231+ issue527_shouldEmitLeaderAlwaysAsWholeString (encoder );
232+ }
233+
234+ private void issue527_shouldEmitLeaderAlwaysAsWholeString (final MarcXmlEncoder encoder ) {
235+ encoder .startRecord ("1" );
236+ encoder .startEntity (Marc21EventNames .LEADER_ENTITY );
237+ encoder .literal (Marc21EventNames .RECORD_STATUS_LITERAL , "a" );
238+ encoder .literal (Marc21EventNames .RECORD_TYPE_LITERAL , "o" );
239+ encoder .literal (Marc21EventNames .BIBLIOGRAPHIC_LEVEL_LITERAL , "a" );
240+ encoder .literal (Marc21EventNames .TYPE_OF_CONTROL_LITERAL , " " );
241+ encoder .literal (Marc21EventNames .CHARACTER_CODING_LITERAL , "a" );
242+ encoder .literal (Marc21EventNames .ENCODING_LEVEL_LITERAL , "z" );
243+ encoder .literal (Marc21EventNames .CATALOGING_FORM_LITERAL , "u" );
244+ encoder .literal (Marc21EventNames .MULTIPART_LEVEL_LITERAL , " " );
245+ encoder .endEntity ();
246+ encoder .endRecord ();
247+ encoder .closeStream ();
248+ String expected = XML_DECLARATION + XML_ROOT_OPEN
249+ + "<marc:record><marc:leader>aoa azu </marc:leader></marc:record>" + XML_MARC_COLLECTION_END_TAG ;
250+ String actual = resultCollector .toString ();
251+ assertEquals (expected , actual );
252+ }
253+
215254 @ Test
216255 public void sendDataAndClearWhenRecordStartedAndStreamResets () {
217256 encoder .startRecord ("1" );
0 commit comments