public void Test_SerializeNullValues() { ExampleNullableConfig exampleNullableConfig = new ExampleNullableConfig { stringValue = null, stringValue2 = "~", stringList = new List <string> { null, "~" }, subClassList = new List <ExampleNullableConfig.ExampleNullableSubClass> { new ExampleNullableConfig.ExampleNullableSubClass { a = null }, new ExampleNullableConfig.ExampleNullableSubClass { a = "~" } }, stringDict = new Dictionary <string, string> { { "str1", null }, { "~", "~" } }, subClassDict = new Dictionary <string, ExampleNullableConfig.ExampleNullableSubClass> { { "str1", new ExampleNullableConfig.ExampleNullableSubClass { a = null } }, { "~", new ExampleNullableConfig.ExampleNullableSubClass { a = "~" } } } }; const string expectedResult = @" - intValue = 1 - stringValue = ~ - stringValue2 = ""~"" - intList : -- 1 -- 1 - stringList : -- ~ -- ""~"" - subClassList : -- : --- a = ~ --- b = 1 -- : --- a = ""~"" --- b = 1 - intDict : -- 1 = 1 -- 2 = 2 - stringDict : -- str1 = ~ -- ""~"" = ""~"" - subClassDict : -- str1 : --- a = ~ --- b = 1 -- ""~"" : --- a = ""~"" --- b = 1 "; IEnumerable <string> lines = new ConfigSerializer( new ConfigOptions { keyFormatOption = EFormatOption.QuoteValue, valueFormatOption = EFormatOption.QuoteValue }).Serialize(exampleNullableConfig); Assert.AreEqual(expectedResult.Split(new[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries), lines.ToArray()); }
public void Test_Serialize_SpecialCharOptions() { const string normalString = "asdf"; string specialCharacterString = "" + SpecialCharacters.objectDepth + SpecialCharacters.valueAssignment + SpecialCharacters.objectAssignment + SpecialCharacters.nullChar + SpecialCharacters.stringChar + SpecialCharacters.escapeChar; ExampleNullableConfig exampleNullableConfig = new ExampleNullableConfig { stringValue = normalString, stringValue2 = specialCharacterString, stringList = new List <string> { normalString, specialCharacterString }, subClassList = new List <ExampleNullableConfig.ExampleNullableSubClass> { new ExampleNullableConfig.ExampleNullableSubClass { a = normalString }, new ExampleNullableConfig.ExampleNullableSubClass { a = specialCharacterString } }, stringDict = new Dictionary <string, string> { { normalString, normalString }, { specialCharacterString, specialCharacterString } }, subClassDict = new Dictionary <string, ExampleNullableConfig.ExampleNullableSubClass> { { normalString, new ExampleNullableConfig.ExampleNullableSubClass { a = normalString } }, { specialCharacterString, new ExampleNullableConfig.ExampleNullableSubClass { a = specialCharacterString } } } }; string[] ExpectedLines(EFormatOption keyOpt, EFormatOption valueOpt) { return(new[] { $"- {SpecialCharacters.FormatStringValue("intValue", keyOpt)} = {SpecialCharacters.FormatStringValue("1", valueOpt)}", $"- {SpecialCharacters.FormatStringValue("stringValue", keyOpt)} = {SpecialCharacters.FormatStringValue(normalString, valueOpt)}", $"- {SpecialCharacters.FormatStringValue("stringValue2", keyOpt)} = {SpecialCharacters.FormatStringValue(specialCharacterString, valueOpt)}", $"- {SpecialCharacters.FormatStringValue("intList", keyOpt)} :", $"-- {SpecialCharacters.FormatStringValue("1", valueOpt)}", $"-- {SpecialCharacters.FormatStringValue("1", valueOpt)}", $"- {SpecialCharacters.FormatStringValue("stringList", keyOpt)} :", $"-- {SpecialCharacters.FormatStringValue(normalString, valueOpt)}", $"-- {SpecialCharacters.FormatStringValue(specialCharacterString, valueOpt)}", $"- {SpecialCharacters.FormatStringValue("subClassList", keyOpt)} :", "-- :", $"--- {SpecialCharacters.FormatStringValue("a", keyOpt)} = {SpecialCharacters.FormatStringValue(normalString, valueOpt)}", $"--- {SpecialCharacters.FormatStringValue("b", keyOpt)} = {SpecialCharacters.FormatStringValue("1", valueOpt)}", "-- :", $"--- {SpecialCharacters.FormatStringValue("a", keyOpt)} = {SpecialCharacters.FormatStringValue(specialCharacterString, valueOpt)}", $"--- {SpecialCharacters.FormatStringValue("b", keyOpt)} = {SpecialCharacters.FormatStringValue("1", valueOpt)}", $"- {SpecialCharacters.FormatStringValue("intDict", keyOpt)} :", $"-- {SpecialCharacters.FormatStringValue("1", keyOpt)} = {SpecialCharacters.FormatStringValue("1", valueOpt)}", $"-- {SpecialCharacters.FormatStringValue("2", keyOpt)} = {SpecialCharacters.FormatStringValue("2", valueOpt)}", $"- {SpecialCharacters.FormatStringValue("stringDict", keyOpt)} :", $"-- {SpecialCharacters.FormatStringValue(normalString, keyOpt)} = {SpecialCharacters.FormatStringValue(normalString, valueOpt)}", $"-- {SpecialCharacters.FormatStringValue(specialCharacterString, keyOpt)} = {SpecialCharacters.FormatStringValue(specialCharacterString, valueOpt)}", $"- {SpecialCharacters.FormatStringValue("subClassDict", keyOpt)} :", $"-- {SpecialCharacters.FormatStringValue(normalString, keyOpt)} :", $"--- {SpecialCharacters.FormatStringValue("a", keyOpt)} = {SpecialCharacters.FormatStringValue(normalString, valueOpt)}", $"--- {SpecialCharacters.FormatStringValue("b", keyOpt)} = {SpecialCharacters.FormatStringValue("1", valueOpt)}", $"-- {SpecialCharacters.FormatStringValue(specialCharacterString, keyOpt)} :", $"--- {SpecialCharacters.FormatStringValue("a", keyOpt)} = {SpecialCharacters.FormatStringValue(specialCharacterString, valueOpt)}", $"--- {SpecialCharacters.FormatStringValue("b", keyOpt)} = {SpecialCharacters.FormatStringValue("1", valueOpt)}", }); } foreach (EFormatOption keyOpt in (EFormatOption[])Enum.GetValues(typeof(EFormatOption))) { foreach (EFormatOption valueOpt in (EFormatOption[])Enum.GetValues(typeof(EFormatOption))) { string[] resultLines = new ConfigSerializer( new ConfigOptions { keyFormatOption = keyOpt, valueFormatOption = valueOpt }).Serialize(exampleNullableConfig).ToArray(); Assert.AreEqual(ExpectedLines(keyOpt, valueOpt), resultLines, "keyOpt: {0}, valueOpt: {1}", keyOpt, valueOpt); } } }
public void Test_Deserialize_NullDeserializeToDefault() { ExampleNullableConfig expectedConfig = new ExampleNullableConfig { intValue = 0, stringValue = null, stringValue2 = "~", intList = new List <int> { 0, 1 }, stringList = new List <string> { null, "~" }, subClassList = new List <ExampleNullableConfig.ExampleNullableSubClass> { new ExampleNullableConfig.ExampleNullableSubClass { a = null, b = 0 }, new ExampleNullableConfig.ExampleNullableSubClass { a = "~", b = 1 } }, intDict = new Dictionary <int, int> { { 0, 0 }, { 1, 1 } }, stringDict = new Dictionary <string, string> { { "str1", null }, { "~", "~" } }, subClassDict = new Dictionary <string, ExampleNullableConfig.ExampleNullableSubClass> { { "str1", new ExampleNullableConfig.ExampleNullableSubClass { a = null, b = 0 } }, { "~", new ExampleNullableConfig.ExampleNullableSubClass { a = "~", b = 1 } } } }; const string configString = @" - intValue = ~ - stringValue = ~ - stringValue2 = ""~"" - intList : -- ~ -- 1 - stringList : -- ~ -- ""~"" - subClassList : -- : --- a = ~ --- b = ~ -- : --- a = ""~"" --- b = 1 - intDict : -- ~ = ~ -- 1 = 1 - stringDict : -- str1 = ~ -- ""~"" = ""~"" - subClassDict : -- str1 : --- a = ~ --- b = ~ -- ""~"" : --- a = ""~"" --- b = 1 "; ConfigDeserializer <ExampleNullableConfig> configDeserializer = new ConfigDeserializer <ExampleNullableConfig>( DeserializerUtils.Tokenize(new LineReader(new StringReader(configString))).ToList(), new ConfigOptions() ); ExampleNullableConfig deserializeResult = configDeserializer.Deserialize(); Assert.AreEqual(expectedConfig, deserializeResult); }