public void Item_GetIndexOutOfRange_ThrowsIndexOutOfRangeException(int index)
        {
            var wrappedItems = new TestWrappedClass[10];

            for (var i = 0; i < 10; ++i)
            {
                wrappedItems[i] = new TestWrappedClass();
            }

            var array = new WrappedReadOnlyList <TestClass, TestWrappedClass>(
                wrappedItems, (_, testWrappedClass) => new TestClass(testWrappedClass));

            Assert.Throws <IndexOutOfRangeException>(() => array[index]);
        }
        public void Count_Get()
        {
            var wrappedItems = new TestWrappedClass[10];

            for (var i = 0; i < 10; ++i)
            {
                wrappedItems[i] = new TestWrappedClass();
            }

            var array = new WrappedReadOnlyList <TestClass, TestWrappedClass>(
                wrappedItems, (_, testWrappedClass) => new TestClass(testWrappedClass));

            Assert.Equal(10, array.Count);
        }
        public void Item_Get()
        {
            var wrappedItems = new TestWrappedClass[10];

            for (var i = 0; i < 10; ++i)
            {
                wrappedItems[i] = new TestWrappedClass();
            }

            var array = new WrappedReadOnlyList <TestClass, TestWrappedClass>(
                wrappedItems, (_, testWrappedClass) => new TestClass(testWrappedClass));

            var item = array[1];

            Assert.Same(wrappedItems[1], item.Wrapped);
        }
        public void GetEnumerator()
        {
            var wrappedItems = new TestWrappedClass[10];

            for (var i = 0; i < 10; ++i)
            {
                wrappedItems[i] = new TestWrappedClass();
            }

            var items = new WrappedReadOnlyList <TestClass, TestWrappedClass>(
                wrappedItems, (_, testWrappedClass) => new TestClass(testWrappedClass)).ToList();

            for (var i = 0; i < 10; ++i)
            {
                Assert.Same(wrappedItems[i], items[i].Wrapped);
            }
        }
        public void Item_GetMultipleTimes_ReturnsSameInstance()
        {
            var wrappedItems = new TestWrappedClass[10];

            for (var i = 0; i < 10; ++i)
            {
                wrappedItems[i] = new TestWrappedClass();
            }

            var array = new WrappedReadOnlyList <TestClass, TestWrappedClass>(
                wrappedItems, (_, testWrappedClass) => new TestClass(testWrappedClass));

            var item  = array[1];
            var item2 = array[1];

            Assert.Same(item, item2);
        }