Пример #1
0
        public void Ctor()
        {
            var range = new Int64VirtualRange(1, 120, 1);

            Assert.Equal(range.From, 1);
            Assert.Equal(range.To, 120);
            Assert.Equal(range.Count, (UInt64)120);
            Assert.Equal(range.Offset, 1);

            range = new Int64VirtualRange(1, 121, 2);
            Assert.Equal(range.From, 1);
            Assert.Equal(range.To, 121);
            Assert.Equal(range.Count, (UInt64)61);
            Assert.Equal(range.Offset, 2);

            range = new Int64VirtualRange(1, (UInt64)100, 2);
            Assert.Equal(range.From, 1);
            Assert.Equal(range.To, 199);
            Assert.Equal(range.Count, (UInt64)100);
            Assert.Equal(range.Offset, 2);

            range = new Int64VirtualRange(1, 301, 151, 2);
            Assert.Equal(range.From, 1);
            Assert.Equal(range.To, 301);
            Assert.Equal(range.Count, (UInt64)151);
            Assert.Equal(range.Offset, 2);
        }
Пример #2
0
        public void IntersectWith()
        {
            var range1 = new Int64VirtualRange(1, 100, 1);
            var range2 = new Int64VirtualRange(101, 150, 1);
            var ranges = range1.IntersectWith(range2);

            Assert.Equal(ranges.Count, 0);

            range1 = new Int64VirtualRange(1, 100, 1);
            range2 = new Int64VirtualRange(1, 50, 1);
            ranges = range1.IntersectWith(range2);
            Assert.Equal(ranges.Count, 1);
            for (int i = 0; i < ranges.Count; i++)
            {
                var range = ranges[i];
                Assert.Equal(range.From, 1);
                Assert.Equal(range.To, 50);
                Assert.Equal(range.Count, (UInt64)50);
                Assert.Equal(range.Offset, 1);
            }

            range1 = new Int64VirtualRange(1, 100, 1);
            range2 = new Int64VirtualRange(100, 150, 1);
            ranges = range1.IntersectWith(range2);
            Assert.Equal(ranges.Count, 1);
            for (int i = 0; i < ranges.Count; i++)
            {
                var range = ranges[i];
                Assert.Equal(range.From, 100);
                Assert.Equal(range.To, 100);
                Assert.Equal(range.Count, (UInt64)1);
                Assert.Equal(range.Offset, 1);
            }
        }
Пример #3
0
        public void Contains()
        {
            var range1 = new Int64VirtualRange(1, 100, 1);
            var range2 = new Int64VirtualRange(101, 200, 1);

            Assert.False(range1.Contains(range2));

            range1 = new Int64VirtualRange(1, 100, 1);
            range2 = new Int64VirtualRange(1, 100, 1);
            Assert.True(range1.Contains(range2));

            range1 = new Int64VirtualRange(1, 100, 1);
            range2 = new Int64VirtualRange(50, 200, 1);
            Assert.False(range1.Contains(range2));

            range1 = new Int64VirtualRange(1, 100, 1);
            range2 = new Int64VirtualRange(25, 50, 1);
            Assert.True(range1.Contains(range2));
        }
        public void CopyTo()
        {
            var set = new Int64VirtualRangeSet();

            set.Add(new Int64VirtualRange(1, 10, 1));
            set.Add(new Int64VirtualRange(20, 40, 1));
            set.Add(new Int64VirtualRange(50, 60, 1));
            var ranges = new Int64VirtualRange[3];

            set.CopyTo(ranges, 0);
            Assert.Equal(ranges.Length, 3);
            for (int i = 0; i < ranges.Length; i++)
            {
                var range = ranges[i];
                switch (i)
                {
                case 0:
                    Assert.Equal(range.From, 1);
                    Assert.Equal(range.To, 10);
                    Assert.Equal(range.Count, (UInt64)10);
                    Assert.Equal(range.Offset, 1);
                    break;

                case 1:
                    Assert.Equal(range.From, 20);
                    Assert.Equal(range.To, 40);
                    Assert.Equal(range.Count, (UInt64)21);
                    Assert.Equal(range.Offset, 1);
                    break;

                default:
                    Assert.Equal(range.From, 50);
                    Assert.Equal(range.To, 60);
                    Assert.Equal(range.Count, (UInt64)11);
                    Assert.Equal(range.Offset, 1);
                    break;
                }
            }
        }
Пример #5
0
        public void Overlaps()
        {
            var range1 = new Int64VirtualRange(1, 100, 1);
            var range2 = new Int64VirtualRange(101, 200, 1);

            Assert.False(range1.Overlaps(range2));

            range1 = new Int64VirtualRange(5, 100, 1);
            range2 = new Int64VirtualRange(1, 200, 1);
            Assert.True(range1.Overlaps(range2));

            range1 = new Int64VirtualRange(1, 100, 1);
            range2 = new Int64VirtualRange(100, 200, 1);
            Assert.True(range1.Overlaps(range2));

            range1 = new Int64VirtualRange(50, 100, 1);
            range2 = new Int64VirtualRange(1, 50, 1);
            Assert.True(range1.Overlaps(range2));

            range1 = new Int64VirtualRange(1, 100, 1);
            range2 = new Int64VirtualRange(25, 50, 1);
            Assert.True(range1.Overlaps(range2));
        }
Пример #6
0
        public void UnionWith()
        {
            var range1 = new Int64VirtualRange(1, 100, 1);
            var range2 = new Int64VirtualRange(101, 200, 1);
            var ranges = range1.UnionWith(range2);

            Assert.Equal(ranges.Count, 1);
            for (int i = 0; i < ranges.Count; i++)
            {
                var range = ranges[i];
                Assert.Equal(range.From, 1);
                Assert.Equal(range.To, 200);
                Assert.Equal(range.Count, (UInt64)200);
                Assert.Equal(range.Offset, 1);
            }

            range1 = new Int64VirtualRange(1, 100, 1);
            range2 = new Int64VirtualRange(100, 200, 1);
            ranges = range1.UnionWith(range2);
            Assert.Equal(ranges.Count, 1);
            for (int i = 0; i < ranges.Count; i++)
            {
                var range = ranges[i];
                Assert.Equal(range.From, 1);
                Assert.Equal(range.To, 200);
                Assert.Equal(range.Count, (UInt64)200);
                Assert.Equal(range.Offset, 1);
            }

            range1 = new Int64VirtualRange(1, 100, 1);
            range2 = new Int64VirtualRange(100, 200, 1);
            ranges = range2.UnionWith(range1);
            Assert.Equal(ranges.Count, 1);
            for (int i = 0; i < ranges.Count; i++)
            {
                var range = ranges[i];
                Assert.Equal(range.From, 1);
                Assert.Equal(range.To, 200);
                Assert.Equal(range.Count, (UInt64)200);
                Assert.Equal(range.Offset, 1);
            }

            range1 = new Int64VirtualRange(1, 100, 1);
            range2 = new Int64VirtualRange(30, 40, 1);
            ranges = range2.UnionWith(range1);
            Assert.Equal(ranges.Count, 1);
            for (int i = 0; i < ranges.Count; i++)
            {
                var range = ranges[i];
                Assert.Equal(range.From, 1);
                Assert.Equal(range.To, 100);
                Assert.Equal(range.Count, (UInt64)100);
                Assert.Equal(range.Offset, 1);
            }

            range1 = new Int64VirtualRange(1, 100, 1);
            range2 = new Int64VirtualRange(102, 200, 1);
            ranges = range1.UnionWith(range2);
            Assert.Equal(ranges.Count, 2);
            for (int i = 0; i < ranges.Count; i++)
            {
                var range = ranges[i];
                switch (i)
                {
                case 0:
                    Assert.Equal(range.From, 1);
                    Assert.Equal(range.To, 100);
                    Assert.Equal(range.Count, (UInt64)100);
                    Assert.Equal(range.Offset, 1);
                    break;

                default:
                    Assert.Equal(range.From, 102);
                    Assert.Equal(range.To, 200);
                    Assert.Equal(range.Count, (UInt64)99);
                    Assert.Equal(range.Offset, 1);
                    break;
                }
            }

            range1 = new Int64VirtualRange(1, 100, 1);
            range2 = new Int64VirtualRange(102, 200, 1);
            ranges = range2.UnionWith(range1);
            Assert.Equal(ranges.Count, 2);
            for (int i = 0; i < ranges.Count; i++)
            {
                var range = ranges[i];
                switch (i)
                {
                case 0:
                    Assert.Equal(range.From, 1);
                    Assert.Equal(range.To, 100);
                    Assert.Equal(range.Count, (UInt64)100);
                    Assert.Equal(range.Offset, 1);
                    break;

                default:
                    Assert.Equal(range.From, 102);
                    Assert.Equal(range.To, 200);
                    Assert.Equal(range.Count, (UInt64)99);
                    Assert.Equal(range.Offset, 1);
                    break;
                }
            }
        }
Пример #7
0
        public void SymmetricExceptWith()
        {
            var range1 = new Int64VirtualRange(1, 100, 1);
            var range2 = new Int64VirtualRange(1, 100, 1);
            var ranges = range1.SymmetricExceptWith(range2);

            Assert.Equal(ranges.Count, 0);

            range1 = new Int64VirtualRange(50, 100, 1);
            range2 = new Int64VirtualRange(1, 150, 1);
            ranges = range1.SymmetricExceptWith(range2);
            Assert.Equal(ranges.Count, 2);
            for (int i = 0; i < ranges.Count; i++)
            {
                var range = ranges[i];
                switch (i)
                {
                case 0:
                    Assert.Equal(range.From, 1);
                    Assert.Equal(range.To, 49);
                    Assert.Equal(range.Count, (UInt64)49);
                    Assert.Equal(range.Offset, 1);
                    break;

                default:
                    Assert.Equal(range.From, 101);
                    Assert.Equal(range.To, 150);
                    Assert.Equal(range.Count, (UInt64)50);
                    Assert.Equal(range.Offset, 1);
                    break;
                }
            }

            range1 = new Int64VirtualRange(1, 100, 1);
            range2 = new Int64VirtualRange(1, 50, 1);
            ranges = range1.SymmetricExceptWith(range2);
            Assert.Equal(ranges.Count, 1);
            for (int i = 0; i < ranges.Count; i++)
            {
                var range = ranges[i];
                Assert.Equal(range.From, 51);
                Assert.Equal(range.To, 100);
                Assert.Equal(range.Count, (UInt64)50);
                Assert.Equal(range.Offset, 1);
            }

            range1 = new Int64VirtualRange(1, 100, 1);
            range2 = new Int64VirtualRange(10, 150, 1);
            ranges = range1.SymmetricExceptWith(range2);
            Assert.Equal(ranges.Count, 2);
            for (int i = 0; i < ranges.Count; i++)
            {
                var range = ranges[i];
                switch (i)
                {
                case 0:
                    Assert.Equal(range.From, 1);
                    Assert.Equal(range.To, 9);
                    Assert.Equal(range.Count, (UInt64)9);
                    Assert.Equal(range.Offset, 1);
                    break;

                default:
                    Assert.Equal(range.From, 101);
                    Assert.Equal(range.To, 150);
                    Assert.Equal(range.Count, (UInt64)50);
                    Assert.Equal(range.Offset, 1);
                    break;
                }
            }

            range1 = new Int64VirtualRange(1, 100, 1);
            range2 = new Int64VirtualRange(25, 75, 1);
            ranges = range1.SymmetricExceptWith(range2);
            Assert.Equal(ranges.Count, 2);
            for (int i = 0; i < ranges.Count; i++)
            {
                var range = ranges[i];
                switch (i)
                {
                case 0:
                    Assert.Equal(range.From, 1);
                    Assert.Equal(range.To, 24);
                    Assert.Equal(range.Count, (UInt64)24);
                    Assert.Equal(range.Offset, 1);
                    break;

                default:
                    Assert.Equal(range.From, 76);
                    Assert.Equal(range.To, 100);
                    Assert.Equal(range.Count, (UInt64)25);
                    Assert.Equal(range.Offset, 1);
                    break;
                }
            }

            range1 = new Int64VirtualRange(1, 100, 1);
            range2 = new Int64VirtualRange(1, 1, 1);
            ranges = range1.SymmetricExceptWith(range2);
            Assert.Equal(ranges.Count, 1);
            for (int i = 0; i < ranges.Count; i++)
            {
                var range = ranges[i];
                Assert.Equal(range.From, 2);
                Assert.Equal(range.To, 100);
                Assert.Equal(range.Count, (UInt64)99);
                Assert.Equal(range.Offset, 1);
            }

            range1 = new Int64VirtualRange(1, 100, 1);
            range2 = new Int64VirtualRange(101, 110, 1);
            ranges = range1.SymmetricExceptWith(range2);
            Assert.Equal(ranges.Count, 2);
            for (int i = 0; i < ranges.Count; i++)
            {
                var range = ranges[i];
                switch (i)
                {
                case 0:
                    Assert.Equal(range.From, 1);
                    Assert.Equal(range.To, 100);
                    Assert.Equal(range.Count, (UInt64)100);
                    Assert.Equal(range.Offset, 1);
                    break;

                default:
                    Assert.Equal(range.From, 101);
                    Assert.Equal(range.To, 110);
                    Assert.Equal(range.Count, (UInt64)10);
                    Assert.Equal(range.Offset, 1);
                    break;
                }
            }
        }