예제 #1
0
        public void NTreeDeletesManyUnique()
        {
            var objs = TestResourceFactory.GetMockClassAObjects(50).ToList();

            var seedIndex = new Seed32();
            var seedSegment = new Seed64();

            objs.ForEach(o => o.Id = seedIndex.Increment());

            using (var tree = new NTree<int, MockClassA, long>("Id", true))
            {
                foreach (var o in objs)
                    tree.AddOrUpdate(new Tuple<MockClassA, long>(o, seedSegment.Increment()));

                Assert.AreEqual(50, tree.Length);

                Assert.AreEqual(5, tree.GetFirstByIndex(5));
                Assert.AreEqual(5, tree.GetFirstBySegment(5));
                Assert.AreEqual(1, tree.GetByIndex(5).Count());

                tree.DeleteMany(new int[] { 1, 2, 3, 4, 5, 48, 49 });

                Assert.AreEqual(50, tree.Length);

                Assert.AreEqual(0, tree.GetFirstByIndex(1));
                Assert.AreEqual(0, tree.GetFirstByIndex(2));
                Assert.AreEqual(0, tree.GetFirstByIndex(3));
                Assert.AreEqual(0, tree.GetFirstByIndex(4));
                Assert.AreEqual(0, tree.GetFirstByIndex(5));
                Assert.AreEqual(0, tree.GetFirstByIndex(48));
                Assert.AreEqual(0, tree.GetFirstByIndex(49));
            }
        }
예제 #2
0
        public void NTreeDeletesManyEntities()
        {
            var objs = TestResourceFactory.GetMockClassAObjects(50).ToList();

            var seedIndex = new Seed32();
            var seedSegment = new Seed64();

            objs.ForEach(o => o.Id = seedIndex.Increment());

            using (var tree = new NTree<int, MockClassA, long>("Id", true))
            {
                foreach (var o in objs)
                    tree.AddOrUpdate(new Tuple<MockClassA, long>(o, seedSegment.Increment()));

                Assert.AreEqual(50, tree.Length);

                Assert.AreEqual(5, tree.GetFirstByIndex(5));
                Assert.AreEqual(5, tree.GetFirstBySegment(5));
                Assert.AreEqual(1, tree.GetByIndex(5).Count());

                tree.DeleteMany(objs.Take(15));

                Assert.AreEqual(50, tree.Length);

                foreach (var o in objs.Take(15))
                    Assert.AreEqual(0, tree.GetFirstByIndex(o.Id));

                Assert.AreEqual(0, tree.DeleteMany(new List<MockClassA>() { null }).Length);
            }
        }