Exemplo n.º 1
0
        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());
        }
Exemplo n.º 2
0
        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);
        }