public void Conversion()
        {
            var dicToObjMappingInfos = new List<DictionaryItemToObjectMappingInfo>()
            {
                new DictionaryItemToObjectMappingInfo()
                {
                    Key = "person name",
                    PropertyName = "Name",
                    FromStringMapping = st => st,
                    ToStringMapping = ob => (string)ob
                }, 
                new DictionaryItemToObjectMappingInfo()
                {
                    Key = "how old",
                    PropertyName = "Age",
                    FromStringMapping = st => Convert.ToInt32(st),
                    ToStringMapping = num => num.ToString()
                }
            };

            var headersList = new List<string>() { "city", "person name", "country", "how old" };
           
            var colToObjMappingInfos = new MappingInfoConverter().Convert(dicToObjMappingInfos, headersList).ToList();
            Assert.AreEqual(1, colToObjMappingInfos[0].Index);
            Assert.AreEqual(3, colToObjMappingInfos[1].Index);
        }
 public void MapObjectToCollection()
 {
     var colToObjMappingInfos = new MappingInfoConverter().Convert(dicToObjMappingInfos, headers).ToList();
     Person p1 = new Person()
     {
         Name = "Xuan",
         Age = 25
     };
    
     var mapper = new CollectionToFromObjectMapper<Person>(colToObjMappingInfos);
     var collection = mapper.Map(p1);
     Assert.AreEqual(p1.Name, collection);
     Assert.AreEqual(25, p1.Age);
 }
 public void MapCollectionToObject()
 {
     var colToObjMappingInfos = new MappingInfoConverter().Convert(dicToObjMappingInfos, headers).ToList();
     
     var collection = new List<string>()
     {
         "Xixón", 
         "Xuan", 
         "Asturies", 
         "25"
     };
     var mapper = new CollectionToFromObjectMapper<Person>(colToObjMappingInfos);
     Person p1 = mapper.Map(collection);
     Assert.AreEqual("Xuan", p1.Name);
     Assert.AreEqual(25, p1.Age);
 }
        public void ReadConvertAndMap()
        {
            var dicToObjMappingInfos = new List<DictionaryItemToObjectMappingInfo>()
            {
                new DictionaryItemToObjectMappingInfo()
                {
                    Key = "person name",
                    PropertyName = "Name",
                    FromStringMapping = st => st,
                    ToStringMapping = ob => (string)ob
                }, 
                new DictionaryItemToObjectMappingInfo()
                {
                    Key = "how old",
                    PropertyName = "Age",
                    FromStringMapping = st => Convert.ToInt32(st),
                    ToStringMapping = num => num.ToString()
                }
            };

            var dirSep = System.IO.Path.DirectorySeparatorChar;
            //var filePath = FileHelper.GetProgramFolder() + @"..\..\..\TestData\ReadAndMapTsv.txt";
            var filePath = FileHelper.GetProgramFolder()
                + (".." + dirSep).Multiply(3)
                + "TestData" + dirSep
                + "ReadAndMapTsv.txt";
            var dao = new AdvancedDsvDao(filePath, '\t', true);
            var headersList = dao.GetHeaders();

            var colToObjMappingInfos = new MappingInfoConverter().Convert(dicToObjMappingInfos, headersList).ToList();
            Assert.AreEqual(0, colToObjMappingInfos[0].Index);
            Assert.AreEqual(3, colToObjMappingInfos[1].Index);

            //the "real life" usage would go on like this:
            var mapper = new CollectionToFromObjectMapper<Person>(colToObjMappingInfos);
            var people = dao.GetDataEntries()
                .Select(personRow => mapper.Map(personRow))
                .ToList();

            Assert.AreEqual(people[0].Name, "Johan");
            Assert.AreEqual(people[0].Age, 34);

            Assert.AreEqual(people[1].Name, "Xose");
            Assert.AreEqual(people[1].Age, 36);
        }