public void InsertShouldAddCorrectValue()
        {
            // arrange
            var target = new VariantListAdapter<string, object>( new List<string>() );

            // act
            target.Insert( 0, "test" );

            // assert
            Assert.Equal( 1, target.Count );
            Assert.Equal( "test", target[0] );
        }
        public void ClearShouldRemoveAllItems()
        {
            // arrange
            var target = new VariantListAdapter<string, object>( new List<string>() );

            target.Add( "test" );

            // act
            target.Clear();

            // assert
            Assert.Equal( 0, target.Count );
        }
        public void IndexOfShouldReturnCorrectValue()
        {
            // arrange
            var target = new VariantListAdapter<string, object>( new List<string>() );

            target.Add( "test" );

            // act
            var actual = target.IndexOf( "test" );

            // assert
            Assert.Equal( 0, actual );
        }
        public void IndexerShouldReadWriteCorrectValue()
        {
            // arrange
            var expected = "test1";
            var target = new VariantListAdapter<string, object>( new List<string>() );

            target.Add( expected );
            var actual = target[0];
            Assert.Equal( expected, actual );

            expected = "test2";

            // act
            actual = target[0] = expected;

            // assert
            Assert.Equal( expected, actual );
        }
        public void ContainsShouldReturnExpectedResult()
        {
            // arrange
            var target = new VariantListAdapter<string, object>( new List<string>() );

            target.Add( "test" );

            // act

            // assert
            Assert.True( target.Contains( "test" ) );
            Assert.False( target.Contains( "other test" ) );
        }
        public void RemoveShouldRemoveFromSource( string value, bool expected )
        {
            // arrange
            var target = new VariantListAdapter<string, object>( new List<string>() );

            target.Add( "test" );

            // act
            var actual = target.Remove( value );

            // assert
            Assert.Equal( expected, actual );
        }
        public void IsReadOnlyPropertyShouldMatchAdaptedList()
        {
            // arrange
            var collection = new ReadOnlyCollection<string>( new List<string>() );
            var target = new VariantListAdapter<string, object>( collection );
            var expected = ( (ICollection<string>) collection ).IsReadOnly;

            // act
            var actual = target.IsReadOnly;

            Assert.Equal( expected, actual );
        }
        public void CopyToShouldCreateCovariantArray()
        {
            // arrange
            var expected = new[] { "1", "2", "3" };
            var actual = new object[3];
            var target = new VariantListAdapter<string, object>( expected );

            // act
            target.CopyTo( actual, 0 );

            // assert
            Assert.True( actual.SequenceEqual( expected ) );
        }