public void EnumeratorTest()
        {
            var a    = new ArraySlice <int>(0, 1, 2);
            var iter = a.GetEnumerator();

            Assert.IsTrue(iter.MoveNext());
            Assert.AreEqual(0, iter.Current);
            Assert.IsTrue(iter.MoveNext());
            Assert.AreEqual(1, iter.Current);
            Assert.IsTrue(iter.MoveNext());
            Assert.AreEqual(2, iter.Current);
            Assert.IsFalse(iter.MoveNext());
            a = new ArraySlice <int>((IList <int>) new List <int>()
            {
                0, 1, 2
            });
            iter = a.GetEnumerator();
            Assert.IsTrue(iter.MoveNext());
            Assert.AreEqual(0, iter.Current);
            Assert.IsTrue(iter.MoveNext());
            Assert.AreEqual(1, iter.Current);
            Assert.IsTrue(iter.MoveNext());
            Assert.AreEqual(2, iter.Current);
            Assert.IsFalse(iter.MoveNext());
            a    = new ArraySlice <int>(new ArraySlice <int>(0, 1, 2));
            iter = a.GetEnumerator();
            Assert.IsTrue(iter.MoveNext());
            Assert.AreEqual(0, iter.Current);
            Assert.IsTrue(iter.MoveNext());
            Assert.AreEqual(1, iter.Current);
            Assert.IsTrue(iter.MoveNext());
            Assert.AreEqual(2, iter.Current);
            Assert.IsFalse(iter.MoveNext());
        }