Added more tests.

New tests are for loot_load_lists, loot_eval_lists and
loot_update_masterlist.
This commit is contained in:
Oliver Hamlet
2014-11-01 12:39:14 +00:00
parent 53ba49521c
commit 0c4441cb9c
2 changed files with 73 additions and 1 deletions
+59
View File
@@ -132,4 +132,63 @@ TEST_F(OblivionTest, CreateDbHandlesNullLocalPath) {
TEST(GameHandleDestroyTest, HandledNullInput) {
ASSERT_NO_THROW(loot_destroy_db(NULL));
}
TEST_F(OblivionAPIOperationsTest, UpdateMasterlist) {
bool updated;
EXPECT_EQ(loot_error_invalid_args, loot_update_masterlist(NULL, masterlistPath.string().c_str(), "https://github.com/loot/oblivion.git", "master", &updated));
EXPECT_EQ(loot_error_invalid_args, loot_update_masterlist(db, NULL, "https://github.com/loot/oblivion.git", "master", &updated));
EXPECT_EQ(loot_error_invalid_args, loot_update_masterlist(db, masterlistPath.string().c_str(), NULL, "master", &updated));
EXPECT_EQ(loot_error_invalid_args, loot_update_masterlist(db, masterlistPath.string().c_str(), "https://github.com/loot/oblivion.git", NULL, &updated));
EXPECT_EQ(loot_error_invalid_args, loot_update_masterlist(db, masterlistPath.string().c_str(), "https://github.com/loot/oblivion.git", "master", NULL));
EXPECT_EQ(loot_ok, loot_update_masterlist(db, masterlistPath.string().c_str(), "https://github.com/loot/oblivion.git", "master", &updated));
EXPECT_TRUE(updated);
}
TEST_F(OblivionAPIOperationsTest, LoadLists) {
EXPECT_EQ(loot_error_invalid_args, loot_load_lists(NULL, masterlistPath.string().c_str(), NULL));
EXPECT_EQ(loot_error_invalid_args, loot_load_lists(db, NULL, NULL));
bool updated;
ASSERT_EQ(loot_ok, loot_update_masterlist(db, masterlistPath.string().c_str(), "https://github.com/loot/oblivion.git", "master", &updated));
EXPECT_EQ(loot_error_path_not_found, loot_load_lists(db, masterlistPath.string().c_str(), NULL));
ASSERT_NO_THROW(boost::filesystem::copy(masterlistPath, userlistPath));
EXPECT_EQ(loot_error_path_not_found, loot_load_lists(db, masterlistPath.string().c_str(), userlistPath.string().c_str()));
}
TEST_F(OblivionAPIOperationsTest, EvalLists) {
// No lists loaded.
EXPECT_EQ(loot_ok, loot_eval_lists(db, loot_lang_any));
EXPECT_EQ(loot_ok, loot_eval_lists(db, loot_lang_english));
EXPECT_EQ(loot_ok, loot_eval_lists(db, loot_lang_spanish));
EXPECT_EQ(loot_ok, loot_eval_lists(db, loot_lang_russian));
EXPECT_EQ(loot_ok, loot_eval_lists(db, loot_lang_french));
EXPECT_EQ(loot_ok, loot_eval_lists(db, loot_lang_chinese));
EXPECT_EQ(loot_ok, loot_eval_lists(db, loot_lang_polish));
EXPECT_EQ(loot_ok, loot_eval_lists(db, loot_lang_brazilian_portuguese));
EXPECT_EQ(loot_ok, loot_eval_lists(db, loot_lang_finnish));
EXPECT_EQ(loot_ok, loot_eval_lists(db, loot_lang_german));
EXPECT_EQ(loot_ok, loot_eval_lists(db, loot_lang_danish));
// Invalid args.
EXPECT_EQ(loot_error_invalid_args, loot_eval_lists(NULL, loot_lang_any));
EXPECT_EQ(loot_error_invalid_args, loot_eval_lists(db, (unsigned int)-1));
// Now test different languages with a list loaded.
bool updated;
ASSERT_EQ(loot_ok, loot_update_masterlist(db, masterlistPath.string().c_str(), "https://github.com/loot/oblivion.git", "master", &updated));
ASSERT_EQ(loot_ok, loot_load_lists(db, masterlistPath.string().c_str(), NULL));
EXPECT_EQ(loot_ok, loot_eval_lists(db, loot_lang_any));
EXPECT_EQ(loot_ok, loot_eval_lists(db, loot_lang_english));
EXPECT_EQ(loot_ok, loot_eval_lists(db, loot_lang_spanish));
EXPECT_EQ(loot_ok, loot_eval_lists(db, loot_lang_russian));
EXPECT_EQ(loot_ok, loot_eval_lists(db, loot_lang_french));
EXPECT_EQ(loot_ok, loot_eval_lists(db, loot_lang_chinese));
EXPECT_EQ(loot_ok, loot_eval_lists(db, loot_lang_polish));
EXPECT_EQ(loot_ok, loot_eval_lists(db, loot_lang_brazilian_portuguese));
EXPECT_EQ(loot_ok, loot_eval_lists(db, loot_lang_finnish));
EXPECT_EQ(loot_ok, loot_eval_lists(db, loot_lang_german));
EXPECT_EQ(loot_ok, loot_eval_lists(db, loot_lang_danish));
}
#endif
+14 -1
View File
@@ -39,12 +39,15 @@ along with LOOT. If not, see
class GameTest : public ::testing::Test {
protected:
GameTest(const boost::filesystem::path& gameDataPath, const boost::filesystem::path& gameLocalPath)
: dataPath(gameDataPath), localPath(gameLocalPath), missingPath("./missing"), db(nullptr) {}
: dataPath(gameDataPath), localPath(gameLocalPath), missingPath("./missing"), masterlistPath(localPath / "masterlist.yaml"), userlistPath(localPath / "userlist.yaml"), db(nullptr) {}
inline virtual void SetUp() {
ASSERT_NO_THROW(boost::filesystem::create_directories(localPath));
ASSERT_TRUE(boost::filesystem::exists(localPath));
ASSERT_FALSE(boost::filesystem::exists(masterlistPath));
ASSERT_FALSE(boost::filesystem::exists(userlistPath));
ASSERT_FALSE(boost::filesystem::exists(localPath / ".git"));
ASSERT_FALSE(boost::filesystem::exists(missingPath));
ASSERT_TRUE(boost::filesystem::exists(dataPath / "Blank.esm"));
@@ -90,6 +93,13 @@ protected:
ASSERT_FALSE(boost::filesystem::exists(dataPath / "EmptyFile.esm"));
ASSERT_FALSE(boost::filesystem::exists(dataPath / "NotAPlugin.esm"));
// Masterlist & userlist may have been created during test, so delete them.
ASSERT_NO_THROW(boost::filesystem::remove(masterlistPath));
ASSERT_NO_THROW(boost::filesystem::remove(userlistPath));
// Also remove the ".git" folder if it has been created.
ASSERT_NO_THROW(boost::filesystem::remove_all(localPath / ".git"));
ASSERT_NO_THROW(loot_destroy_db(db));
}
@@ -97,6 +107,9 @@ protected:
const boost::filesystem::path localPath;
const boost::filesystem::path missingPath;
const boost::filesystem::path masterlistPath;
const boost::filesystem::path userlistPath;
loot_db db;
};