@@ -560,5 +560,60 @@ public void DeSerializePrimitiveArray()
560560 xmlDocument = new FileDbXmlConverter ( ) . ToXml ( doc ) ;
561561 Assert . AreEqual ( testInput , xmlDocument . InnerXml ) ;
562562 }
563+
564+ private class EmptyAttribTestContainer
565+ {
566+ public byte [ ] ? Single { get ; set ; }
567+ public byte [ ] ? MissingSingle { get ; set ; }
568+ public string ? EmptyString { get ; set ; }
569+ public List < byte [ ] > ? NonFlat { get ; set ; }
570+ public object ? ThisIsSelfclosing { get ; set ; }
571+ public int ? MissingNullableInt { get ; set ; }
572+ }
573+
574+ [ TestMethod ]
575+ public void DeSerializeEmptyPrimitiveArray ( )
576+ {
577+ static Stream stream ( string x ) => new MemoryStream ( Encoding . Unicode . GetBytes ( x ) ) ;
578+
579+ const string testInput = "<Content>" +
580+ "<Single></Single>" +
581+ "<EmptyString></EmptyString>" +
582+ "<NonFlat><None></None></NonFlat>" +
583+ "<ThisIsSelfclosing />" +
584+ "</Content>" ;
585+
586+ // load from XML
587+ XmlDocument xmlDocument = new ( ) ;
588+ xmlDocument . Load ( stream ( testInput ) ) ;
589+ IFileDBDocument doc = new XmlFileDbConverter ( FileDBDocumentVersion . Version1 ) . ToFileDb ( xmlDocument ) ;
590+
591+ // serialize & deserialize
592+ FileDBDocumentDeserializer < EmptyAttribTestContainer > deserializer = new ( new ( ) { Version = FileDBDocumentVersion . Version1 } ) ;
593+ var obj = deserializer . GetObjectStructureFromFileDBDocument ( doc ) ;
594+
595+ Assert . IsNotNull ( obj ) ;
596+
597+ Assert . IsNotNull ( obj . Single ) ;
598+ Assert . AreEqual ( 0 , obj . Single ! . Length ) ;
599+
600+ Assert . IsNotNull ( obj . EmptyString ) ;
601+ Assert . AreEqual ( 0 , obj . EmptyString ! . Length ) ;
602+
603+ Assert . IsNotNull ( obj . NonFlat ) ;
604+ Assert . AreEqual ( 1 , obj . NonFlat ? . Count ) ;
605+ Assert . AreEqual ( 0 , obj . NonFlat ! [ 0 ] . Length ) ;
606+
607+ Assert . IsNotNull ( obj . ThisIsSelfclosing ) ;
608+
609+ Assert . IsNull ( obj . MissingNullableInt ) ;
610+
611+ FileDBDocumentSerializer serializer = new ( new ( ) { Version = FileDBDocumentVersion . Version1 } ) ;
612+ doc = serializer . WriteObjectStructureToFileDBDocument ( obj ) ;
613+
614+ // convert back to xml
615+ xmlDocument = new FileDbXmlConverter ( ) . ToXml ( doc ) ;
616+ Assert . AreEqual ( testInput , xmlDocument . InnerXml ) ;
617+ }
563618 }
564619}
0 commit comments