#include #include "ProjectSettings.h" #include "Settings.h" class SettingsTestSuite : public CxxTest::TestSuite { public: void test_settings_get_loaded_from_file() { Settings settings; TS_ASSERT(settings.load("data/SettingsTestSuite/settings.xml")); } void test_settings_get_not_loaded_from_file() { Settings settings; TS_ASSERT(!settings.load("data/SettingsTestSuite/wrong_settings.xml")); } void test_settings_get_loaded_value() { TestSettings settings; TS_ASSERT(settings.load("data/SettingsTestSuite/settings.xml")); TS_ASSERT_EQUALS(settings.getBool(), true); TS_ASSERT_EQUALS(settings.getInt(), 42); TS_ASSERT_EQUALS(settings.getFloat(), 3.1416f); TS_ASSERT_EQUALS(settings.getString(), "Hello World!"); } void test_settings_get_default_value_when_not_loaded() { TestSettings settings; TS_ASSERT_EQUALS(settings.getBool(), false); TS_ASSERT_EQUALS(settings.getInt(), -1); TS_ASSERT_EQUALS(settings.getFloat(), 0.01f); TS_ASSERT_EQUALS(settings.getString(), ""); } void test_settings_get_default_value_when_wrongly_loaded() { TestSettings settings; TS_ASSERT(!settings.load("data/SettingsTestSuite/wrong_settings.xml")); TS_ASSERT_EQUALS(settings.getBool(), false); TS_ASSERT_EQUALS(settings.getInt(), -1); TS_ASSERT_EQUALS(settings.getFloat(), 0.01f); TS_ASSERT_EQUALS(settings.getString(), ""); } void test_settings_get_default_value_after_clearing() { TestSettings settings; TS_ASSERT(settings.load("data/SettingsTestSuite/settings.xml")); settings.clear(); TS_ASSERT_EQUALS(settings.getBool(), false); TS_ASSERT_EQUALS(settings.getInt(), -1); TS_ASSERT_EQUALS(settings.getFloat(), 0.01f); TS_ASSERT_EQUALS(settings.getString(), ""); } void test_settings_can_be_set_when_not_loaded() { TestSettings settings; TS_ASSERT(settings.setBool(false)); TS_ASSERT_EQUALS(settings.getBool(), false); TS_ASSERT(settings.setInt(2)); TS_ASSERT_EQUALS(settings.getInt(), 2); TS_ASSERT(settings.setFloat(2.5f)); TS_ASSERT_EQUALS(settings.getFloat(), 2.5f); TS_ASSERT(settings.setString("foobar")); TS_ASSERT_EQUALS(settings.getString(), "foobar"); } void test_settings_can_be_replaced_when_loaded() { TestSettings settings; TS_ASSERT(settings.load("data/SettingsTestSuite/settings.xml")); TS_ASSERT(settings.setBool(false)); TS_ASSERT_EQUALS(settings.getBool(), false); TS_ASSERT(settings.setInt(2)); TS_ASSERT_EQUALS(settings.getInt(), 2); TS_ASSERT(settings.setFloat(2.5f)); TS_ASSERT_EQUALS(settings.getFloat(), 2.5f); TS_ASSERT(settings.setString("foobar")); TS_ASSERT_EQUALS(settings.getString(), "foobar"); } void test_settings_can_be_added_when_loaded() { TestSettings settings; TS_ASSERT(settings.load("data/SettingsTestSuite/settings.xml")); TS_ASSERT_EQUALS(settings.getNewBool(), false); TS_ASSERT(settings.setNewBool(true)); TS_ASSERT_EQUALS(settings.getNewBool(), true); } void test_load_project_settings_from_file() { TS_ASSERT(ProjectSettings::getInstance()->load("data/SettingsTestSuite/settings.xml")); } void test_load_source_path_from_file() { ProjectSettings::getInstance()->load("data/SettingsTestSuite/settings.xml"); TS_ASSERT_EQUALS(ProjectSettings::getInstance()->getSourcePath(), "data"); } void test_load_header_search_paths_from_file() { ProjectSettings::getInstance()->load("data/SettingsTestSuite/settings.xml"); std::vector paths = ProjectSettings::getInstance()->getHeaderSearchPaths(); TS_ASSERT_EQUALS(paths.size(), 2); TS_ASSERT_EQUALS(paths[0], "data/"); TS_ASSERT_EQUALS(paths[1], "src/"); } private: class TestSettings : public Settings { public: bool getBool() const { return getValue("Bool", false); } bool setBool(bool value) { return setValue("Bool", value); } int getInt() const { return getValue("Int", -1); } bool setInt(int value) { return setValue("Int", value); } float getFloat() const { return getValue("Float", 0.01f); } bool setFloat(float value) { return setValue("Float", value); } std::string getString() const { return getValue("String", ""); } bool setString(const std::string& value) { return setValue("String", value); } bool getNewBool() const { return getValue("NewBool", false); } bool setNewBool(bool value) { return setValue("NewBool", value); } }; };