예제 #1
0
        public void TestAddOrReplace()
        {
            var testBiDictionary = new CSharpMath.Structures.BiDictionary <int, string>();

            testBiDictionary.AddOrReplace(0, "Value1");
            Assert.Equal("Value1", testBiDictionary[0]);
            Assert.Equal(0, testBiDictionary["Value1"]);

            testBiDictionary.AddOrReplace(2, "Value10");
            Assert.Equal("Value10", testBiDictionary[2]);
            Assert.Equal(2, testBiDictionary["Value10"]);

            testBiDictionary.AddOrReplace(2, "Value2");
            Assert.Equal("Value2", testBiDictionary[2]);
            Assert.Equal(2, testBiDictionary["Value2"]);
            Assert.Equal(2, testBiDictionary.Firsts.Count);
            Assert.Equal(2, testBiDictionary.Seconds.Count);

            testBiDictionary.AddOrReplace(3, "Value3");
            Assert.Equal("Value3", testBiDictionary[3]);
            Assert.Equal(3, testBiDictionary["Value3"]);

            testBiDictionary.AddOrReplace(10, "Value3");
            Assert.Equal("Value3", testBiDictionary[10]);
            Assert.Equal(10, testBiDictionary["Value3"]);
            Assert.Equal(3, testBiDictionary.Firsts.Count);
            Assert.Equal(3, testBiDictionary.Seconds.Count);
        }
예제 #2
0
        public void TestRemove()
        {
            var testBiDictionary = new CSharpMath.Structures.BiDictionary <int, string> {
                { 0, "0" },
                { 1, "1" },
                { 2, "8" },
                { 3, "10" }
            };

            Assert.Equal(4, testBiDictionary.Firsts.Count);
            Assert.Equal(4, testBiDictionary.Seconds.Count);

            Assert.True(testBiDictionary.Remove(2, "8"));
            Assert.False(testBiDictionary.ContainsByFirst(2));
            Assert.False(testBiDictionary.ContainsBySecond("8"));
            Assert.Equal(3, testBiDictionary.Firsts.Count);
            Assert.Equal(3, testBiDictionary.Seconds.Count);

            // Remove with wrong first key
            Assert.False(testBiDictionary.Remove(4, "10"));
            Assert.False(testBiDictionary.ContainsByFirst(4));
            Assert.True(testBiDictionary.ContainsBySecond("10"));
            Assert.Equal(3, testBiDictionary.Firsts.Count);
            Assert.Equal(3, testBiDictionary.Seconds.Count);

            // Remove with wrong second key
            Assert.False(testBiDictionary.Remove(3, "15"));
            Assert.True(testBiDictionary.ContainsByFirst(3));
            Assert.False(testBiDictionary.ContainsBySecond("15"));
            Assert.Equal(3, testBiDictionary.Firsts.Count);
            Assert.Equal(3, testBiDictionary.Seconds.Count);

            // Remove when both exists but not corresponding to each other
            Assert.True(testBiDictionary.Remove(0, "1"));
            Assert.False(testBiDictionary.ContainsByFirst(0));
            Assert.False(testBiDictionary.ContainsBySecond("1"));
            Assert.Single(testBiDictionary.Firsts);
            Assert.Single(testBiDictionary.Seconds);
        }