Extend sorting tests to cover Starfield

This commit is contained in:
Oliver Hamlet
2024-08-22 18:13:12 +01:00
parent 9470e4ee86
commit 575455b08c
4 changed files with 138 additions and 68 deletions
+2 -2
View File
@@ -203,7 +203,7 @@ TEST_P(
EXPECT_NO_THROW(loadInstalledPlugins(game, true));
if (GetParam() == GameType::starfield) {
EXPECT_EQ(6, game.GetCache().GetPlugins().size());
EXPECT_EQ(10, game.GetCache().GetPlugins().size());
} else {
EXPECT_EQ(11, game.GetCache().GetPlugins().size());
}
@@ -251,7 +251,7 @@ TEST_P(GameTest,
EXPECT_NO_THROW(loadInstalledPlugins(game, false));
if (GetParam() == GameType::starfield) {
EXPECT_EQ(6, game.GetCache().GetPlugins().size());
EXPECT_EQ(10, game.GetCache().GetPlugins().size());
} else {
EXPECT_EQ(11, game.GetCache().GetPlugins().size());
}
@@ -83,10 +83,8 @@ protected:
const std::vector<std::string>& loadOrder = {}) {
const auto plugin = GetPlugin(name);
return PluginSortingData(plugin,
PluginMetadata(),
PluginMetadata(),
loadOrder);
return PluginSortingData(
plugin, PluginMetadata(), PluginMetadata(), loadOrder);
}
plugingraph::TestPlugin* GetPlugin(const std::string& name) {
@@ -115,7 +113,8 @@ INSTANTIATE_TEST_SUITE_P(,
PluginSortTest,
::testing::Values(GameType::tes3,
GameType::tes4,
GameType::fo4));
GameType::fo4,
GameType::starfield));
TEST_P(PluginSortTest, sortingWithNoLoadedPluginsShouldReturnAnEmptyList) {
std::vector<std::string> sorted = SortPlugins(game_, game_.GetLoadOrder());
@@ -200,19 +199,35 @@ TEST_P(PluginSortTest,
plugin.SetGroup("B");
game_.GetDatabase().SetPluginUserMetadata(plugin);
std::vector<std::string> expectedSortedOrder({
masterFile,
blankDifferentEsm,
blankEsm,
blankMasterDependentEsm,
blankDifferentMasterDependentEsm,
blankEsp,
blankDifferentEsp,
blankMasterDependentEsp,
blankDifferentMasterDependentEsp,
blankPluginDependentEsp,
blankDifferentPluginDependentEsp,
});
std::vector<std::string> expectedSortedOrder;
if (GetParam() == GameType::starfield) {
expectedSortedOrder = {
masterFile,
blankDifferentEsm,
blankEsm,
blankFullEsm,
blankMasterDependentEsm,
blankMediumEsm,
blankEsl,
blankEsp,
blankDifferentEsp,
blankMasterDependentEsp,
};
} else {
expectedSortedOrder = {
masterFile,
blankDifferentEsm,
blankEsm,
blankMasterDependentEsm,
blankDifferentMasterDependentEsm,
blankEsp,
blankDifferentEsp,
blankMasterDependentEsp,
blankDifferentMasterDependentEsp,
blankPluginDependentEsp,
blankDifferentPluginDependentEsp,
};
}
if (GetParam() == GameType::fo4 || GetParam() == GameType::tes5se) {
expectedSortedOrder.insert(expectedSortedOrder.begin() + 5, blankEsl);
@@ -254,19 +269,35 @@ TEST_P(PluginSortTest,
plugin.SetGroup("A");
game_.GetDatabase().SetPluginUserMetadata(plugin);
std::vector<std::string> expectedSortedOrder({
masterFile,
blankDifferentEsm,
blankDifferentMasterDependentEsm,
blankEsm,
blankMasterDependentEsm,
blankEsp,
blankDifferentEsp,
blankMasterDependentEsp,
blankDifferentMasterDependentEsp,
blankPluginDependentEsp,
blankDifferentPluginDependentEsp,
});
std::vector<std::string> expectedSortedOrder;
if (GetParam() == GameType::starfield) {
expectedSortedOrder = {
masterFile,
blankFullEsm,
blankMasterDependentEsm,
blankMediumEsm,
blankEsl,
blankDifferentEsm,
blankEsm,
blankEsp,
blankDifferentEsp,
blankMasterDependentEsp,
};
} else {
expectedSortedOrder = {
masterFile,
blankDifferentEsm,
blankDifferentMasterDependentEsm,
blankEsm,
blankMasterDependentEsm,
blankEsp,
blankDifferentEsp,
blankMasterDependentEsp,
blankDifferentMasterDependentEsp,
blankPluginDependentEsp,
blankDifferentPluginDependentEsp,
};
}
if (GetParam() == GameType::fo4 || GetParam() == GameType::tes5se) {
expectedSortedOrder.insert(expectedSortedOrder.begin() + 1, blankEsl);
@@ -279,7 +310,7 @@ TEST_P(PluginSortTest,
TEST_P(PluginSortTest, sortingShouldThrowIfAPluginHasAGroupThatDoesNotExist) {
ASSERT_NO_THROW(loadInstalledPlugins(game_, false));
PluginMetadata plugin(blankDifferentEsm);
PluginMetadata plugin(blankEsm);
plugin.SetGroup("group1");
game_.GetDatabase().SetPluginUserMetadata(plugin);
@@ -296,19 +327,35 @@ TEST_P(PluginSortTest,
});
game_.GetDatabase().SetPluginUserMetadata(plugin);
std::vector<std::string> expectedSortedOrder({
masterFile,
blankEsm,
blankDifferentEsm,
blankMasterDependentEsm,
blankDifferentMasterDependentEsm,
blankDifferentEsp,
blankDifferentPluginDependentEsp,
blankEsp,
blankMasterDependentEsp,
blankDifferentMasterDependentEsp,
blankPluginDependentEsp,
});
std::vector<std::string> expectedSortedOrder;
if (GetParam() == GameType::starfield) {
expectedSortedOrder = {
masterFile,
blankEsm,
blankDifferentEsm,
blankFullEsm,
blankMasterDependentEsm,
blankMediumEsm,
blankEsl,
blankDifferentEsp,
blankEsp,
blankMasterDependentEsp,
};
} else {
expectedSortedOrder = {
masterFile,
blankEsm,
blankDifferentEsm,
blankMasterDependentEsm,
blankDifferentMasterDependentEsm,
blankDifferentEsp,
blankDifferentPluginDependentEsp,
blankEsp,
blankMasterDependentEsp,
blankDifferentMasterDependentEsp,
blankPluginDependentEsp,
};
}
if (GetParam() == GameType::fo4 || GetParam() == GameType::tes5se) {
expectedSortedOrder.insert(expectedSortedOrder.begin() + 5, blankEsl);
@@ -328,19 +375,35 @@ TEST_P(PluginSortTest,
});
game_.GetDatabase().SetPluginUserMetadata(plugin);
std::vector<std::string> expectedSortedOrder({
masterFile,
blankEsm,
blankDifferentEsm,
blankMasterDependentEsm,
blankDifferentMasterDependentEsm,
blankDifferentEsp,
blankDifferentPluginDependentEsp,
blankEsp,
blankMasterDependentEsp,
blankDifferentMasterDependentEsp,
blankPluginDependentEsp,
});
std::vector<std::string> expectedSortedOrder;
if (GetParam() == GameType::starfield) {
expectedSortedOrder = {
masterFile,
blankEsm,
blankDifferentEsm,
blankFullEsm,
blankMasterDependentEsm,
blankMediumEsm,
blankEsl,
blankDifferentEsp,
blankEsp,
blankMasterDependentEsp,
};
} else {
expectedSortedOrder = {
masterFile,
blankEsm,
blankDifferentEsm,
blankMasterDependentEsm,
blankDifferentMasterDependentEsm,
blankDifferentEsp,
blankDifferentPluginDependentEsp,
blankEsp,
blankMasterDependentEsp,
blankDifferentMasterDependentEsp,
blankPluginDependentEsp,
};
}
if (GetParam() == GameType::fo4 || GetParam() == GameType::tes5se) {
expectedSortedOrder.insert(expectedSortedOrder.begin() + 5, blankEsl);
@@ -384,7 +447,10 @@ TEST_P(PluginSortTest,
TEST_P(PluginSortTest, sortingShouldThrowIfACyclicInteractionIsEncountered) {
ASSERT_NO_THROW(loadInstalledPlugins(game_, false));
PluginMetadata plugin(blankEsm);
const auto pluginName =
GetParam() == GameType::starfield ? blankFullEsm : blankEsm;
PluginMetadata plugin(pluginName);
plugin.SetLoadAfterFiles({File(blankMasterDependentEsm)});
game_.GetDatabase().SetPluginUserMetadata(plugin);
@@ -539,11 +605,6 @@ TEST_P(PluginSortTest,
CreatePluginSortingData(esm->GetName()),
CreatePluginSortingData(esp->GetName())};
EXPECT_THROW(
SortPlugins(
std::move(pluginsSortingData), {Group()}, {}, {esp->GetName()}),
CyclicInteractionError);
try {
SortPlugins(std::move(pluginsSortingData), {Group()}, {}, {esp->GetName()});
FAIL();
@@ -73,7 +73,8 @@ INSTANTIATE_TEST_SUITE_P(,
PluginSortingDataTest,
::testing::Values(GameType::tes3,
GameType::tes4,
GameType::fo4));
GameType::fo4,
GameType::starfield));
TEST_P(PluginSortingDataTest, lightFlaggedEspFilesShouldNotBeTreatedAsMasters) {
if (GetParam() == GameType::fo4 || GetParam() == GameType::tes5se) {
@@ -125,7 +126,11 @@ TEST_P(PluginSortingDataTest,
PluginMetadata(),
PluginMetadata(),
getLoadOrder());
EXPECT_EQ(4, plugin.GetOverrideRecordCount());
if (GetParam() == GameType::starfield) {
EXPECT_EQ(1, plugin.GetOverrideRecordCount());
} else {
EXPECT_EQ(4, plugin.GetOverrideRecordCount());
}
}
}
}
+4
View File
@@ -331,9 +331,13 @@ protected:
return {
masterFile,
blankEsm,
blankDifferentEsm,
blankFullEsm,
blankMasterDependentEsm,
blankMediumEsm,
blankEsl,
blankEsp,
blankDifferentEsp,
blankMasterDependentEsp,
};
} else {