コード例 #1
0
        public virtual void TestUnionWithEmptyDoesNotCreateNewRange()
        {
            IBTreeRange range = Range(3, 4);
            IBTreeRange empty = Range(0, 0);

            Assert.AreSame(range, range.Union(empty));
            Assert.AreSame(range, empty.Union(range));
            IBTreeRange union = range.Union(Range(8, 9));

            Assert.AreSame(union, union.Union(empty));
            Assert.AreSame(union, empty.Union(union));
        }
コード例 #2
0
        public virtual void TestUnionsOfUnions()
        {
            IBTreeRange union1 = Range(3, 4).Union(Range(8, 9));

            BTreeAssert.AssertRange(new int[] { 3, 4, 9 }, union1);
            BTreeAssert.AssertRange(new int[] { 3, 4, 7, 9 }, union1.Union(Range(7, 7)));
            IBTreeRange union2 = Range(3, 3).Union(Range(7, 7));

            AssertUnion(new int[] { 3, 4, 7, 9 }, union1, union2);
            AssertIsRangeSingle(union1.Union(union2));
            AssertIsRangeSingle(union2.Union(union1));
            IBTreeRange union3 = Range(3, 3).Union(Range(9, 9));

            AssertUnion(new int[] { 3, 7, 9 }, union2, union3);
        }
コード例 #3
0
ファイル: IndexedLeaf.cs プロジェクト: git-thinh/limada
        private IBTreeRange Search()
        {
            IBTreeRange range  = Search(Constraint().GetObject());
            QEBitmap    bitmap = QEBitmap.ForQE(Constraint().Evaluator());

            if (bitmap.TakeGreater())
            {
                if (bitmap.TakeEqual())
                {
                    return(range.ExtendToLast());
                }
                IBTreeRange greater = range.Greater();
                if (bitmap.TakeSmaller())
                {
                    return(greater.Union(range.Smaller()));
                }
                return(greater);
            }
            if (bitmap.TakeSmaller())
            {
                if (bitmap.TakeEqual())
                {
                    return(range.ExtendToFirst());
                }
                return(range.Smaller());
            }
            return(range);
        }
コード例 #4
0
        public static IBTreeRange Union(BTreeRangeUnion union1, BTreeRangeUnion union2)
        {
            IEnumerator ranges = union1.Ranges();
            IBTreeRange merged = union2;

            while (ranges.MoveNext())
            {
                merged = merged.Union((IBTreeRange)ranges.Current);
            }
            return(merged);
        }
コード例 #5
0
 private void AssertUnion(int[] expectedKeys, IBTreeRange range1, IBTreeRange range2
                          )
 {
     BTreeAssert.AssertRange(expectedKeys, range1.Union(range2));
     BTreeAssert.AssertRange(expectedKeys, range2.Union(range1));
 }
コード例 #6
0
ファイル: BTreeRangeTestCase.cs プロジェクト: Galigator/db4o
		private void AssertUnion(int[] expectedKeys, IBTreeRange range1, IBTreeRange range2
			)
		{
			BTreeAssert.AssertRange(expectedKeys, range1.Union(range2));
			BTreeAssert.AssertRange(expectedKeys, range2.Union(range1));
		}