public void TestRuntimeTypeDefinition()
        {
            var mapper = SeparatedValueTypeMapper.DefineDynamic(typeof(Person));

            mapper.StringProperty("Name").ColumnName("Name");
            mapper.Int32Property("IQ").ColumnName("IQ");
            mapper.DateTimeProperty("BirthDate").ColumnName("BirthDate");
            mapper.DecimalProperty("TopSpeed").ColumnName("TopSpeed");

            var people = new[]
            {
                new Person()
                {
                    Name = "John", IQ = null, BirthDate = new DateTime(1954, 10, 29), TopSpeed = 3.4m
                },
                new Person()
                {
                    Name = "Susan", IQ = 132, BirthDate = new DateTime(1984, 3, 15), TopSpeed = 10.1m
                }
            };

            StringWriter writer = new StringWriter();

            mapper.Write(writer, people);
            string result = writer.ToString();

            StringReader reader = new StringReader(result);
            var          parsed = mapper.Read(reader).ToArray();

            Assert.AreEqual(2, parsed.Length);
            Assert.IsInstanceOfType(parsed[0], typeof(Person));
            Assert.IsInstanceOfType(parsed[1], typeof(Person));
            assertEqual(people[0], (Person)parsed[0]);
            assertEqual(people[1], (Person)parsed[1]);
        }
Пример #2
0
        public DirectVsDynamicTester()
        {
            var directMapper = SeparatedValueTypeMapper.Define <Person>(() => new Person());

            directMapper.Property(x => x.Name).ColumnName("Name");
            directMapper.Property(x => x.IQ).ColumnName("IQ");
            directMapper.Property(x => x.BirthDate).ColumnName("BirthDate");
            directMapper.Property(x => x.TopSpeed).ColumnName("TopSpeed");
            directMapper.Property(x => x.IsActive).ColumnName("IsActive");
            this.directMapper = directMapper;

            var dynamicMapper = SeparatedValueTypeMapper.DefineDynamic(typeof(Person));

            dynamicMapper.StringProperty("Name").ColumnName("Name");
            dynamicMapper.Int32Property("IQ").ColumnName("IQ");
            dynamicMapper.DateTimeProperty("BirthDate").ColumnName("BirthDate");
            dynamicMapper.DecimalProperty("TopSpeed").ColumnName("TopSpeed");
            dynamicMapper.BooleanProperty("IsActive").ColumnName("IsActive");
            this.dynamicMapper = dynamicMapper;

            this.people = Enumerable.Range(0, 10000).Select(i => new Person()
            {
                Name      = "Susan",
                IQ        = 132,
                BirthDate = new DateTime(1984, 3, 15),
                TopSpeed  = 10.1m
            }).ToArray();
        }
        public void MapInternalClass_Dynamic()
        {
            var mapper = SeparatedValueTypeMapper.DefineDynamic(typeof(InternalClass));

            mapper.StringProperty("Identifier");
            mapper.StringProperty("Status");
            mapper.DateTimeProperty("EffectiveDate").InputFormat("yyyyMMdd");
            mapper.DateTimeProperty("ModificationDate").InputFormat("yyyyMMddHHmmss");
            mapper.BooleanProperty("IsInternal");

            string       rawData = @"ABC123,Doing Fine,20180115,20180115145100,true";
            StringReader reader  = new StringReader(rawData);
            var          data    = mapper.Read(reader, new SeparatedValueOptions()
            {
                IsFirstRecordSchema = false,
                RecordSeparator     = "\n",
                Separator           = ",",
                Quote = '"'
            }).ToArray();

            Assert.AreEqual(1, data.Length);
            dynamic result = data[0];

            Assert.AreEqual("ABC123", result.Identifier);
            Assert.AreEqual("Doing Fine", result.Status);
            Assert.AreEqual(new DateTime(2018, 1, 15), result.EffectiveDate);
            Assert.AreEqual(new DateTime(2018, 1, 15, 14, 51, 00), result.ModificationDate);
            Assert.AreEqual(true, result.IsInternal);
        }
        public void TestRuntimeTypeDefinition_ReaderWriter()
        {
            var mapper = SeparatedValueTypeMapper.DefineDynamic(typeof(Person));

            mapper.StringProperty("Name").ColumnName("Name");
            mapper.Int32Property("IQ").ColumnName("IQ");
            mapper.DateTimeProperty("BirthDate").ColumnName("BirthDate");
            mapper.DecimalProperty("TopSpeed").ColumnName("TopSpeed");

            var people = new[]
            {
                new Person()
                {
                    Name = "John", IQ = null, BirthDate = new DateTime(1954, 10, 29), TopSpeed = 3.4m
                },
                new Person()
                {
                    Name = "Susan", IQ = 132, BirthDate = new DateTime(1984, 3, 15), TopSpeed = 10.1m
                }
            };

            StringWriter writer       = new StringWriter();
            var          entityWriter = mapper.GetWriter(writer);

            foreach (var person in people)
            {
                entityWriter.Write(person);
            }
            string result = writer.ToString();

            StringReader reader       = new StringReader(result);
            var          entityReader = mapper.GetReader(reader);
            var          parsed       = new List <object>();

            while (entityReader.Read())
            {
                parsed.Add(entityReader.Current);
            }
            Assert.AreEqual(2, parsed.Count);
            Assert.IsInstanceOfType(parsed[0], typeof(Person));
            Assert.IsInstanceOfType(parsed[1], typeof(Person));
            assertEqual(people[0], (Person)parsed[0]);
            assertEqual(people[1], (Person)parsed[1]);
        }
Пример #5
0
        public void TestMappingNestedMemberDynamically()
        {
            var mapper = SeparatedValueTypeMapper.DefineDynamic(typeof(Person));

            mapper.Int32Property("Id").ColumnName("Id");
            mapper.StringProperty("Name").ColumnName("Name");
            mapper.StringProperty("Address1.Street").ColumnName("Street");
            mapper.StringProperty("Address1.City").ColumnName("City");
            mapper.StringProperty("Address1.State").ColumnName("State");
            mapper.StringProperty("Address1.Zip").ColumnName("Zip");
            mapper.BooleanProperty("IsActive").ColumnName("IsActive");
            mapper.DateTimeProperty("CreatedOn").ColumnName("CreatedOn");

            var          recordValues = new[] { "123", "Bob", "Test Street 1", "Test City", "PA", "55555", "true", "2017-11-05" };
            var          record       = String.Join(",", recordValues);
            StringReader reader       = new StringReader(record);
            var          results      = mapper.Read(reader).ToArray();

            Assert.Equal(1, results.Length);
            var result = results[0];

            Assert.IsType <Person>(result);

            var expected = new Person()
            {
                Id       = 123,
                Name     = "Bob",
                Address1 = new Address()
                {
                    Street = "Test Street 1",
                    City   = "Test City",
                    State  = "PA",
                    Zip    = "55555"
                },
                IsActive  = true,
                CreatedOn = new DateTime(2017, 11, 05)
            };

            assertEqual(expected, (Person)result);
            assertEqual(expected.Address1, ((Person)result).Address1);
        }
        public void MapPrivateClass_PrivateCtor_Dynamic()
        {
            var mapper = SeparatedValueTypeMapper.DefineDynamic(typeof(PrivateCtorClass));

            mapper.Int32Property("Id");

            string       rawData = @"123";
            StringReader reader  = new StringReader(rawData);
            var          data    = mapper.Read(reader, new SeparatedValueOptions()
            {
                IsFirstRecordSchema = false,
                RecordSeparator     = "\n",
                Separator           = ",",
                Quote = '"'
            }).ToArray();

            Assert.AreEqual(1, data.Length);
            dynamic result = data[0];

            Assert.AreEqual(123, result.Id);
        }
        public void TestPrivateType()
        {
            var mapper = SeparatedValueTypeMapper.DefineDynamic(typeof(PrivatePerson));

            mapper.StringProperty("Name").ColumnName("Name");

            string expected = $"John{Environment.NewLine}Susan{Environment.NewLine}";

            StringReader reader = new StringReader(expected);
            var          people = mapper.Read(reader).ToArray();

            Assert.AreEqual(2, people.Length);
            Assert.IsInstanceOfType(people[0], typeof(PrivatePerson));
            Assert.IsInstanceOfType(people[1], typeof(PrivatePerson));

            StringWriter writer = new StringWriter();

            mapper.Write(writer, people);

            string actual = writer.ToString();

            Assert.AreEqual(expected, actual);
        }