diff --git a/src/backend/metadata/plugin_cleaning_data.cpp b/src/backend/metadata/plugin_cleaning_data.cpp index 9449281f..2552821b 100644 --- a/src/backend/metadata/plugin_cleaning_data.cpp +++ b/src/backend/metadata/plugin_cleaning_data.cpp @@ -111,6 +111,10 @@ Message PluginCleaningData::AsMessage() const { f = format(translate("%1% found %2%.")) % utility_ % deletedNavmeshes; std::string message = f.str(); + if (info_.empty()) { + return Message(MessageType::warn, message); + } + auto info = info_; for (auto& content : info) { content = MessageContent(message + " " + content.GetText(), content.GetLanguage()); diff --git a/src/tests/backend/metadata/plugin_cleaning_data_test.h b/src/tests/backend/metadata/plugin_cleaning_data_test.h index 71a226ab..2f4ce01a 100644 --- a/src/tests/backend/metadata/plugin_cleaning_data_test.h +++ b/src/tests/backend/metadata/plugin_cleaning_data_test.h @@ -102,6 +102,26 @@ TEST_P(PluginCleaningDataTest, asMessageShouldOutputAllNonZeroCounts) { EXPECT_EQ("cleaner found 2 ITM records and 10 deleted references. info", message.GetContent(LanguageCode::english).GetText()); } +TEST_P(PluginCleaningDataTest, asMessageShouldDistinguishBetweenSingularAndPluralCounts) { + Message message = PluginCleaningData(0x12345678, "cleaner", info_, 1, 2, 3).AsMessage(); + EXPECT_EQ(MessageType::warn, message.GetType()); + EXPECT_EQ("cleaner found 1 ITM record, 2 deleted references and 3 deleted navmeshes. info", message.GetContent(LanguageCode::english).GetText()); + + message = PluginCleaningData(0x12345678, "cleaner", info_, 2, 1, 3).AsMessage(); + EXPECT_EQ(MessageType::warn, message.GetType()); + EXPECT_EQ("cleaner found 2 ITM records, 1 deleted reference and 3 deleted navmeshes. info", message.GetContent(LanguageCode::english).GetText()); + + message = PluginCleaningData(0x12345678, "cleaner", info_, 3, 2, 1).AsMessage(); + EXPECT_EQ(MessageType::warn, message.GetType()); + EXPECT_EQ("cleaner found 3 ITM records, 2 deleted references and 1 deleted navmesh. info", message.GetContent(LanguageCode::english).GetText()); +} + +TEST_P(PluginCleaningDataTest, asMessageShouldReturnAMessageWithCountsButNoInfoStringIfInfoIsAnEmptyString) { + Message message = PluginCleaningData(0x12345678, "cleaner", std::vector(), 1, 2, 3).AsMessage(); + EXPECT_EQ(MessageType::warn, message.GetType()); + EXPECT_EQ("cleaner found 1 ITM record, 2 deleted references and 3 deleted navmeshes.", message.GetContent(LanguageCode::english).GetText()); +} + TEST_P(PluginCleaningDataTest, dirtyInfoShouldBeEqualIfCrcValuesAreEqual) { PluginCleaningData info1(0x12345678, "cleaner1", info_, 2, 10, 30); PluginCleaningData info2(0x12345678, "cleaner2", info_, 4, 20, 60);