public void FlattenObjectAsColumns()
        {
            // Arrange
            var serializer = new Serializer();
            var order = new Order
            {
                Id = "Order/12",
                OrderDate = new DateTime(2015, 06, 01),
                Customer = new Person { FirstName = "Nate", LastName = "Zaugg" }
            };
            var ms = new MemoryStream();
            string expected = "Id,OrderDate,Customer.FirstName,Customer.LastName,Subtotal,Tax,Total\r\nOrder/12,6/1/2015 12:00:00 AM,Nate,Zaugg,0,0,0\r\n";

            string actual;

            // Act
            serializer.Serialize(ms, order);
            actual = Encoding.UTF8.GetString(ms.ToArray());

            // Assert
            Assert.AreEqual(expected, actual);
        }
        public void FlattenCollectionsAsColumns()
        {
            // Arrange
            var serializer = new Serializer();
            var order = new Order
            {
                Id = "Order/12",
                OrderDate = new DateTime(2015, 06, 01),
                Customer = new Person { FirstName = "Nate", LastName = "Zaugg" },
                Subtotal = 300,
                Tax = 22,
                Total = 322
            };
            order.Add(new OrderItem { Id = "1", Name = "Galaxy S5", ShortDescription = "My phone is nice!", Qty = 1, PricePerQty = 200, LineTotal = 200 });
            order.Add(new OrderItem { Id = "2", Name = "Xoom Tablet", ShortDescription = "I like Xoom tab", Qty = 1, PricePerQty = 100, LineTotal = 100 });

            var ms = new MemoryStream();
            string expected = "Id,OrderDate,Customer.FirstName,Customer.LastName,Subtotal,Tax,Total,Items1.Name,Items1.ShortDescription,Items1.PricePerQty,Items1.Qty,Items1.LineTotal,Items2.Name,Items2.ShortDescription,Items2.PricePerQty,Items2.Qty,Items2.LineTotal\r\nOrder/12,6/1/2015 12:00:00 AM,Nate,Zaugg,300,22,322,Galaxy S5,My phone is nice!,200,1,200,Xoom Tablet,I like Xoom tab,100,1,100\r\n";

            string actual;

            // Act
            serializer.Serialize(ms, order);
            actual = Encoding.UTF8.GetString(ms.ToArray());

            // Assert
            Assert.AreEqual(expected, actual);
        }