public void LastIndexOf_int_OrderIsCorrectWithManyDuplicates(int count) { SegmentedList <T> list = GenericListFactory(count); SegmentedList <T> withoutDuplicates = list.ToSegmentedList(); list.AddRange(list); list.AddRange(list); list.AddRange(list); Assert.All( Enumerable.Range(0, count), i => { Assert.All( Enumerable.Range(0, 4), j => { int expectedIndex = (j * count) + i; Assert.Equal( expectedIndex, list.LastIndexOf(withoutDuplicates[i], (count * (j + 1)) - 1) ); Assert.Equal( expectedIndex, list.LastIndexOf(withoutDuplicates[i], (count * (j + 1)) - 1, count) ); } ); } ); }
public void LastIndexOf_int_OutOfRangeExceptions(int count) { SegmentedList <T> list = GenericListFactory(count); T element = CreateT(234); Assert.Throws <ArgumentOutOfRangeException>(() => list.LastIndexOf(element, count)); //"ArgumentOutOfRangeException expected." if (count == 0) // IndexOf with a 0 count List is special cased to return -1. { Assert.Equal(-1, list.LastIndexOf(element, -1)); } else { Assert.Throws <ArgumentOutOfRangeException>(() => list.LastIndexOf(element, -1)); } }
public void LastIndexOf_int_int_OutOfRangeExceptions(int count) { SegmentedList <T> list = GenericListFactory(count); T element = CreateT(234); if (count > 0) { Assert.Throws <ArgumentOutOfRangeException>( () => list.LastIndexOf(element, 0, count + 1) ); //"Expected ArgumentOutOfRangeException." Assert.Throws <ArgumentOutOfRangeException>( () => list.LastIndexOf(element, count / 2, count / 2 + 2) ); //"Expected ArgumentOutOfRangeException." Assert.Throws <ArgumentOutOfRangeException>( () => list.LastIndexOf(element, 0, count + 1) ); //"Expected ArgumentOutOfRangeException." Assert.Throws <ArgumentOutOfRangeException>(() => list.LastIndexOf(element, 0, -1)); //"Expected ArgumentOutOfRangeException." Assert.Throws <ArgumentOutOfRangeException>( () => list.LastIndexOf(element, -1, count) ); //"Expected ArgumentOutOfRangeException." Assert.Throws <ArgumentOutOfRangeException>(() => list.LastIndexOf(element, -1, 1)); //"Expected ArgumentOutOfRangeException." Assert.Throws<ArgumentOutOfRangeException>(() => list.LastIndexOf(element, count, 0)); //"Expected ArgumentOutOfRangeException." Assert.Throws <ArgumentOutOfRangeException>( () => list.LastIndexOf(element, count, 1) ); //"Expected ArgumentOutOfRangeException." } else // IndexOf with a 0 count List is special cased to return -1. { Assert.Equal(-1, list.LastIndexOf(element, 0, count + 1)); Assert.Equal(-1, list.LastIndexOf(element, count / 2, count / 2 + 2)); Assert.Equal(-1, list.LastIndexOf(element, 0, count + 1)); Assert.Equal(-1, list.LastIndexOf(element, 0, -1)); Assert.Equal(-1, list.LastIndexOf(element, -1, count)); Assert.Equal(-1, list.LastIndexOf(element, -1, 1)); Assert.Equal(-1, list.LastIndexOf(element, count, 0)); Assert.Equal(-1, list.LastIndexOf(element, count, 1)); } }