mirror of
https://github.com/loot/libloot.git
synced 2026-07-27 14:16:01 -07:00
Added more tests.
New tests are for loot_load_lists, loot_eval_lists and loot_update_masterlist.
This commit is contained in:
@@ -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
@@ -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;
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user