3434 */
3535
3636public class MarcXmlEncoderTest {
37- private static StringBuilder resultCollector ;
38- private static MarcXmlEncoder encoder ;
37+
3938 private static final String XML_DECLARATION = "<?xml version=\" 1.0\" encoding=\" UTF-8\" ?>" ;
4039 private static final String XML_1_DECLARATION = "<?xml version=\" 1.1\" encoding=\" UTF-8\" ?>" ;
4140 private static final String XML_16_DECLARATION = "<?xml version=\" 1.0\" encoding=\" UTF-16\" ?>" ;
@@ -48,6 +47,9 @@ public class MarcXmlEncoderTest {
4847 private static final String XML_MARC_COLLECTION_END_TAG = "</marc:collection>" ;
4948 private static final String RECORD_ID = "92005291" ;
5049
50+ private static StringBuilder resultCollector ;
51+ private static MarcXmlEncoder encoder ;
52+
5153 @ Before
5254 public void setUp () {
5355 encoder = new MarcXmlEncoder ();
@@ -219,14 +221,60 @@ public void sendAndClearDataWhenOnResetStream() {
219221
220222 @ Test
221223 public void shouldIgnoreNullValueOfLiteral () {
224+ encoder .startRecord (RECORD_ID );
225+ encoder .literal ("data" , null );
226+ encoder .endRecord ();
227+ encoder .closeStream ();
228+ String expected = XML_DECLARATION + XML_ROOT_OPEN
229+ + "<marc:record><marc:controlfield tag=\" data\" ></marc:controlfield></marc:record>"
230+ + XML_MARC_COLLECTION_END_TAG ;
231+ String actual = resultCollector .toString ();
232+ assertEquals (expected , actual );
233+ }
234+
235+ @ Test
236+ public void shouldIgnoreNullValueOfTypeLiteral () {
222237 encoder .startRecord (RECORD_ID );
223238 encoder .literal ("type" , null );
224239 encoder .endRecord ();
225240 encoder .closeStream ();
226241 String expected = XML_DECLARATION + XML_ROOT_OPEN
227- + "<marc:record><marc:controlfield tag=\" type\" ></marc:controlfield></marc:record>"
242+ + "<marc:record></marc:record>"
243+ + XML_MARC_COLLECTION_END_TAG ;
244+ String actual = resultCollector .toString ();
245+ assertEquals (expected , actual );
246+ }
247+
248+ @ Test
249+ public void issue402_shouldEncodeTypeLiteralAsAttribute () {
250+ encoder .startRecord (RECORD_ID );
251+ encoder .literal ("type" , "value" );
252+ encoder .endRecord ();
253+ encoder .closeStream ();
254+ String expected = XML_DECLARATION + XML_ROOT_OPEN
255+ + "<marc:record type=\" value\" ></marc:record>"
228256 + XML_MARC_COLLECTION_END_TAG ;
229257 String actual = resultCollector .toString ();
230258 assertEquals (expected , actual );
231259 }
260+
261+ @ Test
262+ public void shouldNotEncodeNestedTypeLiteralAsAttribute () {
263+ encoder .startRecord (RECORD_ID );
264+ encoder .startEntity ("tag12" );
265+ encoder .literal ("type" , "value" );
266+ encoder .endEntity ();
267+ encoder .endRecord ();
268+ encoder .closeStream ();
269+ String expected = XML_DECLARATION + XML_ROOT_OPEN
270+ + "<marc:record>"
271+ + "<marc:datafield tag=\" tag\" ind1=\" 1\" ind2=\" 2\" >"
272+ + "<marc:subfield code=\" type\" >value</marc:subfield>"
273+ + "</marc:datafield>"
274+ + "</marc:record>"
275+ + XML_MARC_COLLECTION_END_TAG ;
276+ String actual = resultCollector .toString ();
277+ assertEquals (expected , actual );
278+ }
279+
232280}
0 commit comments