public void TestNullCopyTo()
        {
            List <SimpleClass> simpleList = GetTestSimpleClassList();
            ReadOnlyPropertyList <SimpleClass, string> list = new ReadOnlyPropertyList <SimpleClass, string>(simpleList, property);

            list.CopyTo(null, 0);
        }
        public void TestInterfaceClear()
        {
            List <SimpleClass> simpleList = GetTestSimpleClassList();
            ReadOnlyPropertyList <SimpleClass, string> list = new ReadOnlyPropertyList <SimpleClass, string>(simpleList, property);

            ((IList <string>)list).Clear();
        }
        public void TestSuccesfulInit()
        {
            List <SimpleClass> simpleList = GetTestSimpleClassList();
            ReadOnlyPropertyList <SimpleClass, string> list = new ReadOnlyPropertyList <SimpleClass, string>(simpleList, property);

            Assert.AreEqual(list.Count, 20);
        }
        public void TestInterfaceGetter()
        {
            List <SimpleClass> simpleList = GetTestSimpleClassList();
            ReadOnlyPropertyList <SimpleClass, string> list = new ReadOnlyPropertyList <SimpleClass, string>(simpleList, property);

            Assert.AreEqual(((IList <string>)list)[0], "0");
        }
        public void TestInvalidCopyTo2()
        {
            List <SimpleClass> simpleList = GetTestSimpleClassList();
            ReadOnlyPropertyList <SimpleClass, string> list = new ReadOnlyPropertyList <SimpleClass, string>(simpleList, property);

            string[] array = new string[20];
            list.CopyTo(array, 1);
        }
        public void TestIndexer()
        {
            List <SimpleClass> simpleList = GetTestSimpleClassList();
            ReadOnlyPropertyList <SimpleClass, string> list = new ReadOnlyPropertyList <SimpleClass, string>(simpleList, property);

            Assert.AreEqual(list.Count, 20);

            for (int i = 0; i < simpleList.Count; i++)
            {
                Assert.AreEqual(list[i], (string)property.GetValue(simpleList[i]));
            }
        }
        public void TestIsReadOnly()
        {
            List <SimpleClass> simpleList = GetTestSimpleClassList();
            ReadOnlyPropertyList <SimpleClass, string> list = new ReadOnlyPropertyList <SimpleClass, string>(simpleList, property);

            Assert.AreEqual(list.IsReadOnly, true);

            simpleList = new List <SimpleClass>();
            list       = new ReadOnlyPropertyList <SimpleClass, string>(simpleList, property);

            Assert.AreEqual(list.IsReadOnly, true);
        }
        public void TestContains()
        {
            List <SimpleClass> simpleList = GetTestSimpleClassList();
            ReadOnlyPropertyList <SimpleClass, string> list = new ReadOnlyPropertyList <SimpleClass, string>(simpleList, property);

            Assert.AreEqual(list.Count, 20);

            for (int i = 0; i < simpleList.Count; i++)
            {
                Assert.AreEqual(list[i].Contains((string)property.GetValue(simpleList[i])), true);
            }

            Assert.AreEqual(list.Contains("50"), false);
        }
        public void TestCopyTo()
        {
            List <SimpleClass> simpleList = GetTestSimpleClassList();
            ReadOnlyPropertyList <SimpleClass, string> list = new ReadOnlyPropertyList <SimpleClass, string>(simpleList, property);

            string[] array = new string[20];
            list.CopyTo(array, 0);

            List <string> l = new List <string>(array);

            for (int i = 0; i < list.Count; i++)
            {
                Assert.AreEqual(l[i], list[i]);
            }
        }
        public void TestAccept()
        {
            List <SimpleClass> simpleList = GetTestSimpleClassList();
            ReadOnlyPropertyList <SimpleClass, string> list = new ReadOnlyPropertyList <SimpleClass, string>(simpleList, property);

            TrackingVisitor <string> v = new TrackingVisitor <string>();

            list.Accept(v);

            Assert.AreEqual(v.TrackingList.Count, 20);

            for (int i = 0; i < 20; i++)
            {
                Assert.AreEqual(v.TrackingList.Contains(i.ToString()), true);
            }
        }
        public void TestCompareTo()
        {
            List <SimpleClass> simpleList1 = GetTestSimpleClassList();
            ReadOnlyPropertyList <SimpleClass, string> list1 = new ReadOnlyPropertyList <SimpleClass, string>(simpleList1, property);

            List <SimpleClass> simpleList2 = new List <SimpleClass>();
            ReadOnlyPropertyList <SimpleClass, string> list2 = new ReadOnlyPropertyList <SimpleClass, string>(simpleList2, property);

            Assert.AreEqual(list1.CompareTo(list2), 1);

            Assert.AreEqual(list2.CompareTo(list1), -1);

            Assert.AreEqual(list2.CompareTo(list2), 0);
            Assert.AreEqual(list1.CompareTo(list1), 0);

            Assert.AreEqual(list2.CompareTo(new object()), -1);
        }
        public void TestInterfaceEnumerator()
        {
            List <SimpleClass> simpleList = GetTestSimpleClassList();
            ReadOnlyPropertyList <SimpleClass, string> list = new ReadOnlyPropertyList <SimpleClass, string>(simpleList, property);

            List <string> strings = new List <string>();

            IEnumerator enumerator = ((IEnumerable)list).GetEnumerator();

            while (enumerator.MoveNext())
            {
                strings.Add((string)enumerator.Current);
            }

            Assert.AreEqual(strings.Count, 20);


            for (int i = 0; i < 20; i++)
            {
                Assert.AreEqual(strings.Contains(i.ToString()), true);
            }
        }
 public void TestInitInvalidPropertyType()
 {
     List <SimpleClass> simpleList = GetTestSimpleClassList();
     ReadOnlyPropertyList <SimpleClass, string> list = new ReadOnlyPropertyList <SimpleClass, string>(simpleList, TypeDescriptor.GetProperties(typeof(SimpleClass)).Find("InvalidProperty", false));
 }
 public void TestInitNullProperty()
 {
     List <SimpleClass> simpleList = GetTestSimpleClassList();
     ReadOnlyPropertyList <SimpleClass, string> list = new ReadOnlyPropertyList <SimpleClass, string>(simpleList, null);
 }
 public void TestInitNullList()
 {
     ReadOnlyPropertyList <SimpleClass, string> list = new ReadOnlyPropertyList <SimpleClass, string>(null, property);
 }