コード例 #1
0
        public void GetNullableDateTime(string value)
        {
            DateTime?          dateTime   = value.IsNullOrEmpty() ? null : value.ParseDateTime();
            InMemoryDataReader dataReader = CreateReader(dateTime);

            dataReader.GetNullableDateTime(0).Should().Be(dateTime);
        }
コード例 #2
0
        public void GetNullableDecimal(double?value)
        {
            decimal?           d          = (decimal?)value;
            InMemoryDataReader dataReader = CreateReader(d);

            dataReader.GetNullableDecimal(0).Should().Be(d);
        }
コード例 #3
0
        public void MaterializeByteArray()
        {
            var modelMapper = CreateModelMapperForBar();
            DynamicMethodModelFactory factory = new DynamicMethodModelFactory(new DatabaseMapper(modelMapper));

            var rows = new List <Dictionary <string, object> >
            {
                new Dictionary <string, object>()
            };
            var image = new byte[] { 0x20, 0x20, 0x20 };

            rows[0].Add("Prop1", 2);
            rows[0].Add("Prop2", 1);
            rows[0].Add("Prop4", 111);
            rows[0].Add("Image", image);

            InMemoryDataReader data = new InMemoryDataReader(rows);

            data.Read();

            var fact = factory.GetFactory <Bar>(data);

            var bar = fact(data);

            bar.Image.Should().BeEquivalentTo(image);
        }
コード例 #4
0
        public void CallOnAfterMaterializeWhenModelImplementIMaterialize()
        {
            var modelMapper = CreateModelMapperForBar();
            DynamicMethodModelFactory factory = new DynamicMethodModelFactory(new DatabaseMapper(modelMapper));

            var rows = new List <Dictionary <string, object> >
            {
                new Dictionary <string, object>()
            };

            rows[0].Add("Prop1", 2);
            rows[0].Add("Prop2", 1);
            rows[0].Add("Prop4", 111);

            InMemoryDataReader data = new InMemoryDataReader(rows);

            data.Read();

            var fact = factory.GetFactory <Bar>(data);

            var bar = fact(data);

            bar.Prop3.Should().Be(6);
            bar.Prop4.Should().Be(111);
        }
コード例 #5
0
 public void TestGetValueNotReadYet()
 {
     using (IDataReader reader = new InMemoryDataReader(false, this.Data1))
     {
         reader.GetString(0);
     }
 }
コード例 #6
0
        private void Flush()
        {
            var reader = new InMemoryDataReader(rows, filledRowsCount, columns.Length);

            target.BulkCopy(reader, tableName, columns.Length);
            filledRowsCount = 0;
        }
コード例 #7
0
        public void GetNullableGuid(string value)
        {
            Guid?g = value.IsNullOrEmpty() ? null : new Guid(value);
            InMemoryDataReader dataReader = CreateReader(g);

            dataReader.GetNullableGuid(0).Should().Be(g);
        }
コード例 #8
0
        public void MaterializeByteArrayInvalidCast()
        {
            var modelMapper = CreateModelMapperForBar();
            DynamicMethodModelFactory factory = new DynamicMethodModelFactory(new DatabaseMapper(modelMapper));

            var rows = new List <Dictionary <string, object> >
            {
                new Dictionary <string, object>()
            };
            var image = new byte[] { 0x20, 0x20, 0x20 };

            rows[0].Add("Prop1", 2);
            rows[0].Add("Prop2", 1);
            rows[0].Add("Prop4", image); // Bar.Prop4 => integer
            rows[0].Add("Image", image);

            InMemoryDataReader data = new InMemoryDataReader(rows);

            data.Read();

            var fact = factory.GetFactory <Bar>(data);
            Bar bar;

            Action act = () => bar = fact(data);

            act.Should().Throw <InvalidCastException>();
        }
コード例 #9
0
 public void TestGetStringNull()
 {
     using (IDataReader reader = new InMemoryDataReader(false, this.Data4))
     {
         Assert.IsTrue(reader.Read(), "Read");
         reader.GetString(1);
     }
 }
コード例 #10
0
 public void TestNextResultPastEnd()
 {
     using (IDataReader reader = new InMemoryDataReader(false, this.Data1, this.Data2))
     {
         Assert.IsTrue(reader.NextResult(), "Next result 1");
         Assert.IsFalse(reader.NextResult(), "Next result 2");
     }
 }
コード例 #11
0
 public void TestConstructorWithHeaders()
 {
     using (IDataReader reader = new InMemoryDataReader(true, this.Data1, this.Data2))
     {
         Assert.IsNotNull(reader, "Reader nullability");
         Assert.AreEqual(3, reader.FieldCount, "Reader field count");
         Assert.AreEqual("R1C3", reader.GetName(2), "Column name");
     }
 }
コード例 #12
0
 public void TestGetBoolean()
 {
     using (IDataReader reader = new InMemoryDataReader(false, this.Data3))
     {
         Assert.IsTrue(reader.Read(), "Read");
         Assert.IsTrue(reader.GetBoolean(0));
         Assert.IsFalse(reader.GetBoolean(1));
     }
 }
コード例 #13
0
 public void TestNextResult()
 {
     using (IDataReader reader = new InMemoryDataReader(false, this.Data1, this.Data2))
     {
         Assert.AreEqual(3, reader.FieldCount, "Field count.");
         Assert.IsTrue(reader.NextResult(), "Next result");
         Assert.AreEqual(2, reader.FieldCount, "Field count has changed.");
         Assert.IsTrue(reader.Read(), "Read");
         Assert.AreEqual("TWO R1C2", reader.GetString(1), "Row 1 column 2.");
     }
 }
コード例 #14
0
        public void TestGetValuesWithNull()
        {
            using (IDataReader reader = new InMemoryDataReader(false, this.Data4))
            {
                Assert.IsTrue(reader.Read(), "Read");

                object[] buffer = new object[3];
                Assert.AreEqual(2, reader.GetValues(buffer), "Number of values");
                var strings = buffer.Cast <string>().ToArray();
                Assert.AreEqual(new string[] { "R1C1", null, "R1C3" }, strings, "Data equal");
            }
        }
コード例 #15
0
        public void IgnoreNonExistingProperties()
        {
            DynamicMethodModelFactory factory = CreateFactory();
            var rows = CreateData();

            rows[0].Add("XXX", 3);
            using IDataReader data = new InMemoryDataReader(rows);
            data.Read();
            var fact = factory.GetFactory <Foo>(data);

            var foo = fact(data);
        }
コード例 #16
0
        public void GetEmptyDataFromEmptyReader()
        {
            var sourceData = CreateDataForReader();

            sourceData.Clear();
            IDataReader reader = new InMemoryDataReader(sourceData);

            ModelBuilder builder = CreateBuilder();

            var data = builder.Materialize <Foo>(reader).ToList();

            data.Should().HaveCount(0);
        }
コード例 #17
0
        public void CreateFactoryWhichConvertNullableType()
        {
            DynamicMethodModelFactory factory = CreateFactory();
            var rows = CreateData();
            InMemoryDataReader data = new InMemoryDataReader(rows);

            data.Read();

            var fact = factory.GetFactory <Foo>(data);

            var foo = fact(data);

            foo.Age.Should().Be(18.5);
        }
コード例 #18
0
        public void CreateFactoryWhichKnowFillingObjectsWithEnums()
        {
            DynamicMethodModelFactory factory = CreateFactory();
            var rows = CreateData();

            rows[0].Add("PropertyEnum", 3);
            using IDataReader data = new InMemoryDataReader(rows);
            data.Read();
            var fact = factory.GetFactory <Foo>(data);

            var foo = fact(data);

            foo.PropertyEnum.Should().Be(TestEnum.Value3);
        }
コード例 #19
0
        public void IgnoreNonMapFields()
        {
            DynamicMethodModelFactory factory = CreateFactory();
            var rows = CreateData();

            rows[0].Add("Bar", 3);
            using IDataReader data = new InMemoryDataReader(rows);
            data.Read();
            var fact = factory.GetFactory <Foo>(data);

            var foo = fact(data);

            foo.Bar.Should().Be(0);
        }
コード例 #20
0
        public void MaterializeDataFromReader()
        {
            IDataReader reader = new InMemoryDataReader(CreateDataForReader());

            ModelBuilder builder = CreateBuilder();

            var data = builder.Materialize <Foo>(reader).ToList();

            data.Should().HaveCount(2);
            data[0].Id.Should().Be(1);
            data[0].PropertyGuid.Should().Be("ddc995d7-4dda-41ca-abab-7f45e651784a");

            data[1].PropertyString.Should().Be("Kitty");
            data[1].PropertyDateTime.Should().Be(new DateTime(1984, 4, 20));
        }
コード例 #21
0
        public void CreateFactoryWhichUseConverter()
        {
            DynamicMethodModelFactory factory = CreateFactory();
            var rows = CreateData();

            rows[0].Add("PropertyEnumConv", "V2");
            using IDataReader data = new InMemoryDataReader(rows);
            data.Read();

            var fact = factory.GetFactory <Foo>(data);

            var foo = fact(data);

            foo.PropertyEnumConv.Should().Be(TestEnum.Value2);
        }
コード例 #22
0
ファイル: BatchWriter.cs プロジェクト: taekun/simple-1c
        private void Flush()
        {
            for (var i = 0; i < filledRowsCount; i++)
            {
                var r = rows[i];
                for (var j = 0; j < columns.Length; j++)
                {
                    r[j] = ConvertType(r[j], columns[j]);
                }
            }
            var reader = new InMemoryDataReader(rows, filledRowsCount, columns.Length);

            target.BulkCopy(reader, tableName, columns.Length);
            filledRowsCount = 0;
        }
コード例 #23
0
        public void TestRead()
        {
            using (IDataReader reader = new InMemoryDataReader(false, this.Data1))
            {
                Assert.IsTrue(reader.Read(), "Read 1");
                Assert.AreEqual("R1C2", reader.GetString(1));

                Assert.IsTrue(reader.Read(), "Read 2");
                Assert.AreEqual("R2C1", reader.GetString(0));

                Assert.IsTrue(reader.Read(), "Read 3");
                Assert.AreEqual("R3C3", reader.GetString(2));

                Assert.IsFalse(reader.Read(), "Read 4");
            }
        }
コード例 #24
0
        public void CreateFactoryWhichUseStandardTypeConverter()
        {
            DynamicMethodModelFactory factory = CreateFactory();
            var rows = CreateData();
            InMemoryDataReader data = new InMemoryDataReader(rows);

            data.Read();

            data.CurrentTypes[0]  = typeof(double);
            data.CurrentValues[0] = 25.45;

            var fact = factory.GetFactory <Foo>(data);

            var foo = fact(data);

            foo.Id.Should().Be(25);
        }
コード例 #25
0
        public void NonNullableTypeMaterializeToNullable()
        {
            DynamicMethodModelFactory factory = CreateFactory();
            var rows = CreateData();

            rows[0].Add("PropertyDateTimeNullable", new DateTime(2005, 1, 5));

            using InMemoryDataReader data = new InMemoryDataReader(rows);
            data.Read();

            data.CurrentTypes[7] = typeof(DateTime);

            var fact = factory.GetFactory <Foo>(data);

            var foo = fact(data);

            foo.PropertyDateTimeNullable.Should().Be(new DateTime(2005, 1, 5));
        }
コード例 #26
0
        public void CreateFactoryWhichKnowFillingObjectsWithPrimitiveTypes()
        {
            DynamicMethodModelFactory factory = CreateFactory();
            IDataReader data = new InMemoryDataReader(CreateData());

            data.Read();

            var fact = factory.GetFactory <Foo>(data);

            var foo = fact(data);

            foo.Id.Should().Be(1);
            foo.PropertyString.Should().Be("Hello");
            foo.PropertyDouble.Should().Be(45.78);
            foo.PropertyDecimal.Should().Be(785.78M);
            foo.PropertyDateTime.Should().Be(new DateTime(1980, 7, 24));
            foo.Is.Should().BeTrue();
            foo.PropertyGuid.Should().Be(new Guid("ddc995d7-4dda-41ca-abab-7f45e651784a"));
        }
コード例 #27
0
        public void CreateFactoryWhichKnowFillingObjectsWithNullValues()
        {
            DynamicMethodModelFactory factory = CreateFactory();
            var rows = CreateData();
            InMemoryDataReader data = new InMemoryDataReader(rows);

            data.Read();

            data.CurrentValues[1] = DBNull.Value;
            data.CurrentValues[2] = DBNull.Value;
            data.CurrentValues[6] = DBNull.Value;

            var fact = factory.GetFactory <Foo>(data);

            var foo = fact(data);

            foo.PropertyString.Should().BeNull();
            foo.PropertyDouble.Should().Be(0);
            foo.PropertyGuid.Should().BeEmpty();
        }
コード例 #28
0
        public void InjectServiceToProperty()
        {
            var service = new TestService();
            var factory = CreateFactory(CreateModelMapperWithInjection(service));

            var rows = CreateData();

            rows[0].Add("XXX", 3);
            using IDataReader data = new InMemoryDataReader(rows);
            data.Read();

            var fact = factory.GetFactory <Foo>(data);

            var foo = fact(data);

            foo.Service.Should().Be(service);

            data.Read();
            foo = fact(data);
            foo.Service.Should().Be(service);
        }
コード例 #29
0
        public void CreateFactoryWhichKnowFillingObjectsWithPrimitiveTypes()
        {
            DynamicMethodModelFactory factory = CreateFactory();

            using IDataReader data = new InMemoryDataReader(CreateData());
            data.Read();

            var fact = factory.GetFactory <Foo>(data);

            var foo = fact(data);

            foo.Id.Should().Be(1);
            foo.PropertyString.Should().Be("Hello");
            foo.PropertyDouble.Should().Be(45.78);
            foo.PropertyDecimal.Should().Be(785.78M);
            foo.PropertyDateTime.Should().Be(new DateTime(1980, 7, 24));
            foo.DateTimeOffset.Should().Be(new DateTimeOffset(1985, 9, 20, 10, 11, 22, 123, TimeSpan.FromHours(5)));
            foo.DateTimeOffsetNullable.Should().Be(new DateTimeOffset(1985, 9, 20, 10, 11, 22, 123, TimeSpan.FromHours(5)));
            foo.Float.Should().Be(12.8F);
            foo.FloatNullable.Should().Be(45.89F);
            foo.Is.Should().BeTrue();
            foo.PropertyGuid.Should().Be(new Guid("ddc995d7-4dda-41ca-abab-7f45e651784a"));
        }
コード例 #30
0
        public void GetNullableInt16(short?value)
        {
            using InMemoryDataReader dataReader = CreateReader(value);

            dataReader.GetNullableInt16(0).Should().Be(value);
        }