Add empty arrays to xml

This commit is contained in:
Flamefire committed 2014-12-22 12:12:29 +01:00
1 parent 9e4a14985e
commit 2385f672d0
3 files changed
+20 -1

No files matched your search

+1 -1
View File
@@ -419,7 +419,7 @@ namespace Vocaluxe.Base
case "Language":
return "Game-Language";
case "SongFolder":
return "SongFolder: SongFolder1, SongFolder2, SongFolder3, ...";
return "SongFolder: Add each song folder in a seperate SongFolder entry";
case "SongMenu":
return "SongMenu: " + CHelper.ListStrings(Enum.GetNames(typeof(ESongMenu)));
case "SongSorting":
+6
View File
@@ -165,8 +165,14 @@ namespace VocaluxeLib.Xml
if (field.IsEmbeddedList)
{
IEnumerable values = (IEnumerable)value;
bool empty = true;
foreach (object subValue in values)
{
_WriteValue(writer, field.Name, field.SubType, subValue, field.IsAttribute);
empty = false;
}
if (empty && _WriteDefaults)
writer.WriteElementString(field.Name, "");
}
else if (field.IsByteArray)
writer.WriteElementString(field.Name, Convert.ToBase64String((byte[])value));
+13
View File
@@ -301,6 +301,11 @@ namespace VocaluxeTests
<I>2</I>
<J>3</J>
</root>";
private const string _XmlListEmb4 = _Head + @"<root>
<I>2</I>
<Entry />
<J>3</J>
</root>";
[TestMethod]
public void TestListEmbedded()
@@ -321,6 +326,10 @@ namespace VocaluxeTests
Assert.AreEqual(foo.Ints.Count, 0, "Deserialization failed");
res = ser.Serialize(foo);
Assert.AreEqual(_XmlListEmb3, res, "Serialization failed");
ser = new CXmlSerializer(true);
foo.Ints.Clear();
res = ser.Serialize(foo);
Assert.AreEqual(_XmlListEmb4, res, "Serialization failed");
_AssertFail<SListEmb, CXmlException>(_Empty);
}
@@ -343,6 +352,10 @@ namespace VocaluxeTests
Assert.AreEqual(foo.Ints.Length, 0, "Deserialization failed");
res = ser.Serialize(foo);
Assert.AreEqual(_XmlListEmb3, res, "Serialization failed");
ser = new CXmlSerializer(true);
foo.Ints = new SEntry[0];
res = ser.Serialize(foo);
Assert.AreEqual(_XmlListEmb4, res, "Serialization failed");
_AssertFail<SArrayEmb, CXmlException>(_Empty);
}