public void Test_RangeSet_Insert_Partially_Overlapping()
        {
            var cola = new ColaRangeSet <int>();

            Assert.That(cola.Count, Is.EqualTo(0));

            cola.Mark(0, 1);
            cola.Debug_Dump();
            Assert.That(cola.Count, Is.EqualTo(1));

            cola.Mark(0, 2);
            cola.Debug_Dump();
            Assert.That(cola.Count, Is.EqualTo(1));

            cola.Mark(1, 3);
            cola.Debug_Dump();
            Assert.That(cola.Count, Is.EqualTo(1));

            cola.Mark(-1, 2);
            cola.Debug_Dump();
            Assert.That(cola.Count, Is.EqualTo(1));

            Console.WriteLine("Result = { " + String.Join(", ", cola) + " }");
            Console.WriteLine("Bounds = " + cola.Bounds);
        }
        public void Test_RangeSet_Insert_That_Join_Two_Ranges()
        {
            var cola = new ColaRangeSet <int>();

            cola.Mark(0, 1);
            cola.Mark(2, 3);
            cola.Debug_Dump();
            Assert.That(cola.Count, Is.EqualTo(2));

            cola.Mark(1, 2);
            cola.Debug_Dump();
            Assert.That(cola.Count, Is.EqualTo(1));

            Console.WriteLine("Result = { " + String.Join(", ", cola) + " }");
            Console.WriteLine("Bounds = " + cola.Bounds);
        }
		public void Test_RangeSet_Insert_Completly_Overlapping()
		{
			var cola = new ColaRangeSet<int>();
			cola.Mark(1, 2);
			cola.Mark(4, 5);
			cola.Debug_Dump();
			Assert.That(cola.Count, Is.EqualTo(2));
			Assert.That(cola.Bounds.Begin, Is.EqualTo(1));
			Assert.That(cola.Bounds.End, Is.EqualTo(5));

			// overlaps the first range completely
			cola.Mark(0, 3);
			cola.Debug_Dump();
			Assert.That(cola.Count, Is.EqualTo(2));
			Assert.That(cola.Bounds.Begin, Is.EqualTo(0));
			Assert.That(cola.Bounds.End, Is.EqualTo(5));

			Console.WriteLine("Result = { " + String.Join(", ", cola) + " }");
			Console.WriteLine("Bounds = " + cola.Bounds);

		}
        public void Test_RangeSet_Insert_Completly_Overlapping()
        {
            var cola = new ColaRangeSet <int>();

            cola.Mark(1, 2);
            cola.Mark(4, 5);
            cola.Debug_Dump();
            Assert.That(cola.Count, Is.EqualTo(2));
            Assert.That(cola.Bounds.Begin, Is.EqualTo(1));
            Assert.That(cola.Bounds.End, Is.EqualTo(5));

            // overlaps the first range completely
            cola.Mark(0, 3);
            cola.Debug_Dump();
            Assert.That(cola.Count, Is.EqualTo(2));
            Assert.That(cola.Bounds.Begin, Is.EqualTo(0));
            Assert.That(cola.Bounds.End, Is.EqualTo(5));

            Console.WriteLine("Result = { " + String.Join(", ", cola) + " }");
            Console.WriteLine("Bounds = " + cola.Bounds);
        }
        public void Test_RangeSet_Insert_That_Replace_All_Ranges()
        {
            var cola = new ColaRangeSet <int>();

            cola.Mark(0, 1);
            cola.Mark(2, 3);
            cola.Mark(4, 5);
            cola.Mark(6, 7);
            cola.Debug_Dump();
            Assert.That(cola.Count, Is.EqualTo(4));
            Assert.That(cola.Bounds.Begin, Is.EqualTo(0));
            Assert.That(cola.Bounds.End, Is.EqualTo(7));

            cola.Mark(-1, 10);
            cola.Debug_Dump();
            Assert.That(cola.Count, Is.EqualTo(1));
            Assert.That(cola.Bounds.Begin, Is.EqualTo(-1));
            Assert.That(cola.Bounds.End, Is.EqualTo(10));

            Console.WriteLine("Result = { " + String.Join(", ", cola) + " }");
            Console.WriteLine("Bounds = " + cola.Bounds);
        }
		public void Test_RangeSet_Insert_Non_Overlapping()
		{
			var cola = new ColaRangeSet<int>();
			Assert.That(cola.Count, Is.EqualTo(0));

			cola.Mark(0, 1);
			cola.Debug_Dump();
			Assert.That(cola.Count, Is.EqualTo(1));

			cola.Mark(2, 3);
			cola.Debug_Dump();
			Assert.That(cola.Count, Is.EqualTo(2));

			cola.Mark(4, 5);
			cola.Debug_Dump();
			Assert.That(cola.Count, Is.EqualTo(3));

			Assert.That(cola.Bounds.Begin, Is.EqualTo(0));
			Assert.That(cola.Bounds.End, Is.EqualTo(5));

			Console.WriteLine("Result = { " + String.Join(", ", cola) + " }");
			Console.WriteLine("Bounds = " + cola.Bounds);
		}
		public void Test_RangeSet_Insert_Partially_Overlapping()
		{
			var cola = new ColaRangeSet<int>();
			Assert.That(cola.Count, Is.EqualTo(0));

			cola.Mark(0, 1);
			cola.Debug_Dump();
			Assert.That(cola.Count, Is.EqualTo(1));

			cola.Mark(0, 2);
			cola.Debug_Dump();
			Assert.That(cola.Count, Is.EqualTo(1));

			cola.Mark(1, 3);
			cola.Debug_Dump();
			Assert.That(cola.Count, Is.EqualTo(1));

			cola.Mark(-1, 2);
			cola.Debug_Dump();
			Assert.That(cola.Count, Is.EqualTo(1));

			Console.WriteLine("Result = { " + String.Join(", ", cola) + " }");
			Console.WriteLine("Bounds = " + cola.Bounds);
		}
        public void Test_RangeSet_Insert_Non_Overlapping()
        {
            var cola = new ColaRangeSet <int>();

            Assert.That(cola.Count, Is.EqualTo(0));

            cola.Mark(0, 1);
            cola.Debug_Dump();
            Assert.That(cola.Count, Is.EqualTo(1));

            cola.Mark(2, 3);
            cola.Debug_Dump();
            Assert.That(cola.Count, Is.EqualTo(2));

            cola.Mark(4, 5);
            cola.Debug_Dump();
            Assert.That(cola.Count, Is.EqualTo(3));

            Assert.That(cola.Bounds.Begin, Is.EqualTo(0));
            Assert.That(cola.Bounds.End, Is.EqualTo(5));

            Console.WriteLine("Result = { " + String.Join(", ", cola) + " }");
            Console.WriteLine("Bounds = " + cola.Bounds);
        }
Exemplo n.º 9
0
        /// <summary>Adds a range to teh clear list of this transaction</summary>
        /// <remarks>Must be called with m_lock taken</remarks>
        private void AddClearCommand_NeedsLocking(FdbKeyRange range)
        {
            // merge the cleared range with the others
            m_clears.Mark(range.Begin, range.End);

            // remove all writes that where in this range
            var keys = m_writes.FindBetween(range.Begin, true, range.End, false).ToList();

            if (keys.Count > 0)
            {
                foreach (var key in keys)
                {
                    m_writes.Remove(key);
                }
            }
        }
        public void Test_RangeSet_Insert_Backwards()
        {
            const int N = 100;

            var cola = new ColaRangeSet <int>();

            for (int i = N; i > 0; i--)
            {
                int x = i << 1;
                cola.Mark(x - 1, x);
            }

            Assert.That(cola.Count, Is.EqualTo(N));

            Console.WriteLine("Result = { " + String.Join(", ", cola) + " }");
            Console.WriteLine("Bounds = " + cola.Bounds);
        }
Exemplo n.º 11
0
 /// <summary>Adds a range to the read conflict list</summary>
 /// <remarks>Must be called with m_lock taken</remarks>
 private void AddReadConflict_NeedsLocking(FdbKeyRange range)
 {
     m_readConflicts.Mark(range.Begin, range.End);
 }
Exemplo n.º 12
0
 /// <summary>Adds a range to the write conflict list</summary>
 /// <remarks>Must be called with m_lock taken</remarks>
 private void AddWriteConflict_NeedsLocking(FdbKeyRange range)
 {
     m_writeConflicts.Mark(range.Begin, range.End);
 }
		public void Test_RangeSet_Insert_Backwards()
		{
			const int N = 100;

			var cola = new ColaRangeSet<int>();

			for(int i = N; i > 0; i--)
			{
				int x = i << 1;
				cola.Mark(x - 1, x);
			}

			Assert.That(cola.Count, Is.EqualTo(N));

			Console.WriteLine("Result = { " + String.Join(", ", cola) + " }");
			Console.WriteLine("Bounds = " + cola.Bounds);
		}
		public void Test_RangeSet_Insert_That_Replace_All_Ranges()
		{
			var cola = new ColaRangeSet<int>();
			cola.Mark(0, 1);
			cola.Mark(2, 3);
			cola.Mark(4, 5);
			cola.Mark(6, 7);
			cola.Debug_Dump();
			Assert.That(cola.Count, Is.EqualTo(4));
			Assert.That(cola.Bounds.Begin, Is.EqualTo(0));
			Assert.That(cola.Bounds.End, Is.EqualTo(7));

			cola.Mark(-1, 10);
			cola.Debug_Dump();
			Assert.That(cola.Count, Is.EqualTo(1));
			Assert.That(cola.Bounds.Begin, Is.EqualTo(-1));
			Assert.That(cola.Bounds.End, Is.EqualTo(10));

			Console.WriteLine("Result = { " + String.Join(", ", cola) + " }");
			Console.WriteLine("Bounds = " + cola.Bounds);
		}
		public void Test_RangeSet_Insert_That_Join_Two_Ranges()
		{
			var cola = new ColaRangeSet<int>();
			cola.Mark(0, 1);
			cola.Mark(2, 3);
			cola.Debug_Dump();
			Assert.That(cola.Count, Is.EqualTo(2));

			cola.Mark(1, 2);
			cola.Debug_Dump();
			Assert.That(cola.Count, Is.EqualTo(1));

			Console.WriteLine("Result = { " + String.Join(", ", cola) + " }");
			Console.WriteLine("Bounds = " + cola.Bounds);
		}