Ejemplo n.º 1
0
        public void BoundaryConditions(int first, uint length, int end)
        {
            var empty = new RangeLab(first, length);

            Assert.Equal(length, empty.Length);
            Assert.Equal(first, empty.First);
            Assert.Equal(end, empty.End);
        }
Ejemplo n.º 2
0
        public void UnboundedEnd()
        {
            var unboundedEnd = RangeLab.Construct(10, RangeLab.UnboundedEnd);

            Assert.False(unboundedEnd.IsBound);
            Assert.Equal(10, unboundedEnd.First);
            Assert.Equal(RangeLab.UnboundedEnd, unboundedEnd.End);
        }
Ejemplo n.º 3
0
        public void BindToValid(int arrayLength, int first, int end, uint boundRangeLength)
        {
            var range  = RangeLab.Construct(first, end);
            var result = range.BindToValid(arrayLength);

            Assert.Equal(boundRangeLength, result.Length);
            Assert.Equal(boundRangeLength == 0 ? arrayLength : first, result.First);
        }
Ejemplo n.º 4
0
        public void Bind(int first, int end, int length, int resultFirst, int resultEnd)
        {
            var range  = RangeLab.Construct(first, end);
            var result = range.Bind(length);

            Assert.Equal(resultFirst, result.First);
            Assert.Equal(resultEnd, result.End);
        }
Ejemplo n.º 5
0
 public void UnboundedRangeCannotHaveLengthSpecified()
 {
     for (uint length = 0; length < 10; length++)
     {
         Assert.Throws <ArgumentOutOfRangeException>(() =>
         {
             // Unbound Range cannot have length
             var invalid = new RangeLab(RangeLab.UnboundedFirst, length);
         });
     }
     Assert.Throws <ArgumentOutOfRangeException>(() =>
     {
         // Unbound Range cannot have length
         var invalid = new RangeLab(RangeLab.UnboundedFirst, uint.MaxValue);
     });
 }
Ejemplo n.º 6
0
        public void Errors()
        {
            var max = new RangeLab(int.MaxValue - 1, 1);

            Assert.Throws <ArgumentOutOfRangeException>(() =>
            {
                // MinValue is used as a sentinel for First, so cannot be used with Length
                var tooLong = new RangeLab(int.MinValue, 0);
            });
            Assert.Throws <ArgumentOutOfRangeException>(() =>
            {
                // MaxValue is used as a sentinel for End, so End cannot end up being it.
                var tooLong = new RangeLab(int.MaxValue, 1);
            });
            Assert.Throws <InvalidOperationException>(() =>
            {
                // Cannot enumerate unbound
                var unbound = RangeLab.Construct(RangeLab.UnboundedFirst, 1);
                unbound.GetEnumerator();
            });
            Assert.Throws <InvalidOperationException>(() =>
            {
                // Cannot enumerate unbound
                var unbound = RangeLab.Construct(1, RangeLab.UnboundedEnd);
                unbound.GetEnumerator();
            });
            Assert.Throws <InvalidOperationException>(() =>
            {
                // Cannot get length on unbound
                var unbound = RangeLab.Construct(RangeLab.UnboundedFirst, 1);
                var length  = unbound.Length;
            });
            Assert.Throws <InvalidOperationException>(() =>
            {
                // Cannot get length on unbound
                var unbound = RangeLab.Construct(1, RangeLab.UnboundedEnd);
                var length  = unbound.Length;
            });
        }
Ejemplo n.º 7
0
        [InlineData(-1, 0, 0, false)] // lower bound negative
        public void IsValidArrayRange(int first, int end, int length, bool result)
        {
            var range = RangeLab.Construct(first, end);

            Assert.Equal(result, range.IsValid(length));
        }
Ejemplo n.º 8
0
 public void Setup()
 {
     _range = new RangeLab(0, Length);
     _array = new int[Length];
 }