Beispiel #1
0
        public void ReadFromFile_WhenValidInput_ShouldConvertToExpando()
        {
            // Arrange
            var classUnderTest = CreateClassUnderTest(() =>
                                                      new List <List <string> >
            {
                new List <string>
                {
                    "Name",
                    "Surname"
                },
                new List <string>
                {
                    "Panos",
                    "Anastasiadis"
                }
            });

            // Act
            var result = classUnderTest.ParseFile("");

            // Assert
            var expected = new SerializableExpando();

            expected.Add("Name", "Panos");
            expected.Add("Surname", "Anastasiadis");

            result.Should().BeEquivalentTo(expected);
        }
        private static void AddChildExpando(SerializableExpando result, string complexField, string value)
        {
            var intendedFields = complexField.Split("_");

            var relativeParent = result;

            for (var j = 0; j < intendedFields.Length; j++)
            {
                var relativeParentFiend = intendedFields[j].Replace(" ", string.Empty);

                if (j == intendedFields.Length - 1)
                {
                    relativeParent.Add(relativeParentFiend, value);
                    continue;
                }

                if (relativeParent.ContainsKey(relativeParentFiend))
                {
                    relativeParent = (SerializableExpando)relativeParent[relativeParentFiend];
                    continue;
                }

                var parentValueObject = new SerializableExpando();
                relativeParent.Add(relativeParentFiend, parentValueObject);

                relativeParent = parentValueObject;
            }
        }
        public SerializableExpando ToExpando(List <List <string> > content)
        {
            var properties = content[0];
            var values     = content[1];

            var result = new SerializableExpando();

            for (int i = 0; i < properties.Count; i++)
            {
                var field = properties[i];

                if (!field.Contains("_"))
                {
                    result.Add(field, values[i]);
                    continue;
                }

                AddChildExpando(result, field, values[i]);
            }

            return(result);
        }
        public void ToExpando_WhenValidContent_ShouldConvertToExpando()
        {
            // Arrange
            var content = new List <List <string> >
            {
                new List <string>
                {
                    "Name",
                    "Surname",
                    "Address_line1",
                    "Address_line2"
                },
                new List <string>
                {
                    "Panos",
                    "Anastasiadis",
                    "90 Clarence House",
                    "The Boulevard"
                }
            };

            // Act
            var result = _classUnderTest.ToExpando(content);

            var address = new SerializableExpando();

            address.Add("line1", "90 Clarence House");
            address.Add("line2", "The Boulevard");

            var expected = new SerializableExpando();

            expected.Add("Name", "Panos");
            expected.Add("Surname", "Anastasiadis");
            expected.Add("Address", address);

            // Assert
            result.Should().BeEquivalentTo(expected);
        }
Beispiel #5
0
        public override string PrettySerialize(SerializableExpando output)
        {
            if (output == null)
            {
                return(string.Empty);
            }

            var xmlSerializable = XmlSerializableExpando.CreateFrom(output);

            using var sww = new StringWriter();

            XmlWriterSettings settings = new XmlWriterSettings
            {
                ConformanceLevel = ConformanceLevel.Auto
            };

            XmlWriter     writer     = XmlWriter.Create(sww, settings);
            XmlSerializer serializer = new XmlSerializer(xmlSerializable.GetType());

            serializer.Serialize(writer, xmlSerializable);

            return(PrintXml(sww.ToString()));
        }
Beispiel #6
0
        public void PrettySerialize_WhenCalled_ShouldSerializeInputIntended()
        {
            // Arrange
            var address = new SerializableExpando
            {
                { "line1", "90 Clarence House" },
                { "line2", "The Boulevard" }
            };

            var output = new SerializableExpando
            {
                { "Name", "Panos" },
                { "Surname", "Anastasiadis" },
                { "Address", address }
            };

            // Act
            var result = _classUnderTest.PrettySerialize(output);

            // Assert
            result.Should().BeEquivalentTo(
                "<XmlSerializableExpando>\r\n  <Name type=\"System.String, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e\">Panos</Name>\r\n  <Surname type=\"System.String, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e\">Anastasiadis</Surname>\r\n  <Address type=\"FormatConverter.Convert.XmlSerializableExpando, FormatConverter, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null\">\r\n    <line1 type=\"System.String, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e\">90 Clarence House</line1>\r\n    <line2 type=\"System.String, System.Private.CoreLib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e\">The Boulevard</line2>\r\n  </Address>\r\n</XmlSerializableExpando>");
        }
        public void PrettySerialize_WhenCalled_ShouldSerializeInputIntended()
        {
            // Arrange
            var address = new SerializableExpando
            {
                { "line1", "90 Clarence House" },
                { "line2", "The Boulevard" }
            };

            var output = new SerializableExpando
            {
                { "Name", "Panos" },
                { "Surname", "Anastasiadis" },
                { "Address", address }
            };

            // Act
            var result = _classUnderTest.PrettySerialize(output);

            // Assert
            result.Should()
            .BeEquivalentTo(
                "{\r\n  \"Name\": \"Panos\",\r\n  \"Surname\": \"Anastasiadis\",\r\n  \"Address\": {\r\n    \"line1\": \"90 Clarence House\",\r\n    \"line2\": \"The Boulevard\"\r\n  }\r\n}");
        }
Beispiel #8
0
        private static string GetResultOutput(SerializableExpando reading, OutputConverterType outputType)
        {
            var jsonOutPutConverter = OutputConverterFactory.GetConverter(outputType);

            return(jsonOutPutConverter.PrettySerialize(reading));
        }
Beispiel #9
0
 public abstract string PrettySerialize(SerializableExpando output);
 public override string PrettySerialize(SerializableExpando output)
 {
     return(output == null ? "{}" : Pretty(JsonSerializer.Serialize(output)));
 }