public void test_IndexOf_extension_method()
{
List<int> listToTest = new List<int>();
listToTest.AddRangeArray<int>( 1, 2 );
Assert.That( listToTest.IndexOf( a => a == 0 ), Is.EqualTo( -1 ) );
Assert.That( listToTest.IndexOf( a => a == 1 ), Is.EqualTo( 0 ) );
Assert.That( listToTest.IndexOf( a => a == 2 ), Is.EqualTo( 1 ) );
Assert.That( listToTest.IndexOf( ( a, b ) => b == listToTest.IndexOf<int>( c => c == 0 ) && a == 0 ), Is.EqualTo( -1 ) );
Assert.That( listToTest.IndexOf( ( a, b ) => b == listToTest.IndexOf<int>( c => c == 1 ) && a == 1 ), Is.EqualTo( 0 ) );
Assert.That( listToTest.IndexOf( ( a, b ) => b == listToTest.IndexOf<int>( c => c == 2 ) && a == 2 ), Is.EqualTo( 1 ) );
listToTest.Add( 2 );
Assert.That( listToTest.IndexOf( a => a == 2 ), Is.EqualTo( 1 ) );
Assert.That( listToTest.IndexOf( ( a, idx ) => idx == 2 && a == 2 ), Is.EqualTo( 2 ) );
Func<int,bool> nullFunc = null;
Func<int,int,bool> nullFuncWithIndex = null;
Assert.Throws<ArgumentNullException>( () => listToTest.IndexOf( nullFunc ) );
Assert.Throws<ArgumentNullException>( () => listToTest.IndexOf( nullFuncWithIndex ) );
listToTest = null;
Assert.Throws<NullReferenceException>( () => listToTest.IndexOf( a => a == 0 ) );
Assert.Throws<NullReferenceException>( () => listToTest.IndexOf( (a,idx) => a == 0 ) );
}