示例#1
0
        public void ConsecutiveRemovesWithGrow()
        {
            var dict = new FastDictionary <int, int>(4);

            for (int i = 0; i < 100; i++)
            {
                dict[i] = i;
            }

            for (int i = 0; i < 100; i += 2)
            {
                Assert.True(dict.Remove(i));
            }

            for (int i = 0; i < 100; i++)
            {
                if (i % 2 == 0)
                {
                    Assert.False(dict.Contains(i));
                }
                else
                {
                    Assert.True(dict.Contains(i));
                }
            }

            Assert.Equal(50, dict.Count);
            Assert.Equal(256, dict.Capacity);
        }
示例#2
0
        public void InsertionAfterClear()
        {
            var dict = new FastDictionary <int, int>(200);

            for (int i = 0; i < 100; i++)
            {
                dict[i] = i;
            }

            dict.Clear();

            Assert.Equal(0, dict.Count);
            Assert.Equal(256, dict.Capacity);

            for (int i = 0; i < 100; i += 10)
            {
                dict[i] = i;
            }


            for (int i = 0; i < 100; i++)
            {
                if (i % 10 == 0)
                {
                    Assert.True(dict.Contains(i));
                }
                else
                {
                    Assert.False(dict.Contains(i));
                }
            }
        }
示例#3
0
        public void AddDeleted()
        {
            var dict = new FastDictionary <int, int>(16);

            dict.Add(1, 1);
            dict.Add(2, 2);
            dict.Remove(1);
            dict.Add(17, 17);

            Assert.False(dict.Contains(1));
            Assert.True(dict.Contains(2));
            Assert.True(dict.Contains(17));

            Assert.Equal(2, dict.Count);
            Assert.Equal(16, dict.Capacity);
        }
示例#4
0
        public void ConsecutiveInsertionsWithoutGrow()
        {
            var dict = new FastDictionary <int, int>(200);

            for (int i = 0; i < 100; i++)
            {
                dict.Add(i, i);
            }

            for (int i = 0; i < 100; i++)
            {
                Assert.True(dict.Contains(i));
                Assert.Equal(i, dict[i]);
            }

            int count = 0;

            foreach (var item in dict)
            {
                Assert.Equal(item.Key, item.Value);
                count++;
            }
            Assert.Equal(100, count);

            Assert.Equal(100, dict.Count);
            Assert.Equal(256, dict.Capacity);
        }
示例#5
0
        public void UseOfOfBoundsHashes()
        {
            var dict = new FastDictionary <int, int>(16, new ForceOutOfRangeHashesEqualityComparer());

            dict[1] = 1;
            dict[2] = 2;

            Assert.Equal(1, dict[1]);
            Assert.Equal(2, dict[2]);

            dict.Remove(1);
            Assert.False(dict.Contains(1));
            Assert.True(dict.Contains(2));

            dict.Remove(2);
            Assert.False(dict.Contains(1));
            Assert.False(dict.Contains(2));
        }
示例#6
0
        public void InsertDeleted()
        {
            var dict = new FastDictionary <int, int>(16);

            dict[1] = 1;
            dict[2] = 2;

            dict.Remove(1);

            dict[17] = 17;

            Assert.False(dict.Contains(1));
            Assert.True(dict.Contains(2));
            Assert.True(dict.Contains(17));

            Assert.Equal(2, dict.Count);
            Assert.Equal(16, dict.Capacity);
        }
示例#7
0
        public void ConsecutiveInsertionsAndGrow()
        {
            var dict = new FastDictionary <int, int>(4);

            for (int i = 0; i < 100; i++)
            {
                dict.Add(i, i);
            }

            for (int i = 0; i < 100; i++)
            {
                Assert.True(dict.Contains(i));
                Assert.Equal(i, dict[i]);
            }

            Assert.Equal(100, dict.Count);
            Assert.Equal(256, dict.Capacity);
        }
示例#8
0
        public void Clear()
        {
            var dict = new FastDictionary <int, int>(200);

            for (int i = 0; i < 100; i++)
            {
                dict[i] = i;
            }

            dict.Clear();

            Assert.Equal(0, dict.Count);
            Assert.Equal(256, dict.Capacity);

            for (int i = 0; i < 100; i++)
            {
                Assert.False(dict.Contains(i));
            }
        }