public void CouldRandomlyAddRemoveValues()
        {
            var map   = new SortedChunkedMap <int, int>(50);
            var list  = new List <int>();
            var count = 100000;

            for (int i = 0; i < count; i++)
            {
                list.Add(i);
            }
            Shuffle(list);
            for (int i = 0; i < count; i++)
            {
                map.Add(list[i], list[i]);
                Assert.AreEqual(i + 1, map.Version);
            }

            Shuffle(list);

            for (int i = 0; i < count; i++)
            {
                Assert.True(map.Remove(list[i]));
                Assert.AreEqual(i + count + 1, map.Version);
            }
            Assert.True(map.IsEmpty);
        }
        public void CouldRemoveFirst() {
            var scm = new SortedChunkedMap<int, int>(50);
            for (int i = 0; i < 100; i++) {
                scm.Add(i, i);
            }

            scm.Remove(50);
            Assert.AreEqual(50, scm.outerMap.Last.Key);

            KeyValuePair<int, int> kvp;
            scm.RemoveFirst(out kvp);
            Assert.AreEqual(0, kvp.Value);
            Assert.AreEqual(1, scm.First.Value);
            Assert.AreEqual(0, scm.outerMap.First.Key);
        }
        public void CouldRemoveFirst()
        {
            var scm = new SortedChunkedMap <int, int>(50);

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

            scm.Remove(50);
            Assert.AreEqual(50, scm.outerMap.Last.Key);

            KeyValuePair <int, int> kvp;

            scm.RemoveFirst(out kvp);
            Assert.AreEqual(0, kvp.Value);
            Assert.AreEqual(1, scm.First.Value);
            Assert.AreEqual(0, scm.outerMap.First.Key);
        }