public void FastExpandoCanBeCreatedFromObject()
        {
            FastExpando o = FastExpando.FromObject(new { Id = 1, Text = "foo" });
            dynamic     d = o;

            Assert.AreEqual(4, o.Count());
            Assert.AreEqual(1, d["ID"]);
            Assert.AreEqual("foo", d["Text"]);
        }
        public void FastExpandoCanExpandByObject()
        {
            FastExpando o = FastExpando.FromObject(new { Id = 1, Text = "foo" });

            o.Expand(new { Id = 2, Guest = "boo" });
            dynamic d = o;

            Assert.AreEqual(6, o.Count());
            Assert.AreEqual(2, d["ID"]);
            Assert.AreEqual("foo", d["Text"]);
            Assert.AreEqual("boo", d["GUEST"]);
        }
        public void FastExpandoCanBeUsedAsDynamic()
        {
            dynamic d = FastExpando.FromObject(new { Id = 1, Text = "foo" });

            d["Property"] = "prop";
            d.Expand(new { Id = 2, Guest = "boo" });

            FastExpando o = (FastExpando)d;

            Assert.AreEqual(7, o.Count());
            Assert.AreEqual(2, d["ID"]);
            Assert.AreEqual("foo", d["Text"]);
            Assert.AreEqual("prop", d["Property"]);
        }
        public void TestConvenienceExpandoQueries()
        {
            // we have two objects with parameters in them
            var o = new { Id = 1, Text = "foo" };
            var p = new { Id = 2, Guest = "boo" };

            var         list = Connection().QuerySql("SELECT ID=CONVERT (int, @ID), Text=@Text, Guest=@Guest", o.Expand(p));
            FastExpando f    = list[0];
            dynamic     d    = f;

            Assert.AreEqual(3, f.Count());
            Assert.AreEqual(2, d["ID"]);
            Assert.AreEqual("foo", d["Text"]);
            Assert.AreEqual("boo", d["GUEST"]);
        }
        public void TestConvenienceExpandoQueriesWithDynamicObject()
        {
            // start with a dynamic object
            dynamic o = new FastExpando();

            o["ID"]   = 1;
            o["Text"] = "foo";

            // expand the dynamic
            var p = new { Id = 2, Guest = "boo" };

            var         list = Connection().QuerySql("SELECT ID=CONVERT (int, @ID), Text=@Text, Guest=@Guest", (object)o.Expand(p));
            FastExpando f    = list[0];
            dynamic     d    = f;

            Assert.AreEqual(3, f.Count());
            Assert.AreEqual(2, d["ID"]);
            Assert.AreEqual("foo", d["Text"]);
            Assert.AreEqual("boo", d["GUEST"]);
        }