private static void AssertDecayPointer <TElement>(DecayPointer <TElement> ptr, IList <TElement> arr) { Assert.That(ptr.Count, Is.EqualTo(arr.Count)); Assert.That(ptr.IsDecayed, Is.EqualTo(true)); Assert.That(ptr.IsNull, Is.EqualTo(false)); TestingAssertion.AssertElements(ptr, arr); ptr.MoveToStart(); for (int i = 0; i < arr.Count; i++) { Debug.Assert(ptr[i].Equals(arr[i])); } for (int i = 0; i < arr.Count; i++) { Debug.Assert(ptr[0].Equals(arr[i])); Debug.Assert(ptr.Value.Equals(arr[i])); ptr++; } for (int i = arr.Count - 1; i >= 0; i--) { Assert.That(ptr.Value, Is.EqualTo(arr[i])); ptr--; } Assert.That(ptr.Value, Is.EqualTo(arr[0])); Assert.That(ptr[0], Is.EqualTo(arr[0])); //Debug.Assert(ptr.ToArray().SequenceEqual(arr)); TestingAssertion.AssertElements(ptr, arr); }