Esempio n. 1
0
        public void ClearInverse()
        {
            var lookup = new BidirectionalLookup <string, string>();

            lookup.Add("foo", "bar");
            lookup.Clear();

            Assert.AreEqual(0, lookup.Count);
            Assert.AreEqual(0, lookup.Inverse.Count);
            Assert.IsFalse(lookup.Contains("foo"));
            CollectionAssert.IsEmpty(lookup["foo"]);
            CollectionAssert.IsEmpty(lookup.Inverse["bar"]);
        }
        public void TestBidirectionalLookup()
        {
            var lookup1 = new BidirectionalLookup <int, double>();

            lookup1.Add(4, 2);
            Assert.IsTrue(lookup1.ContainsFirst(4) && lookup1.ContainsSecond(2));
            lookup1.Add(4, 3);
            Assert.IsTrue(lookup1.GetByFirst(4).Count() == 2);
            Assert.IsTrue(lookup1.GetBySecond(2).Contains(4));
            Assert.IsTrue(lookup1.CountFirst == 1);
            Assert.IsTrue(lookup1.CountSecond == 2);
            lookup1.Add(3, 2);
            lookup1.Add(2, 2);
            lookup1.Add(1, 2);
            Assert.IsTrue(lookup1.GetByFirst(1).Single() == 2);
            Assert.IsTrue(lookup1.GetBySecond(2).Count() == 4);
            lookup1.RemovePair(2, 2);
            Assert.IsTrue(!lookup1.ContainsFirst(2));
            Assert.IsTrue(lookup1.GetBySecond(2).Count() == 3);
            lookup1.RemoveByFirst(4);
            Assert.IsTrue(lookup1.CountFirst == 2);
            Assert.IsTrue(lookup1.CountSecond == 1);
            lookup1.RemoveBySecond(2);
            Assert.IsTrue(lookup1.CountFirst == 0);
            Assert.IsTrue(lookup1.CountSecond == 0);
            lookup1.Clear();
            Assert.IsTrue(lookup1.CountFirst == 0);
            Assert.IsTrue(lookup1.CountSecond == 0);

            var dict2 = new BidirectionalLookup <ComplexType, int>(new ComplexTypeEqualityComparer());

            Assert.IsTrue(!dict2.FirstEnumerable.Any());
            dict2.Add(new ComplexType(1), 2);
            Assert.IsTrue(dict2.SecondEnumerable.Any());
            dict2.Add(new ComplexType(2), 1);
            Assert.IsTrue(dict2.ContainsFirst(new ComplexType(2)));
            Assert.IsTrue(dict2.ContainsSecond(2));
            dict2.Add(new ComplexType(2), 3);
            Assert.IsTrue(dict2.GetByFirst(new ComplexType(2)).Count() == 2);
            Assert.IsTrue(dict2.GetByFirst(new ComplexType(2)).Contains(1));
            Assert.IsTrue(dict2.GetByFirst(new ComplexType(2)).Contains(3));
            dict2.Add(new ComplexType(3), 1);
            Assert.IsTrue(dict2.GetBySecond(1).Count() == 2);
            Assert.IsTrue(dict2.GetBySecond(1).Any(x => x.Field == 2));
            Assert.IsTrue(dict2.GetBySecond(1).Any(x => x.Field == 3));
            Assert.IsTrue(dict2.CountFirst == 3);
            Assert.IsTrue(dict2.CountSecond == 3);
            dict2.Add(new ComplexType(2), 2);
            Assert.IsTrue(dict2.CountFirst == 3);
            Assert.IsTrue(dict2.CountSecond == 3);
            dict2.Add(new ComplexType(2), 4);
            Assert.IsTrue(dict2.CountFirst == 3);
            Assert.IsTrue(dict2.CountSecond == 4);
            dict2.RemoveByFirst(new ComplexType(2));
            Assert.IsTrue(dict2.CountFirst == 2);
            Assert.IsTrue(dict2.CountSecond == 2);
            dict2.RemovePair(new ComplexType(1), 1);
            Assert.IsTrue(dict2.CountFirst == 2);
            Assert.IsTrue(dict2.CountSecond == 2);
            dict2.RemovePair(new ComplexType(1), 2);
            Assert.IsTrue(dict2.CountFirst == 1);
            Assert.IsTrue(dict2.CountSecond == 1);
            dict2.Clear();
            Assert.IsTrue(!dict2.SecondEnumerable.Any());
        }