TEST(PropertyTests, ObjectPropertyEncapsulatesObjectsWithInheritance) { using namespace ObjectPropertyEncapsulatesObjectsWithInheritanceNamespace; Derived d; Property p = d; ASSERT_NO_THROW(p.AsObject().Get("a").AsInt()); ASSERT_NO_THROW(p.AsObject().Get("b").AsBool()); }
TEST(PropertyTests, ObjectPropertyEncapsulatesPodStruct) { using namespace ObjectPropertyEncapsulatesPodStructNamespace; Foo f; Property p = f; p.AsObject().Get("a").AsInt().Set(2); p.AsObject().Get("b").AsReal().Set(12.0); p.AsObject().Get("c").AsBool().Set(true); p.AsObject().Get("d").AsString().Set("hello"); ASSERT_EQ(f.a, 2); ASSERT_EQ(f.b, 12.0f); ASSERT_EQ(f.c, true); ASSERT_STREQ(f.d.c_str(), "hello"); }
TEST(PropertyTests, ObjectPropertyCanHaveCollectionMember) { using namespace ObjectPropertyHasCollectionFieldNamespace; CollectionContainer cc; Property p = cc; p.AsObject().Get("v").AsCollection().Grow(); ASSERT_EQ(cc.v.size(), 1); }
TEST(PropertyTests, ObjectPropertyEncapsulatesInnerClass) { using namespace ObjectPropertyEncapsulatesInnerClassNamespace; Outer o; o.i.a = 0; Property p = o; p.AsObject().Get("i").AsObject().Get("a").AsInt().Set(1); ASSERT_EQ(o.i.a, 1); }
TEST(PropertyTests, ObjectPropertyEncapsulatesCompositeObject) { using namespace ObjectPropertyEncapsulatesCompositeObjectNamespace; Baz b; b.b.a = 0; Property p = b; p.AsObject().Get("b").AsObject().Get("a").AsInt().Set(1); ASSERT_EQ(b.b.a, 1); }