Exemplo n.º 1
0
        public void Should_FlattenValueSettingsNode(string name)
        {
            var settingsNode             = new ObjectNode("root", new [] { new ValueNode(name, "testValue") });
            var expectedFlatteringResult = new Dictionary <string, string>
            {
                { name, "testValue" }
            };

            var actualFlatteringResult = settingsNode.Flatten();

            actualFlatteringResult.Should().BeEquivalentTo(expectedFlatteringResult);
        }
Exemplo n.º 2
0
        public void Should_FlattenSimpleObjectNode(string name, int childValuesAmount)
        {
            var expectedNames  = RandomStringGenerator.CreateStrings(childValuesAmount, 16);
            var expectedValues = RandomStringGenerator.CreateStrings(childValuesAmount, 16);

            var childNodes   = expectedNames.Zip(expectedValues, (s, s1) => new ValueNode(s, s1)).ToList();
            var settingsNode = new ObjectNode("root", new [] { new ObjectNode(name, childNodes) });

            var expectedFlatteringResult = childNodes.ToDictionary(
                s => $"{name}:{s.Name}".TrimStart(':'),
                s => s.Value);

            var actualFlatteringResult = settingsNode.Flatten();

            actualFlatteringResult.Should().BeEquivalentTo(expectedFlatteringResult);
        }
        public void Flatten_should_deal_with_object_node_hierarchies_by_merging_names()
        {
            var node = new ObjectNode(null, new ISettingsNode[]
            {
                new ObjectNode("foo", new ISettingsNode[]
                {
                    new ObjectNode("bar", new ISettingsNode[]
                    {
                        new ValueNode("k1", "v1"),
                        new ValueNode("k2", "v2"),
                        new ValueNode(string.Empty, "foo-bar-value")
                    }),
                    new ObjectNode("baz", new ISettingsNode[]
                    {
                        new ValueNode("k1", "v1"),
                        new ValueNode("k2", "v2")
                    }),
                    new ValueNode(string.Empty, "foo-value"),
                }),
                new ObjectNode("bar", new ISettingsNode[]
                {
                    new ObjectNode("baz", new ISettingsNode[]
                    {
                        new ValueNode("k1", "v1"),
                        new ValueNode("k2", "v2")
                    }),
                    new ValueNode(string.Empty, "bar-value"),
                })
            });

            var dictionary = node.Flatten();

            dictionary.Should().HaveCount(9);

            dictionary["foo"].Should().Equal("foo-value");

            dictionary["foo/bar"].Should().Equal("foo-bar-value");
            dictionary["foo/bar/k1"].Should().Equal("v1");
            dictionary["foo/bar/k2"].Should().Equal("v2");

            dictionary["foo/baz/k1"].Should().Equal("v1");
            dictionary["foo/baz/k2"].Should().Equal("v2");

            dictionary["bar"].Should().Equal("bar-value");
            dictionary["bar/baz/k1"].Should().Equal("v1");
            dictionary["bar/baz/k2"].Should().Equal("v2");
        }
Exemplo n.º 4
0
        public void Should_FlattenNestedObjectSettingsNode(string rootNodeName, string nestedNodeName, string expectedPrefix, int childCount)
        {
            var childNames     = RandomStringGenerator.CreateStrings(childCount, 16);
            var expectedValues = RandomStringGenerator.CreateStrings(childCount, 16);

            var childNodes = childNames.Zip(expectedValues, (s, s1) => new ValueNode(s, s1)).ToList();

            var nestedNode   = new ObjectNode(nestedNodeName, childNodes);
            var settingsNode = new ObjectNode(rootNodeName, new[] { nestedNode });

            var expectedFlatteringResult = childNodes.ToDictionary(
                s => $"{expectedPrefix}:{s.Name}".TrimStart(':'),
                s => s.Value
                );

            var actualFlatteringResult = settingsNode.Flatten();

            actualFlatteringResult.Should().BeEquivalentTo(expectedFlatteringResult);
        }
Exemplo n.º 5
0
        public void Should_FlattenNestedArraySettingsNode(string rootNodeName, string nestedNodeName, string expectedPrefix, int arrayLength)
        {
            var expectedValues = RandomStringGenerator.CreateStrings(arrayLength, 16);

            var childNodes   = expectedValues.Select(s => new ValueNode(s)).ToList();
            var arrayNode    = new ArrayNode(nestedNodeName, childNodes);
            var settingsNode = new ObjectNode(rootNodeName, new[] { arrayNode });

            var expectedFlatteringResult = new Dictionary <string, string>();

            for (var i = 0; i < arrayLength; i++)
            {
                expectedFlatteringResult[$"{expectedPrefix}:{i}".TrimStart(':')] = expectedValues[i];
            }

            var actualFlatteringResult = settingsNode.Flatten();

            actualFlatteringResult.Should().BeEquivalentTo(expectedFlatteringResult);
        }