private static void AssertCopyToDataTable(Type type, DataTable actual)
        {
            var propertyDescriptors = MetaDataHelper.GetPropertiesToSerialize(type);

            Assert.AreEqual(propertyDescriptors.Count(), actual.Columns.Count);
            var expectedPropertyDescriptorNames = propertyDescriptors.Select(pd => pd.Name).ToList();
            var actualNames = actual.Columns.Cast <DataColumn>().Select(dc => dc.ColumnName).ToList();

            CollectionAssert.AreEquivalent(expectedPropertyDescriptorNames, actualNames);
        }
        public void CopyToDataTableTest()
        {
            var listofNonSerializableClasses = NonSerializableClass.GenerateList();

            CopyToDataTableAndAssert(listofNonSerializableClasses);
            CopyToDataTableAndAssert(MetaSingletons.MetaData.AddressType);
            listofNonSerializableClasses.Add(new SerializableClass {
                DateTimeField = DateTime.Now, IntField = listofNonSerializableClasses.Count, StringField = listofNonSerializableClasses.Count.ToString()
            });
            CopyToDataTableAndAssert(listofNonSerializableClasses, typeof(SerializableClass));
            var d = new DataGridView {
                AutoGenerateColumns = true, DataSource = listofNonSerializableClasses
            };

            listofNonSerializableClasses.Insert(0, new SerializableClass {
                DateTimeField = DateTime.Now, IntField = listofNonSerializableClasses.Count, StringField = listofNonSerializableClasses.Count.ToString()
            });
            CopyToDataTableAndAssert(listofNonSerializableClasses, typeof(SerializableClass));
            CopyToDataTableAndAssert(MetaDataHelper.GetPropertiesToSerialize(typeof(AddressTypeEntity)));
        }