Exemplo n.º 1
0
        static void Main(string[] args)
        {
            var ci      = typeof(Data).GetConstructors()[0];
            var entries = ci.GetParameters().Select((x, i) => new Factory.MapEntry(i, null)).ToArray();

            var factory = new Factory();
            var mapper  = factory.CreateMapper <Data>(ci, entries);

            var reader = new MockDataReader(
                new[]
            {
                new MockColumn(typeof(int), "Id"),
                new MockColumn(typeof(string), "Name"),
            },
                new []
            {
                new object[] { 1, "Test" },
                new object[] { DBNull.Value, DBNull.Value },
            });

            reader.Read();
            var entity1 = mapper(reader);

            reader.Read();
            var entity2 = mapper(reader);
        }
        public void CanReadAllDataProperly()
        {
            var dataList = new List <TestObjectClass>();

            dataList.Add(new TestObjectClass {
                IntProperty = 10, StringProperty = "ten"
            });
            dataList.Add(new TestObjectClass {
                IntProperty = 20, StringProperty = "twenty"
            });
            dataList.Add(new TestObjectClass {
                IntProperty = 30, StringProperty = "thirty"
            });

            var builder = new ObjectBasedMockDataReaderBuilder <TestObjectClass>().
                          SetNullValueHandling(NullValueHandling.AssumeAsDbNull).
                          AddData(dataList);

            using (var reader = new MockDataReader(builder))
            {
                reader.Read().ShouldBe <bool>(true);
                reader.Read().ShouldBe <bool>(true);

                reader.IsDBNull(0).ShouldBe(false);
                reader.GetInt32(0).ShouldBe <int>(20);
                reader.GetValue(0).ShouldBe <object>(20);

                reader.IsDBNull(1).ShouldBe <bool>(false);
                reader.GetString(1).ShouldBe <string>("twenty");
                reader.GetValue(1).ShouldBe <object>("twenty");
            }
        }
Exemplo n.º 3
0
        public void CanReadAllDataProperly()
        {
            var builder = new SimpleMockDataReaderBuilder().
                          SetNullValueHandling(NullValueHandling.AssumeAsDbNull).
                          AddColumn("ID_PRODUCT", typeof(long)).
                          AddColumn("PRODUCT_NAME", typeof(string)).
                          AddColumn("IS_ACTIVE", typeof(bool)).
                          AddColumn("BARCODE", typeof(string)).
                          AddData(1L, "Product 1", true, null);

            using (var reader = new MockDataReader(builder))
            {
                reader.Read();

                reader.IsDBNull(0).ShouldBe <bool>(false);
                reader.GetInt64(0).ShouldBe <long>(1);
                reader.GetValue(0).ShouldBe <object>(1);
                reader["ID_PRODUCT"].ShouldBe <object>(1);

                reader.IsDBNull(1).ShouldBe <bool>(false);
                reader.GetString(1).ShouldBe <string>("Product 1");
                reader.GetValue(1).ShouldBe <object>("Product 1");
                reader["PRODUCT_NAME"].ShouldBe <object>("Product 1");

                reader.IsDBNull(2).ShouldBe <bool>(false);
                reader.GetBoolean(2).ShouldBe <bool>(true);
                reader.GetValue(2).ShouldBe <object>(true);
                reader["IS_ACTIVE"].ShouldBe <object>(true);

                reader.IsDBNull(3).ShouldBe <bool>(true);
                reader.GetValue(3).ShouldBe <object>(DBNull.Value);
                reader["BARCODE"].ShouldBe <object>(DBNull.Value);
            }
        }
Exemplo n.º 4
0
        static void Main(string[] args)
        {
            var colmuns = new ColumnInfo[]
            {
                new ColumnInfo("Id", typeof(int)),
                new ColumnInfo("Name", typeof(string)),
                new ColumnInfo("Id", typeof(int)),
                new ColumnInfo("Name", typeof(string))
            };

            var reader = new MockDataReader(
                colmuns.Select(x => new MockColumn(x.Type, x.Name)).ToArray(),
                new []
            {
                new object[] { 1, "Master-1", 101, "Slave1" },
                new object[] { 1, "Master-1", 102, "Slave2" },
                new object[] { DBNull.Value, DBNull.Value, DBNull.Value, DBNull.Value }
            });

            var context = new DummyContext();
            var mi      = typeof(Program).GetMethod(nameof(Main));

            var tupleMapper = TupleResultMapperFactory.Instance.CreateMapper <Tuple <Master, Slave> >(context, mi, colmuns);

            reader.Read();
            var t1 = tupleMapper(reader);
        }
Exemplo n.º 5
0
        public void TryToMapNullableToNonNullable_Reflection()
        {
            var reader = new MockDataReader(_testData);

            reader.Read();
            Assert.That(() => SqlMapper.MapObjectWithReflection <IncorrectModelNonNullable>(reader),
                        Throws.ArgumentException);
        }
Exemplo n.º 6
0
        public void TryToMapNullableToNonNullable()
        {
            var reader = new MockDataReader(_testData);

            reader.Read();
            Assert.Throws(typeof(NullReferenceException),
                          () => SqlMapper.MapObjectWithCachedReflection <IncorrectModelNonNullable>(reader));
        }
Exemplo n.º 7
0
        public void IncorrectModelTest()
        {
            // no problem here - reader throws the error with unknown column name
            var reader = new MockDataReader(_testData);

            reader.Read();
            Assert.That(() => SqlMapper.MapObjectWithCachedReflection <IncorrectModel>(reader),
                        Throws.ArgumentException);
        }
Exemplo n.º 8
0
        public void MapObjectWithCachedReflection()
        {
            var reader = new MockDataReader(_testData);

            reader.Read();
            var model = SqlMapper.MapObjectWithCachedReflection <SqlMapperTestModel>(reader);

            AssertFirstModel(model);
        }
Exemplo n.º 9
0
 public void Read()
 {
     Assert.AreEqual(true, _reader.Read());
     Assert.AreEqual(0, _reader["id"]);
     // how to test GUID?
     Assert.AreEqual(true, _reader["myBit"]);
     Assert.AreEqual(0, _reader["myBigInt"]);
     Assert.AreEqual(0, _reader["myTinyInt"]);
     Assert.AreEqual(0, _reader["mySmallInt"]);
     Assert.AreEqual(DBNull.Value, _reader["myNullableInt"]);
     Assert.AreEqual(0f, _reader["myFloat"]);
     Assert.AreEqual("0", _reader["myNvarchar"]);
 }
Exemplo n.º 10
0
        // use the profiler to see run times of each of the mapping methods. Stopwatch is misleading...
        public static void Run()
        {
            var testTable = CreateTestTable();

            var stopwatch = new Stopwatch();
            var models    = new List <SqlMapperTestModel>();
            var reader    = new MockDataReader(testTable);

            stopwatch.Start();
            while (reader.Read())
            {
                models.Add(MapModelHardCoded(reader));
            }
            stopwatch.Stop();
            var hardCodedMs = stopwatch.ElapsedMilliseconds;

            Console.WriteLine($"Using hard coded: read {NumTestRecords} in {hardCodedMs} ms");

            models.Clear();
            reader = new MockDataReader(testTable);
            stopwatch.Reset();
            stopwatch.Start();
            while (reader.Read())
            {
                models.Add(SqlMapper.MapObjectWithCachedReflection <SqlMapperTestModel>(reader));
            }
            stopwatch.Stop();
            var timesHardCodedMs = (float)stopwatch.ElapsedMilliseconds / hardCodedMs;

            Console.WriteLine($"Using cached expressions: read {NumTestRecords} in {stopwatch.ElapsedMilliseconds} ms ({timesHardCodedMs}x) ");

            models.Clear();
            reader = new MockDataReader(testTable);
            stopwatch.Reset();
            stopwatch.Start();
            while (reader.Read())
            {
                models.Add(SqlMapper.MapObjectWithReflection <SqlMapperTestModel>(reader));
            }
            stopwatch.Stop();
            timesHardCodedMs = (float)stopwatch.ElapsedMilliseconds / hardCodedMs;
            Console.WriteLine($"Using pure reflection: read {NumTestRecords} in {stopwatch.ElapsedMilliseconds} ms ({timesHardCodedMs}x)");
        }
Exemplo n.º 11
0
        public void testToMessageFromReaderComplete()
        {
            MockDataReader rdr = new MockDataReader();

            DataTable table = new DataTable();

            foreach (string columnName in TableSchemas.SECURE_MESSAGE_COLUMNS)
            {
                table.Columns.Add(columnName);
            }

            rdr.Table = table;

            object[] fakeValues = new object[] { 1, 2, DateTime.Now, 4, "ABCD1234", 6, 7, 8, 9, DateTime.Now, DateTime.Now,
                                                 DateTime.Now, DBNull.Value, DateTime.Now, 15, 16, "BUTTS,SEYMOUR", 18, 19, "HUMPALOT,YVONNA", DateTime.Now, DateTime.Now, DBNull.Value, 0, 0 };
            rdr.Table.Rows.Add(fakeValues);
            rdr.Read();
            domain.sm.Message result = domain.sm.Message.getMessageFromReader(rdr);
            Assert.IsNotNull(result);
        }
Exemplo n.º 12
0
        public void testToMessageFromReaderSparse()
        {
            MockDataReader rdr = new MockDataReader();

            DataTable table = new DataTable();

            for (int i = 0; i < TableSchemas.SECURE_MESSAGE_COLUMNS.Count; i++)
            {
                if (i % 2 == 0) // just add the even indices to simulate randomly chosen columns
                {
                    table.Columns.Add(TableSchemas.SECURE_MESSAGE_COLUMNS[i]);
                }
            }

            rdr.Table = table;

            object[] fakeValues = new object[] { 1, DateTime.Now, "ABCD1234", 7, 9, DateTime.Now,
                                                 DBNull.Value, 15, "BUTTS,SEYMOUR", 19, DateTime.Now, DBNull.Value, 0 };
            rdr.Table.Rows.Add(fakeValues);
            rdr.Read();
            domain.sm.Message result = domain.sm.Message.getMessageFromReader(rdr);
            Assert.IsNotNull(result);
        }
Exemplo n.º 13
0
        public void testToMessageFromReaderSparse()
        {
            MockDataReader rdr = new MockDataReader();

            DataTable table = new DataTable();
            for(int i = 0; i < TableSchemas.SECURE_MESSAGE_COLUMNS.Count; i++)
            {
                if (i % 2 == 0) // just add the even indices to simulate randomly chosen columns
                {
                    table.Columns.Add(TableSchemas.SECURE_MESSAGE_COLUMNS[i]);
                }
            }

            rdr.Table = table;

            object[] fakeValues = new object[] { 1, DateTime.Now, "ABCD1234", 7, 9, DateTime.Now,
                 DBNull.Value, 15, "BUTTS,SEYMOUR", 19, DateTime.Now, DBNull.Value, 0 };
            rdr.Table.Rows.Add(fakeValues);
            rdr.Read();
            domain.sm.Message result = domain.sm.Message.getMessageFromReader(rdr);
            Assert.IsNotNull(result);
        }
Exemplo n.º 14
0
        public void testToMessageFromReaderComplete()
        {
            MockDataReader rdr = new MockDataReader();

            DataTable table = new DataTable();
            foreach (string columnName in TableSchemas.SECURE_MESSAGE_COLUMNS)
            {
                table.Columns.Add(columnName);
            }

            rdr.Table = table;

            object[] fakeValues = new object[] { 1, 2, DateTime.Now, 4, "ABCD1234", 6, 7, 8, 9, DateTime.Now, DateTime.Now,
                DateTime.Now, DBNull.Value, DateTime.Now, 15, 16, "BUTTS,SEYMOUR", 18, 19, "HUMPALOT,YVONNA", DateTime.Now, DateTime.Now, DBNull.Value, 0, 0 };
            rdr.Table.Rows.Add(fakeValues);
            rdr.Read();
            domain.sm.Message result = domain.sm.Message.getMessageFromReader(rdr);
            Assert.IsNotNull(result);
        }