+ sprintf(cad_aux, "%4.2f", f);
+ EXPECT_EQ(anna::functions::asString(f, "%4.2f"), cad_aux);
+ sprintf(cad_aux, "%4.2f", d);
+ EXPECT_EQ(anna::functions::asString(d, "%4.2f"), cad_aux);
+}
+
+TEST(core, configuration) {
+ anna::Configuration conf;
+ ASSERT_THROW(conf.load("missing_file.cnf"), anna::RuntimeException);
+ ASSERT_NO_THROW(conf.load("test/core/example.cnf"));
+ //[ property ]
+ //thing = tshirt
+ //size = 1
+ //color = blue
+ //[ owner ]
+ //name = edu
+ //address = madrid
+ ASSERT_THROW(conf.getValue("property", "WRONG_VAR"), anna::RuntimeException);
+ ASSERT_THROW(conf.getValue("WRONG_SECTION", "thing"), anna::RuntimeException);
+ std::string value;
+ EXPECT_EQ(value = conf.getValue("property", "thing"), "tshirt");
+ EXPECT_EQ(conf.getIntegerValue("property", "size"), 1);
+ EXPECT_EQ(std::string(conf.getValue("property", "color")), "blue");
+ EXPECT_EQ(std::string(conf.getValue("owner", "name")), "edu");
+ EXPECT_EQ(std::string(conf.getValue("owner", "address")), "madrid");
+ conf.setDefaultValue("owner", "phone", "555 55 55");
+ EXPECT_EQ(std::string(conf.getValue("owner", "phone")), "555 55 55");
+ EXPECT_TRUE(!conf.getValue("owner", "phone", true)); // query value is NULL: 'true = strict' even with default value assigned
+ EXPECT_TRUE(!conf.exists("owner", "phone"));
+ EXPECT_TRUE(conf.exists("owner", "name"));
+}
+
+TEST(core, environment) {
+ anna::Environment &env = anna::Environment::instantiate();
+ env.initialize();
+ ASSERT_THROW(env.getValue("WRONG_ENV_VAR", true), anna::RuntimeException); // true => exception if missing
+ ASSERT_THROW(env.getValue(NULL), anna::RuntimeException);
+ env.setVariable("TEST_VAR", "my test var value");
+ EXPECT_EQ(env.getValue("TEST_VAR"), std::string("my test var value"));
+ env.setVariable("TEST_VAR", "my new test var value", false); // false: no overwritting
+ EXPECT_EQ(env.getValue("TEST_VAR"), std::string("my test var value"));
+ env.unsetVariable("TEST_VAR");
+ EXPECT_EQ(env.getValue("TEST_VAR"), std::string(""));
+ EXPECT_EQ(env.getValue("MISSING_ENV_VAR"), std::string(""));
+}
+
+
+int main(int argc, char **argv)
+{
+ testing::InitGoogleTest(&argc, argv);
+ return RUN_ALL_TESTS();