示例#1
0
        public void AddRemove_Success()
        {
            var skipList = new ConcurrentSkipListMap <Int32, Int32>();

            skipList.Add(3, 3);
            skipList.Add(1, 1);
            skipList.Add(10, 10);

            Assert.IsFalse(skipList.Remove(0));
            Assert.IsFalse(skipList.Remove(2));
            Assert.IsFalse(skipList.Remove(6));
            Assert.IsFalse(skipList.Remove(20));

            Assert.IsTrue(skipList.Remove(10));
            Assert.IsTrue(skipList.ContainsKey(1));
            Assert.IsTrue(skipList.ContainsKey(3));
            Assert.IsFalse(skipList.ContainsKey(10));
            Assert.AreEqual(2, skipList.Count);

            Assert.IsTrue(skipList.Remove(1));
            Assert.IsFalse(skipList.ContainsKey(1));
            Assert.IsTrue(skipList.ContainsKey(3));
            Assert.IsFalse(skipList.ContainsKey(10));
            Assert.AreEqual(1, skipList.Count);

            Assert.IsTrue(skipList.Remove(3));
            Assert.IsFalse(skipList.ContainsKey(1));
            Assert.IsFalse(skipList.ContainsKey(3));
            Assert.IsFalse(skipList.ContainsKey(10));
            Assert.AreEqual(0, skipList.Count);

            Assert.IsFalse(skipList.Remove(1));
        }
示例#2
0
        public void DuplicateKey_Exception()
        {
            var skipList = new ConcurrentSkipListMap <Int32, Int32>();

            skipList.Add(1, 1);

            Assert.ThrowsException <ArgumentException>(() =>
            {
                skipList.Add(1, 1);
            });
        }
示例#3
0
        public void Foreach_Success()
        {
            var skipList = new ConcurrentSkipListMap <Int32, Int32>();
            var items    = new[] { 1, 5, 10, 7, 100, 54, 23, 86 };

            foreach (var item in items)
            {
                skipList.Add(item, item + 1);
            }

            var sortedItems = items.ToList();

            sortedItems.Sort();

            var index = 0;

            foreach (var skipListItem in skipList)
            {
                Assert.AreEqual(sortedItems[index], skipListItem.Key);
                Assert.AreEqual(sortedItems[index] + 1, skipListItem.Value);
                index++;
            }

            index = 0;
            foreach (var skipListValue in skipList.Select(x => x.Value))
            {
                Assert.AreEqual(sortedItems[index] + 1, skipListValue);
                index++;
            }
        }
示例#4
0
        private void AddItems_0_to_1000(ConcurrentSkipListMap <Int32, Int32> skipList)
        {
            for (var i = 0; i < 1000; i += 3)
            {
                skipList.Add(i, i + 1);
            }

            for (var i = 1; i < 1000; i += 3)
            {
                skipList.Add(i, i + 1);
            }

            for (var i = 2; i < 1000; i += 3)
            {
                skipList.Add(i, i + 1);
            }
        }