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]); }
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]); }
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); }