public void SingleEntityTest()
        {
            StubEntityResultSet rs = new StubEntityResultSet();

            rs.AddEntity(new Order {
                ID = 1, OrderName = "Name1"
            });
            rs.AddEntity(new Order {
                ID = 2, OrderName = "Name2"
            });

            var db = CreateDB_ForQuery(rs);

            List <Order> orders = db.Query <Order>().ToList();

            Assert.AreEqual(2, orders.Count);
            Assert.AreEqual("Name1", orders[0].OrderName);
            Assert.AreEqual(1, orders[0].ID);
            Assert.AreEqual("Name2", orders[1].OrderName);
            Assert.AreEqual(2, orders[1].ID);
        }
        public void ParentChildEntityTest()
        {
            StubEntityResultSet rs = new StubEntityResultSet();

            rs.AddEntityWithChildren(
                new Order {
                ID = 1, OrderName = "Name11"
            },
                new OrderItem {
                ID = 1001, ItemDescription = "Desc11", OrderID = 1, Price = 1.00m
            }
                );

            rs.AddEntityWithChildren(
                new Order {
                ID = 1, OrderName = "Name11"
            },
                new OrderItem {
                ID = 1002, ItemDescription = "Desc12", OrderID = 1, Price = 1.00m
            }
                );

            rs.AddEntityWithChildren(
                new Order {
                ID = 2, OrderName = "Name21"
            },
                new OrderItem {
                ID = 2001, ItemDescription = "Desc21", OrderID = 2, Price = 2.00m
            }
                );

            var db = CreateDB_ForQuery(rs);

            List <Order> orders = db.Query <Order>().Graph(o => o.OrderItems).ToList();

            // 1st order
            Assert.AreEqual(2, orders.Count);
            Assert.AreEqual("Name11", orders[0].OrderName);
            Assert.AreEqual(1, orders[0].ID);

            // 1st order's items
            Assert.AreEqual(2, orders[0].OrderItems.Count);

            // 1st orders item 1
            Assert.AreEqual(1001, orders[0].OrderItems[0].ID);
            Assert.AreEqual("Desc11", orders[0].OrderItems[0].ItemDescription);
            Assert.AreEqual(1, orders[0].OrderItems[0].OrderID);
            Assert.AreEqual(1.00m, orders[0].OrderItems[0].Price);

            // 1st orders item 2
            Assert.AreEqual(1002, orders[0].OrderItems[1].ID);
            Assert.AreEqual("Desc12", orders[0].OrderItems[1].ItemDescription);
            Assert.AreEqual(1, orders[0].OrderItems[1].OrderID);
            Assert.AreEqual(1.00m, orders[0].OrderItems[1].Price);

            // 2nd order
            Assert.AreEqual("Name21", orders[1].OrderName);
            Assert.AreEqual(2, orders[1].ID);

            // 2nd order's items
            Assert.AreEqual(1, orders[1].OrderItems.Count);
            Assert.AreEqual(2001, orders[1].OrderItems[0].ID);
            Assert.AreEqual("Desc21", orders[1].OrderItems[0].ItemDescription);
            Assert.AreEqual(2, orders[1].OrderItems[0].OrderID);
            Assert.AreEqual(2.00m, orders[1].OrderItems[0].Price);
        }