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); }
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); }
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); }
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); }
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); }); }
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; }); }
[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)); }
public void Setup() { _range = new RangeLab(0, Length); _array = new int[Length]; }