void Admintest::test_addToEntity_tree() { Anonymous data; m_account->addToEntity(data); ASSERT_TRUE(data->hasAttr("character_types")); ASSERT_EQUAL(data->getAttr("character_types"), ListType()); }
void Playertest::test_addToEntity() { Player::playableTypes.insert("settler"); Anonymous data; m_account->addToEntity(data); ASSERT_TRUE(data->hasAttr("character_types")); ASSERT_EQUAL(data->getAttr("character_types"), ListType(1, "settler")); }
void Admintest::test_addToEntity() { Inheritance::instance().addChild(atlasClass("character", "root")); Inheritance::instance().addChild(atlasClass("human", "character")); Inheritance::instance().addChild(atlasClass("settler", "human")); Inheritance::instance().addChild(atlasClass("goblin", "character")); Anonymous data; m_account->addToEntity(data); ListType expected_character_types; expected_character_types.push_back("character"); expected_character_types.push_back("human"); expected_character_types.push_back("settler"); expected_character_types.push_back("goblin"); ASSERT_TRUE(data->hasAttr("character_types")); ASSERT_EQUAL(data->getAttr("character_types"), expected_character_types); }
int main() { { // Test constructor PropertyBase * pb = new EntityProperty(); delete pb; } { // Check constructor has set flags correctly to zero PropertyBase * pb = new EntityProperty; assert(pb->flags().m_flags == 0); delete pb; } { // Check getting the value fails when property is unassigned Element val; PropertyBase * pb = new EntityProperty; assert(pb->get(val) == -1); delete pb; } { // Check that setting the value to a pointer works Entity ent("1", 1); PropertyBase * pb = new EntityProperty; pb->set(Atlas::Message::Element(&ent)); delete pb; } { // Check that setting the value to a pointer works can get retrieved Entity ent("1", 1); Element val; PropertyBase * pb = new EntityProperty; pb->set(Atlas::Message::Element(&ent)); assert(pb->get(val) == 0); assert(val.isMap()); assert(val.asMap().find("$eid")->second == ent.getId()); delete pb; } { // Check that adding the uninitialised value to a message works. MapType map; static const std::string key = "foo"; PropertyBase * pb = new EntityProperty; MapType::const_iterator I = map.find(key); assert(I == map.end()); pb->add(key, map); I = map.find(key); assert(I != map.end()); assert(I->second.isString()); assert(I->second.String().empty()); delete pb; } { // Check that adding the uninitialised value to an argument works. Anonymous arg; static const std::string key = "foo"; Element val; PropertyBase * pb = new EntityProperty; assert(!arg->hasAttr(key)); assert(arg->copyAttr(key, val) != 0); pb->add(key, arg); assert(arg->hasAttr(key)); assert(arg->copyAttr(key, val) == 0); assert(val.isString()); assert(val.String().empty()); delete pb; } { // Check that adding the uninitialised value to an argument as a hard // attribute works Anonymous arg; static const std::string key = "id"; Element val; PropertyBase * pb = new EntityProperty; assert(!arg->hasAttr(key)); // Hard coded attribute ID has not been set, so returns false, but // copying it gives us the default assert(arg->copyAttr(key, val) == 0); assert(val.isString()); pb->add(key, arg); assert(arg->hasAttr(key)); assert(arg->copyAttr(key, val) == 0); assert(val.isString()); delete pb; } { // Check that adding the value to a message works. Entity ent("1", 1); MapType map; static const std::string key = "foo"; PropertyBase * pb = new EntityProperty; pb->set(Atlas::Message::Element(&ent)); MapType::const_iterator I = map.find(key); assert(I == map.end()); pb->add(key, map); I = map.find(key); assert(I != map.end()); assert(I->second.isMap()); assert(I->second.asMap().find("$eid")->second == ent.getId()); delete pb; } { // Check that adding the value to an argument works. Entity ent("1", 1); Anonymous arg; static const std::string key = "foo"; Element val; PropertyBase * pb = new EntityProperty; pb->set(Atlas::Message::Element(&ent)); assert(!arg->hasAttr(key)); assert(arg->copyAttr(key, val) != 0); pb->add(key, arg); assert(arg->hasAttr(key)); assert(arg->copyAttr(key, val) == 0); assert(val.isMap()); assert(val.asMap().find("$eid")->second == ent.getId()); delete pb; } { // Check that adding the value to an argument as a hard attribute works Entity ent("1", 1); Anonymous arg; static const std::string key = "id"; Element val; PropertyBase * pb = new EntityProperty; pb->set(Atlas::Message::Element(&ent)); assert(!arg->hasAttr(key)); // Hard coded attribute ID has not been set, so returns false, but // copying it gives us the default assert(arg->copyAttr(key, val) == 0); assert(val.isString()); assert(val.String() != ent.getId()); pb->add(key, arg); assert(arg->hasAttr(key)); assert(arg->copyAttr(key, val) == 0); assert(val.isString()); assert(val.String() == ent.getId()); delete pb; } }