Ejemplo n.º 1
0
        public void Covers_should_be_true_if_big_value_gt_end()
        {
            var range = new HashRange(0, BigInteger.Parse("45671926166590716193865151022383844364247891967"));
            var value = BigInteger.Parse("294255062699127052481571644205017775360447081995");

            range.Covers(value).Should().BeFalse();
        }
Ejemplo n.º 2
0
        public void Covers_should_be_true_if_big_value_lt_end()
        {
            var range = new HashRange(0, BigInteger.Parse("45671926166590716193865151022383844364247891967"));
            var value = BigInteger.Parse("45671926166590716193865151022383844364247891966");

            range.Covers(value).Should().BeTrue();
        }
Ejemplo n.º 3
0
        public void ContainsTest()
        {
            var range  = new HashRange(MD5Hash.MinValue, MD5Hash.MaxValue);
            var ranges = HashRange.SegmentRange(range, new decimal[] { 0.50m, 0.50m });

            var start1 = new MD5Hash("00000000000000000000000000000000");
            var start2 = new MD5Hash("80000000000000000000000000000000");
            var end1   = new MD5Hash("7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF");
            var end2   = new MD5Hash("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF");

            Assert.IsTrue(ranges.Length == 2);
            Assert.IsTrue(ranges[0].Contains(start1));
            Assert.IsTrue(ranges[0].Contains(end1));
            Assert.IsTrue(ranges[1].Contains(start2));
            Assert.IsTrue(ranges[1].Contains(end2));

            Assert.IsFalse(ranges[0].Contains(start2));
            Assert.IsFalse(ranges[0].Contains(end2));
            Assert.IsFalse(ranges[1].Contains(start1));
            Assert.IsFalse(ranges[1].Contains(end1));

            Assert.IsTrue(start1 < end1);
            Assert.IsTrue(end1 < start2);
            Assert.IsTrue(start2 < end2);

            Assert.IsFalse(start1 > end1);
            Assert.IsFalse(end1 > start2);
            Assert.IsFalse(start2 > end2);
        }
Ejemplo n.º 4
0
        public void ContainsTest()
        {
            var range = new HashRange(10, 15);

            for (uint i = 11; i <= 15; i++)
            {
                range.Contains(i).Should().BeTrue();
            }

            range.Contains(10).Should().BeFalse();
            range.Contains(16).Should().BeFalse();
        }
Ejemplo n.º 5
0
        public void WrapAroundContains()
        {
            var range = new HashRange(uint.MaxValue - 10, 10);

            range.Contains(uint.MaxValue - 10).Should().BeFalse();

            foreach (uint i in new WrappingRange(range))
            {
                range.Contains(i).Should().BeTrue();
            }

            range.Contains(11).Should().BeFalse();
        }
Ejemplo n.º 6
0
        public void GetBigIntegerFromBytesTest()
        {
            var a = MD5Hash.MaxValue.Values;
            var b = MD5Hash.MinValue.Values;
            var c = new MD5Hash("A0000000000000A00000000000000000").Values;

            Assert.IsTrue(a.SequenceEqual(HashRange.GetBytesFromBigInteger(HashRange.GetBigIntegerFromBytes(a),
                                                                           MD5Hash.ExpectedByteLength)));
            Assert.IsTrue(b.SequenceEqual(HashRange.GetBytesFromBigInteger(HashRange.GetBigIntegerFromBytes(b),
                                                                           MD5Hash.ExpectedByteLength)));
            Assert.IsTrue(c.SequenceEqual(HashRange.GetBytesFromBigInteger(HashRange.GetBigIntegerFromBytes(c),
                                                                           MD5Hash.ExpectedByteLength)));
        }
Ejemplo n.º 7
0
        public void SegmentRangeTest()
        {
            var range = new HashRange(MD5Hash.MinValue, MD5Hash.MaxValue);

            var ranges = HashRange.SegmentRange(range, new decimal[] { 0.50m, 0.50m });

            Assert.IsTrue(ranges[0].MinHash == new MD5Hash("00000000000000000000000000000000"),
                          ranges[0].MinHash + " " + ranges[0].MaxHash);
            Assert.IsTrue(ranges[0].MaxHash == new MD5Hash("7FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"),
                          ranges[0].MinHash + " " + ranges[0].MaxHash);

            Assert.IsTrue(ranges[1].MinHash == new MD5Hash("80000000000000000000000000000000"),
                          ranges[1].MinHash + " " + ranges[1].MaxHash);
            Assert.IsTrue(ranges[1].MaxHash == new MD5Hash("FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF"),
                          ranges[1].MinHash + " " + ranges[1].MaxHash);
        }
        public void WrapAroundRange()
        {
            var wrapAround = new HashRange(uint.MaxValue - 10, 5);

            var coll = new HashRangeCollection(
                new HashRange[]
            {
                new HashRange(10, 20),
                wrapAround,
            });

            for (uint i = 11; i <= 20; i++)
            {
                coll.Contains(i).Should().BeTrue();
            }

            foreach (uint i in new WrappingRange(wrapAround))
            {
                coll.Contains(i).Should().BeTrue($"{i} in ({uint.MaxValue - 10}, 5]");
            }
        }
Ejemplo n.º 9
0
 /// <summary>
 /// Creates a new partition with the specified node and hash range.
 /// </summary>
 /// <param name="node">The node.</param>
 /// <param name="range">The range.</param>
 public Partition(TNode node, HashRange range)
 {
     this.Node  = node;
     this.Range = range;
 }
Ejemplo n.º 10
0
        public void Covers_should_be_false_if_value_gt_end()
        {
            var range = new HashRange(0, 10);

            range.Covers(11).Should().BeFalse();
        }
Ejemplo n.º 11
0
        public void Covers_should_be_false_if_value_lt_start()
        {
            var range = new HashRange(0, 10);

            range.Covers(-1).Should().BeFalse();
        }
Ejemplo n.º 12
0
        public void Covers_should_be_true_if_value_lt_end()
        {
            var range = new HashRange(0, 10);

            range.Covers(8).Should().BeTrue();
        }
Ejemplo n.º 13
0
        public void Covers_should_be_true_if_value_gt_start()
        {
            var range = new HashRange(0, 10);

            range.Covers(2).Should().BeTrue();
        }
Ejemplo n.º 14
0
 public IndexHeader(HashRange range, int? mode)
 {
     this.Range = range;
     this.Mode = mode;
 }
Ejemplo n.º 15
0
 public WrappingRange(HashRange range) : this(range.StartExclusive, range.EndInclusive)
 {
 }