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)15 int 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