public void TestRemove()
        {
            object objA = new object();
            object objB = new object();
            object objC = new object();

            var dictionary = new SortedNameValueDictionary <object>();

            dictionary.Add("A", objA);
            dictionary.Add("B", objB);
            dictionary.Add("C", objC);

            dictionary.Count.Should().Be(3);

            dictionary.Remove("X").Should().BeFalse();
            dictionary.Remove("B").Should().BeTrue();
            dictionary.Count.Should().Be(2);
            dictionary.Keys.Count.Should().Be(2);
            dictionary.Values.Count.Should().Be(2);
            dictionary.ContainsKey("B").Should().BeFalse();

            dictionary.Remove("A").Should().BeTrue();
            dictionary.Remove("A").Should().BeFalse();
            dictionary.Count.Should().Be(1);
            dictionary.Keys.Count.Should().Be(1);
            dictionary.Values.Count.Should().Be(1);
            dictionary.ContainsKey("A").Should().BeFalse();

            dictionary.Clear();
            dictionary.Count.Should().Be(0);
            dictionary.Keys.Count.Should().Be(0);
            dictionary.Values.Count.Should().Be(0);
            dictionary.ContainsKey("C").Should().BeFalse();
        }
        public void TestAdd()
        {
            var dictionary = new SortedNameValueDictionary <object>();

            object objZ = new object();

            dictionary.Add("Z", objZ);
            dictionary.Count.Should().Be(1);
            dictionary.ToList().Count.Should().Be(1);
            dictionary.Keys.Count.Should().Be(1);
            dictionary.Values.Count.Should().Be(1);
            dictionary["Z"].Should().Be(objZ);

            object objA = new object();

            dictionary.Add("A", objA);
            dictionary.Count.Should().Be(2);
            dictionary.ToList().Count.Should().Be(2);
            dictionary.Keys.Count.Should().Be(2);
            dictionary.Values.Count.Should().Be(2);
            dictionary["A"].Should().Be(objA);

            var keyList = dictionary.Keys.ToList();

            keyList[0].Should().Be("A");
            keyList[1].Should().Be("Z");

            var valueList = dictionary.Values.ToList();

            valueList[0].Should().Be(objA);
            valueList[1].Should().Be(objZ);

            dictionary.ContainsKey("A").Should().BeTrue();
            dictionary.ContainsKey("Z").Should().BeTrue();
            dictionary.ContainsKey("B").Should().BeFalse();

            dictionary.Contains(new KeyValuePair <string, object>("A", objA)).Should().BeTrue();
            dictionary.Contains(new KeyValuePair <string, object>("Z", objZ)).Should().BeTrue();
            dictionary.Contains(new KeyValuePair <string, object>("B", objA)).Should().BeFalse();
            dictionary.Contains(new KeyValuePair <string, object>("A", objZ)).Should().BeFalse();

            object value = null;

            dictionary.TryGetValue("A", out value).Should().BeTrue();
            value.Should().Be(objA);

            dictionary.TryGetValue("B", out value).Should().BeFalse();

            // Value should be default(TValue) per reference source.
            value.Should().Be(default(object));
        }
        public void TestGetKeysGreaterThan()
        {
            object objA = new object();
            object objB = new object();
            object objC = new object();

            var dictionary = new SortedNameValueDictionary <object>();

            dictionary.Add("A", objA);
            dictionary.Add("B", objB);
            dictionary.Add("C", objC);

            dictionary.Count.Should().Be(3);

            dictionary.GetKeysGreaterThan(null).Count().Should().Be(3);
            dictionary.GetKeysGreaterThan(string.Empty).Count().Should().Be(3);

            dictionary.GetKeysGreaterThan("A").Count().Should().Be(2);
            dictionary.GetKeysGreaterThan("B").Count().Should().Be(1);
            dictionary.GetKeysGreaterThan("C").Count().Should().Be(0);
        }