public void DelimitedSchemaMapping_Properly_Maps_Delimited_Strings()
        {
            // Create Schema
            var personSchema = new DelimitedSchema<Person>();
            personSchema.AddMapping(p => p.FirstName, 0);
            personSchema.AddMapping(p => p.LastName, 1);
            personSchema.AddMapping(p => p.Gender, 2);
            personSchema.AddMapping(p => p.DateOfBirth, 3);

            var chargeSchema = new DelimitedSchema<Charge>();
            chargeSchema.AddMapping(c => c.Code, 0);
            chargeSchema.AddMapping(c => c.Units, 1);
            chargeSchema.AddMapping(c => c.ChargeAmount, 2);

            // Create Mapper
            var personMapper = new DelimitedSchemaObjectMapper<Person>(personSchema, "|");
            var chargeMapper = new DelimitedSchemaObjectMapper<Charge>(chargeSchema, "|");

            // Map lines
            var person = personMapper.MapLine("Foo|Bar|M|01/02/2003");
            var charge = chargeMapper.MapLine("12345|1|89.93");

            Assert.AreEqual("Foo", person.FirstName);
            Assert.AreEqual("Bar", person.LastName);
            Assert.AreEqual("M", person.Gender);
            Assert.AreEqual(DateTime.Parse("01/02/2003"), person.DateOfBirth);

            Assert.AreEqual("12345", charge.Code);
            Assert.AreEqual(1, charge.Units);
            Assert.AreEqual(89.93m, charge.ChargeAmount);
        }
        public void FileReader_ReadFile_Enumerates_Each_Line()
        {
            var schema = new DelimitedSchema<Person>();
            schema.AddMapping(s => s.FirstName, 1);
            schema.AddMapping(s => s.LastName, 2);
            schema.AddMapping(s => s.Gender, 3);
            schema.AddMapping(s => s.DateOfBirth, 4);

            var mapper = new DelimitedSchemaObjectMapper<Person>(schema, "|");
            var persons = new List<Person>();

            var fr = new FileReader();
            fr.ReadFile("text.txt", line =>
            {
                if (line.StartsWith("P"))
                {
                    persons.Add(mapper.MapLine(line));
                }
            });

            Assert.AreEqual(3, persons.Count);
        }