public void test_Append_extension_method()
{
int[] t = new int[0];
CollectionAssert.AreEqual( t.Append( 5 ), new[] { 5 } );
CollectionAssert.AreEqual( t.Append( 2 ).Append( 5 ), new[] { 2, 5 } );
CollectionAssert.AreEqual( t.Append( 2 ).Append( 3 ).Append( 5 ), new[] { 2, 3, 5 } );
var tX = t.Append( 2 ).Append( 3 ).Append( 4 ).Append( 5 );
CollectionAssert.AreEqual( tX, new[] { 2, 3, 4, 5 } );
var e = tX.GetEnumerator();
Assert.Throws<InvalidOperationException>( () => Console.Write( e.Current ) );
Assert.That( e.MoveNext() );
Assert.That( e.Current, Is.EqualTo( 2 ) );
e.Reset();
Assert.That( e.MoveNext() );
Assert.That( e.Current, Is.EqualTo( 2 ) );
Assert.That( e.MoveNext() );
Assert.That( e.Current, Is.EqualTo( 3 ) );
Assert.That( e.MoveNext() );
Assert.That( e.Current, Is.EqualTo( 4 ) );
Assert.That( e.MoveNext() );
Assert.That( e.Current, Is.EqualTo( 5 ) );
Assert.That( !e.MoveNext() );
Assert.Throws<InvalidOperationException>( () => Console.Write( e.Current ) );
Assert.Throws<InvalidOperationException>( () => e.MoveNext() );
t = null;
Assert.Throws<NullReferenceException>( () => t.Append( 5 ) );
}