Remove obsolete DatabaseInterface methods

This commit is contained in:
Oliver Hamlet
2017-02-06 18:03:17 +00:00
parent 1ce48392fe
commit 972298599a
4 changed files with 4 additions and 275 deletions
-41
View File
@@ -224,47 +224,6 @@ public:
*/
virtual void DiscardAllUserMetadata() = 0;
/**
* @deprecated
* @brief Outputs the Bash Tags suggested for addition and removal by the
* database for the given plugin.
* @param plugin
* The filename of the plugin to look up Bash Tag suggestions for.
* @returns Bash Tag data for the plugin.
*/
virtual PluginTags GetPluginTags(const std::string& plugin) const = 0;
/**
* @deprecated
* @brief Outputs the messages associated with the given plugin in the
* database.
* @param plugin
* The filename of the plugin to look up messages for.
* @param language
* The language to use when choosing which message content strings
* to return.
* @returns A vector of messages associated with the specified plugin. Empty
* if the plugin has no messages associated with it.
*/
virtual std::vector<SimpleMessage> GetPluginMessages(const std::string& plugin,
const LanguageCode language) const = 0;
/**
* @deprecated
* @brief Determines the database's knowledge of a plugin's cleanliness.
* @details Outputs whether the plugin should be cleaned or not, or if
* no data is available. The mechanism used to determine that
* a plugin should not be cleaned is not very reliable, and is
* likely to fail if `EvalLists()` was called with a
* language other than English. As such, some plugins that should
* not be cleaned may have the `PluginCleanliness::unknown`
* code outputted.
* @param plugin
* The plugin to look up the cleanliness state for.
* @returns A plugin cleanliness code.
*/
virtual PluginCleanliness GetPluginCleanliness(const std::string& plugin) const = 0;
/** @} */
};
}
+4 -74
View File
@@ -111,6 +111,10 @@ MasterlistInfo ApiDatabase::GetMasterlistRevision(const std::string& masterlistP
return Masterlist::GetInfo(masterlistPath, getShortID);
}
//////////////////////////
// DB Access Functions
//////////////////////////
std::set<std::string> ApiDatabase::GetKnownBashTags() const {
auto masterlistTags = game_.GetMasterlist().BashTags();
auto userlistTags = game_.GetUserlist().BashTags();
@@ -161,80 +165,6 @@ void ApiDatabase::DiscardAllUserMetadata() {
game_.GetUserlist().Clear();
}
//////////////////////////
// DB Access Functions
//////////////////////////
PluginTags ApiDatabase::GetPluginTags(const std::string& plugin) const {
PluginTags tags;
PluginMetadata pluginMetadata = game_.GetMasterlist().FindPlugin(PluginMetadata(plugin));
for (const auto &tag : pluginMetadata.Tags()) {
if (tag.IsAddition())
tags.added.insert(tag.Name());
else
tags.removed.insert(tag.Name());
}
pluginMetadata = game_.GetUserlist().FindPlugin(PluginMetadata(plugin));
tags.userlist_modified = !pluginMetadata.Tags().empty();
for (const auto &tag : pluginMetadata.Tags()) {
if (tag.IsAddition())
tags.added.insert(tag.Name());
else
tags.removed.insert(tag.Name());
}
return tags;
}
std::vector<SimpleMessage> ApiDatabase::GetPluginMessages(const std::string& plugin,
const LanguageCode language) const {
std::vector<SimpleMessage> messages;
PluginMetadata pluginMetadata = game_.GetMasterlist().FindPlugin(PluginMetadata(plugin));
for (const auto& message : pluginMetadata.SimpleMessages(language)) {
messages.push_back(message);
}
pluginMetadata = game_.GetUserlist().FindPlugin(PluginMetadata(plugin));
for (const auto& message : pluginMetadata.SimpleMessages(language)) {
messages.push_back(message);
}
return messages;
}
PluginCleanliness ApiDatabase::GetPluginCleanliness(const std::string& plugin) const {
// Is there any dirty info? Testing for applicability happens in loot_eval_lists().
if (!game_.GetMasterlist().FindPlugin(PluginMetadata(plugin)).DirtyInfo().empty()
|| !game_.GetUserlist().FindPlugin(PluginMetadata(plugin)).DirtyInfo().empty()) {
return PluginCleanliness::dirty;
}
// Is there a message beginning with the substring "Do not clean."?
// This isn't a very reliable system, because if the lists have been evaluated in some language
// other than English, the strings will be in different languages (and the API can't tell what they'd be)
// and the strings may be non-standard and begin with something other than "Do not clean." anyway.
std::vector<Message> messages(game_.GetMasterlist().FindPlugin(PluginMetadata(plugin)).Messages());
for (const auto& message : messages) {
if (boost::starts_with(message.GetContent(LanguageCode::english).GetText(), "Do not clean")) {
return PluginCleanliness::do_not_clean;
}
}
messages = game_.GetUserlist().FindPlugin(PluginMetadata(plugin)).Messages();
for (const auto& message : messages) {
if (boost::starts_with(message.GetContent(LanguageCode::english).GetText(), "Do not clean")) {
return PluginCleanliness::do_not_clean;
}
}
return PluginCleanliness::unknown;
}
// Writes a minimal masterlist that only contains mods that have Bash Tag suggestions,
// and/or dirty messages, plus the Tag suggestions and/or messages themselves and their
// conditions, in order to create the Wrye Bash taglist. outputFile is the path to use
-7
View File
@@ -72,13 +72,6 @@ struct ApiDatabase : public DatabaseInterface {
void DiscardPluginUserMetadata(const std::string& plugin);
void DiscardAllUserMetadata();
PluginTags GetPluginTags(const std::string& plugin) const;
std::vector<SimpleMessage> GetPluginMessages(const std::string& plugin,
const LanguageCode language) const;
PluginCleanliness GetPluginCleanliness(const std::string& plugin) const;
private:
Game& game_;
@@ -551,159 +551,6 @@ TEST_P(DatabaseInterfaceTest, discardAllUserMetadataShouldDiscardAllUserMetadata
EXPECT_EQ(expectedTags, tags);
}
TEST_P(DatabaseInterfaceTest, getPluginTagsShouldReturnOkAndOutputEmptyNonModifiedArraysIfAPluginWithoutTagsIsQueried) {
ASSERT_NO_THROW(GenerateMasterlist());
ASSERT_NO_THROW(db_->LoadLists(masterlistPath.string(), ""));
PluginTags tags;
EXPECT_NO_THROW(tags = db_->GetPluginTags(blankEsp));
EXPECT_TRUE(tags.added.empty());
EXPECT_TRUE(tags.removed.empty());
EXPECT_FALSE(tags.userlist_modified);
}
TEST_P(DatabaseInterfaceTest, getPluginTagsShouldReturnOkAndNonEmptyNonModifiedArraysIfAPluginWithTagsIsQueried) {
ASSERT_NO_THROW(GenerateMasterlist());
ASSERT_NO_THROW(db_->LoadLists(masterlistPath.string(), ""));
PluginTags tags;
EXPECT_NO_THROW(tags = db_->GetPluginTags(blankEsm));
EXPECT_EQ(std::set<std::string>({
"Actors.ACBS",
"Actors.AIData",
}), tags.added);
EXPECT_EQ(std::set<std::string>({
"C.Water",
}), tags.removed);
EXPECT_FALSE(tags.userlist_modified);
}
TEST_P(DatabaseInterfaceTest, getPluginTagsShouldReturnOkAndNonEmptyModifiedArraysIfAPluginWithTagsIsQueriedAndMetadataWasAlsoLoadedFromAUserlist) {
ASSERT_NO_THROW(GenerateMasterlist());
ASSERT_NO_THROW(db_->LoadLists(masterlistPath.string(), masterlistPath.string()));
PluginTags tags;
EXPECT_NO_THROW(tags = db_->GetPluginTags(blankEsm));
EXPECT_EQ(std::set<std::string>({
"Actors.ACBS",
"Actors.AIData",
}), tags.added);
EXPECT_EQ(std::set<std::string>({
"C.Water",
}), tags.removed);
EXPECT_TRUE(tags.userlist_modified);
}
TEST_P(DatabaseInterfaceTest, getPluginTagsShouldOutputTheCorrectBashTagsForPluginsWhenMakingConsecutiveCalls) {
ASSERT_NO_THROW(GenerateMasterlist());
ASSERT_NO_THROW(db_->LoadLists(masterlistPath.string(), ""));
PluginTags tags;
EXPECT_NO_THROW(tags = db_->GetPluginTags(blankEsm));
EXPECT_EQ(std::set<std::string>({
"Actors.ACBS",
"Actors.AIData",
}), tags.added);
EXPECT_EQ(std::set<std::string>({
"C.Water",
}), tags.removed);
EXPECT_FALSE(tags.userlist_modified);
EXPECT_NO_THROW(tags = db_->GetPluginTags(blankEsp));
EXPECT_TRUE(tags.added.empty());
EXPECT_TRUE(tags.removed.empty());
EXPECT_FALSE(tags.userlist_modified);
}
TEST_P(DatabaseInterfaceTest, getPluginMessagesShouldReturnOkAndOutputANullArrayIfAPluginWithNoMessagesIsQueried) {
std::vector<SimpleMessage> messages;
EXPECT_NO_THROW(messages = db_->GetPluginMessages(blankEsp, LanguageCode::english));
EXPECT_TRUE(messages.empty());
}
TEST_P(DatabaseInterfaceTest, getPluginMessagesShouldReturnOkAndOutputANoteIfAPluginWithANoteMessageIsQueried) {
ASSERT_NO_THROW(GenerateMasterlist());
ASSERT_NO_THROW(db_->LoadLists(masterlistPath.string(), ""));
std::vector<SimpleMessage> messages;
EXPECT_NO_THROW(messages = db_->GetPluginMessages(blankEsm, LanguageCode::english));
ASSERT_EQ(1, messages.size());
EXPECT_EQ(MessageType::say, messages[0].type);
EXPECT_EQ(LanguageCode::english, messages[0].language);
EXPECT_EQ(noteMessage, messages[0].text);
}
TEST_P(DatabaseInterfaceTest, getPluginMessagesShouldReturnOkAndOutputAWarningIfAPluginWithAWarningMessageIsQueried) {
ASSERT_NO_THROW(GenerateMasterlist());
ASSERT_NO_THROW(db_->LoadLists(masterlistPath.string(), ""));
std::vector<SimpleMessage> messages;
EXPECT_NO_THROW(messages = db_->GetPluginMessages(blankDifferentEsm, LanguageCode::english));
ASSERT_EQ(1, messages.size());
EXPECT_EQ(MessageType::warn, messages[0].type);
EXPECT_EQ(LanguageCode::english, messages[0].language);
EXPECT_EQ(warningMessage, messages[0].text);
}
TEST_P(DatabaseInterfaceTest, getPluginMessagesShouldReturnOkAndOutputAnErrorIfAPluginWithAnErrorMessageIsQueried) {
ASSERT_NO_THROW(GenerateMasterlist());
ASSERT_NO_THROW(db_->LoadLists(masterlistPath.string(), ""));
std::vector<SimpleMessage> messages;
EXPECT_NO_THROW(messages = db_->GetPluginMessages(blankDifferentEsp, LanguageCode::english));
ASSERT_EQ(1, messages.size());
EXPECT_EQ(MessageType::error, messages[0].type);
EXPECT_EQ(LanguageCode::english, messages[0].language);
EXPECT_EQ(errorMessage, messages[0].text);
}
TEST_P(DatabaseInterfaceTest, getPluginMessagesShouldReturnOkAndOutputMultipleMessagesIfAPluginWithMultipleMessagesIsQueried) {
ASSERT_NO_THROW(GenerateMasterlist());
ASSERT_NO_THROW(db_->LoadLists(masterlistPath.string(), ""));
std::vector<SimpleMessage> messages;
EXPECT_NO_THROW(messages = db_->GetPluginMessages(blankDifferentMasterDependentEsp, LanguageCode::english));
ASSERT_EQ(3, messages.size());
EXPECT_EQ(MessageType::say, messages[0].type);
EXPECT_EQ(LanguageCode::english, messages[0].language);
EXPECT_EQ(noteMessage, messages[0].text);
EXPECT_EQ(MessageType::warn, messages[1].type);
EXPECT_EQ(LanguageCode::english, messages[1].language);
EXPECT_EQ(warningMessage, messages[1].text);
EXPECT_EQ(MessageType::error, messages[2].type);
EXPECT_EQ(LanguageCode::english, messages[2].language);
EXPECT_EQ(errorMessage, messages[2].text);
}
TEST_P(DatabaseInterfaceTest, getPluginCleanlinessShouldReturnOkAndOutputUnknownForAPluginWithNoDirtyInfo) {
PluginCleanliness cleanliness;
EXPECT_NO_THROW(cleanliness = db_->GetPluginCleanliness(blankEsp));
EXPECT_EQ(PluginCleanliness::unknown, cleanliness);
}
TEST_P(DatabaseInterfaceTest, getPluginCleanlinessShouldReturnOkAndOutputYesForAPluginWithDirtyInfo) {
ASSERT_NO_THROW(GenerateMasterlist());
ASSERT_NO_THROW(db_->LoadLists(masterlistPath.string(), ""));
PluginCleanliness cleanliness;
EXPECT_NO_THROW(cleanliness = db_->GetPluginCleanliness(blankDifferentEsm));
EXPECT_EQ(PluginCleanliness::dirty, cleanliness);
}
TEST_P(DatabaseInterfaceTest, getPluginCleanlinessShouldReturnOkAndOutputNoForAPluginWithADoNotCleanMessage) {
ASSERT_NO_THROW(GenerateMasterlist());
ASSERT_NO_THROW(db_->LoadLists(masterlistPath.string(), ""));
PluginCleanliness cleanliness;
EXPECT_NO_THROW(cleanliness = db_->GetPluginCleanliness(blankEsm));
EXPECT_EQ(PluginCleanliness::do_not_clean, cleanliness);
}
TEST_P(DatabaseInterfaceTest, writeMinimalListShouldReturnOkAndWriteToFileIfArgumentsGivenAreValid) {
EXPECT_NO_THROW(db_->WriteMinimalList(minimalOutputPath_.string(), false));
EXPECT_TRUE(boost::filesystem::exists(minimalOutputPath_));