1 #include <Atlas/Objects/Operation.h> 2 #include <Atlas/Objects/Entity.h> 3 #include <Atlas/Objects/loadDefaults.h> 4 5 #include <iostream> 6 #include <cstdlib> 7 #include <cassert> 8 9 using Atlas::Objects::Root; 10 using Atlas::Objects::Operation::Look; 11 using Atlas::Objects::Entity::Account; 12 using Atlas::Objects::smart_dynamic_cast; 13 using Atlas::Objects::objectDefinitions; 14 main(int argc,char ** argv)15int main(int argc, char** argv) 16 { 17 std::string atlas_xml_path; 18 char * srcdir_env = getenv("srcdir"); 19 if (srcdir_env != 0) { 20 atlas_xml_path = srcdir_env; 21 atlas_xml_path += "/"; 22 } 23 atlas_xml_path += "../../protocol/spec/atlas.xml"; 24 try { 25 Atlas::Objects::loadDefaults(atlas_xml_path); 26 } catch(Atlas::Objects::DefaultLoadingException e) { 27 std::cout << "DefaultLoadingException: " 28 << e.getDescription() << std::endl; 29 } 30 Root root = Atlas::Objects::objectDefinitions.find("root")->second; 31 Root root_inst; 32 root_inst->setAttr("id", std::string("root_instantiation")); 33 assert(root->getAttr("id").asString() == "root"); 34 assert(root_inst->getAttr("id").asString() == "root_instantiation"); 35 assert(root->getAttr("parents").asList().size() == 0); 36 assert(root_inst->getAttr("parents").asList().size() == 1); 37 assert((*root_inst->getAttr("parents").asList().begin()).asString() == 38 "root"); 39 40 Look look = smart_dynamic_cast<Look>(objectDefinitions.find("look")->second); 41 Look look_inst; 42 look_inst->setAttr("id", std::string("look_instantiation")); 43 assert(look->getAttr("id").asString() == "look"); 44 assert(look_inst->getAttr("id").asString() == "look_instantiation"); 45 assert(look->getAttr("parents").asList().size() == 1); 46 assert((*look->getAttr("parents").asList().begin()).asString() == 47 "perceive"); 48 assert(look_inst->getAttr("parents").asList().size() == 1); 49 assert((*look_inst->getAttr("parents").asList().begin()).asString() == 50 "look"); 51 52 Account acct = smart_dynamic_cast<Account>(objectDefinitions.find("account")->second); 53 Account acct_inst; 54 acct_inst->setAttr("id", std::string("account_instantiation")); 55 assert(acct->getAttr("id").asString() == "account"); 56 assert(acct_inst->getAttr("id").asString() == "account_instantiation"); 57 assert(acct->getAttr("parents").asList().size() == 1); 58 assert((*acct->getAttr("parents").asList().begin()).asString() == 59 "admin_entity"); 60 assert(acct_inst->getAttr("parents").asList().size() == 1); 61 assert((*acct_inst->getAttr("parents").asList().begin()).asString() == 62 "account"); 63 } 64