예제 #1
0
        public void GetAllStatuses_ReturnsResults_CanBeParsedWithMissingFields()
        {
            DatabaseBootstrapper.CreateAndPopulate();

            DataTable dataTable = QueryRunner.ExecuteStoredProcedure("uspGetAllStatuses");

            DatabaseBootstrapper.Drop();

            DataTableConverter dtp = new DataTableConverter();

            var results = dtp.ConvertToObjectList <StatusPropertyNameMissing>(dataTable);

            Assert.Equal(dataTable.Rows.Count, results.Count());
        }
예제 #2
0
        public void GetAllStatuses_ReturnsResults_ThrowsOnExtraProperty()
        {
            DatabaseBootstrapper.CreateAndPopulate();

            DataTable dataTable = QueryRunner.ExecuteStoredProcedure("uspGetAllStatuses");

            DatabaseBootstrapper.Drop();

            DataTableConverter dtp = new DataTableConverter();

            dtp.DataTableParserSettings.MissingMappingHandling = MissingMappingHandling.Error;

            Assert.Throws <MissingMappingException <StatusExtraProperty> >(() => dtp.ConvertToObjectList <StatusExtraProperty>(dataTable));
        }
예제 #3
0
        public void GetAllStatuses_ReturnsResults_IgnoresExtraProperty()
        {
            DatabaseBootstrapper.CreateAndPopulate();

            DataTable dataTable = QueryRunner.ExecuteStoredProcedure("uspGetAllStatuses");

            DatabaseBootstrapper.Drop();

            DataTableConverter dtp = new DataTableConverter();

            dtp.DataTableParserSettings.MissingMappingHandling = MissingMappingHandling.Ignore;

            var results = dtp.ConvertToObjectList <StatusExtraProperty>(dataTable);

            Assert.Equal(dataTable.Rows.Count, results.Count());
        }
예제 #4
0
        public void GetAllStatuses_ReturnsResults_CanBeParsedWithCorrectObjects()
        {
            DatabaseBootstrapper.CreateAndPopulate();

            DataTable dataTable = QueryRunner.ExecuteStoredProcedure("uspGetAllStatuses");

            DatabaseBootstrapper.Drop();

            DataTableConverter dtp = new DataTableConverter();

            var results = dtp.ConvertToObjectList <StatusPropertyNamesMatch>(dataTable);

            Assert.True(results.Where(r => r.Id == (int)dataTable.Rows[0]["Id"] &&
                                      r.Description == dataTable.Rows[0]["Description"].ToString() &&
                                      r.IsPublic == (bool)dataTable.Rows[0]["IsPublic"]).Count() == 1);
        }
예제 #5
0
        static void Main(string[] args)
        {
            DataTableConverter dtp = new DataTableConverter();

            int count = 2000000;

            List <TestClass> classes = new List <TestClass>();

            for (int i = 0; i < count; i++)
            {
                classes.Add(new TestClass
                {
                    Id           = i,
                    Name         = "Name" + i,
                    Postcode     = "GU" + i,
                    CreationDate = new DateTime(2001, 1, 1),
                    ModifiedDate = new DateTime(2001, 1, 1)
                });
            }

            DataTable dt = DataTableFactory.GenerateDataTableFilledWithObjects(classes);


            dtp.DataTableParserSettings.Resolver = Resolver.Default;

            Stopwatch sw = Stopwatch.StartNew();

            dtp.ConvertToObjectList <TestClass>(dt);
            sw.Stop();
            Console.WriteLine(sw.ElapsedMilliseconds + " Milliseconds Total");
            Console.WriteLine(sw.ElapsedMilliseconds / (decimal)count + " Milliseconds Per Object");

            if (Debugger.IsAttached)
            {
                Debugger.Break();
            }
        }