コード例 #1
0
    public void GetKeysFromPrefix_ReturnsSubKeysThatStartWithPrefix()
    {
        // Arrange
        var keys      = new[] { "foo[0].name", "foo.age", "foo[1].name", "food[item].spice" };
        var container = new PrefixContainer(keys);

        // Act
        var result = container.GetKeysFromPrefix("foo");

        // Assert
        Assert.Collection(result.OrderBy(k => k.Key, StringComparer.OrdinalIgnoreCase),
                          item =>
        {
            Assert.Equal("0", item.Key);
            Assert.Equal("foo[0]", item.Value);
        },
                          item =>
        {
            Assert.Equal("1", item.Key);
            Assert.Equal("foo[1]", item.Value);
        },
                          item =>
        {
            Assert.Equal("age", item.Key);
            Assert.Equal("foo.age", item.Value);
        });
    }
コード例 #2
0
    public void GetKeysFromPrefix_ReturnsUniqueTopLevelEntries_WhenPrefixIsEmpty()
    {
        // Arrange
        var keys      = new[] { "[0].name", "[0].address.street", "[item1].name", "[item1].age", "foo", "foo.bar" };
        var container = new PrefixContainer(keys);

        // Act
        var result = container.GetKeysFromPrefix(prefix: string.Empty);

        // Assert
        Assert.Collection(result.OrderBy(k => k.Key, StringComparer.OrdinalIgnoreCase),
                          item =>
        {
            Assert.Equal("0", item.Key);
            Assert.Equal("[0]", item.Value);
        },
                          item =>
        {
            Assert.Equal("foo", item.Key);
            Assert.Equal("foo", item.Value);
        },
                          item =>
        {
            Assert.Equal("item1", item.Key);
            Assert.Equal("[item1]", item.Value);
        });
    }
コード例 #3
0
        public virtual IDictionary <string, string> GetKeysFromPrefix(string prefix)
        {
            if (prefix == null)
            {
                throw Error.ArgumentNull("prefix");
            }

            return(PrefixContainer.GetKeysFromPrefix(prefix));
        }
コード例 #4
0
    public void GetKeysFromPrefix_ReturnsEmptyDictionaryWhenNoKeysStartWithPrefix()
    {
        // Arrange
        var keys      = new[] { "foo[0].name", "foo.age", "[1].name", "[item].age" };
        var container = new PrefixContainer(keys);

        // Act
        var result = container.GetKeysFromPrefix("baz");

        // Assert
        Assert.Empty(result);
    }
コード例 #5
0
    public void GetKeysFromPrefix_ReturnsEmptySequenceWhenContainerIsEmpty(string prefix)
    {
        // Arrange
        var keys      = new string[0];
        var container = new PrefixContainer(keys);

        // Act
        var result = container.GetKeysFromPrefix(prefix);

        // Assert
        Assert.Empty(result);
    }
コード例 #6
0
    public void GetKeysFromPrefix_ReturnsSubKeysThatStartWithPrefix_ForNestedSubKeys()
    {
        // Arrange
        var keys      = new[] { "person[0].address[0].street", "person[0].address[1].street", "person[0].address[1].zip" };
        var container = new PrefixContainer(keys);

        // Act
        var result = container.GetKeysFromPrefix("person[0].address");

        // Assert
        Assert.Collection(result.OrderBy(k => k.Key, StringComparer.OrdinalIgnoreCase),
                          item =>
        {
            Assert.Equal("0", item.Key);
            Assert.Equal("person[0].address[0]", item.Value);
        },
                          item =>
        {
            Assert.Equal("1", item.Key);
            Assert.Equal("person[0].address[1]", item.Value);
        });
    }
コード例 #7
0
        public void GetKeysFromPrefix_PrefixNotFound()
        {
            // Arrange
            var container = new PrefixContainer(new[] { "foo[bar]", "something[other]", "foo.baz", "foot[hello]", "fo[nothing]", "foo" });
            string prefix = "notfound";

            // Act
            IDictionary<string, string> result = container.GetKeysFromPrefix(prefix);

            // Assert
            Assert.Empty(result);
        }
コード例 #8
0
        public void GetKeysFromPrefix_AllValues()
        {
            // Arrange
            var container = new PrefixContainer(new[] { "foo[bar]baz", "something[other]", "foo.baz", "foot[hello]", "fo[nothing]", "foo" });
            string prefix = "";

            // Act
            IDictionary<string, string> result = container.GetKeysFromPrefix(prefix);

            // Assert
            Assert.Equal(4, result.Count());
            Assert.Equal("foo", result["foo"]);
            Assert.Equal("something", result["something"]);
            Assert.Equal("foot", result["foot"]);
            Assert.Equal("fo", result["fo"]);
        }
コード例 #9
0
        public void GetKeysFromPrefix_MixedDotsAndBrackets()
        {
            // Arrange
            var container = new PrefixContainer(new[] { "foo[bar]baz", "something[other]", "foo.baz", "foot[hello]", "fo[nothing]", "foo" });
            string prefix = "foo";

            // Act
            IDictionary<string, string> result = container.GetKeysFromPrefix(prefix);

            // Assert
            Assert.Equal(2, result.Count());
            Assert.True(result.ContainsKey("bar"));
            Assert.True(result.ContainsKey("baz"));
            Assert.Equal("foo[bar]", result["bar"]);
            Assert.Equal("foo.baz", result["baz"]);
        }
コード例 #10
0
        public void GetKeysFromPrefix_DotsNotation()
        {
            // Arrange
            var container = new PrefixContainer(new[] { "foo.bar.baz", "something.other", "foo.baz", "foot.hello", "fo.nothing", "foo" });
            string prefix = "foo";

            // Act
            IDictionary<string, string> result = container.GetKeysFromPrefix(prefix);

            // Assert
            Assert.Equal(2, result.Count());
            Assert.True(result.ContainsKey("bar"));
            Assert.True(result.ContainsKey("baz"));
            Assert.Equal("foo.bar", result["bar"]);
            Assert.Equal("foo.baz", result["baz"]);
        }