From 2385f672d0e2e4e89a8bc0b58175aaa60ccc17e9 Mon Sep 17 00:00:00 2001 From: Flamefire Date: Mon, 22 Dec 2014 12:12:29 +0100 Subject: [PATCH] Add empty arrays to xml --- Vocaluxe/Base/CConfig.cs | 2 +- VocaluxeLib/Xml/CXmlSerializer.cs | 6 ++++++ VocaluxeTests/XmlSerializerTest.cs | 13 +++++++++++++ 3 files changed, 20 insertions(+), 1 deletion(-) diff --git a/Vocaluxe/Base/CConfig.cs b/Vocaluxe/Base/CConfig.cs index 2c8cbd51..22e7286e 100644 --- a/Vocaluxe/Base/CConfig.cs +++ b/Vocaluxe/Base/CConfig.cs @@ -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": diff --git a/VocaluxeLib/Xml/CXmlSerializer.cs b/VocaluxeLib/Xml/CXmlSerializer.cs index c0db420d..c8ee2cc4 100644 --- a/VocaluxeLib/Xml/CXmlSerializer.cs +++ b/VocaluxeLib/Xml/CXmlSerializer.cs @@ -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)); diff --git a/VocaluxeTests/XmlSerializerTest.cs b/VocaluxeTests/XmlSerializerTest.cs index 56e45410..91605a7e 100644 --- a/VocaluxeTests/XmlSerializerTest.cs +++ b/VocaluxeTests/XmlSerializerTest.cs @@ -301,6 +301,11 @@ namespace VocaluxeTests 2 3 "; + private const string _XmlListEmb4 = _Head + @" + 2 + + 3 +"; [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(_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(_Empty); }