diff --git a/src/tests/api/internals/game/game_test.h b/src/tests/api/internals/game/game_test.h index 2b9e5b2f..b6019010 100644 --- a/src/tests/api/internals/game/game_test.h +++ b/src/tests/api/internals/game/game_test.h @@ -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()); } diff --git a/src/tests/api/internals/sorting/plugin_sort_test.h b/src/tests/api/internals/sorting/plugin_sort_test.h index 6ecb9a1f..bc023fe9 100644 --- a/src/tests/api/internals/sorting/plugin_sort_test.h +++ b/src/tests/api/internals/sorting/plugin_sort_test.h @@ -83,10 +83,8 @@ protected: const std::vector& 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 sorted = SortPlugins(game_, game_.GetLoadOrder()); @@ -200,19 +199,35 @@ TEST_P(PluginSortTest, plugin.SetGroup("B"); game_.GetDatabase().SetPluginUserMetadata(plugin); - std::vector expectedSortedOrder({ - masterFile, - blankDifferentEsm, - blankEsm, - blankMasterDependentEsm, - blankDifferentMasterDependentEsm, - blankEsp, - blankDifferentEsp, - blankMasterDependentEsp, - blankDifferentMasterDependentEsp, - blankPluginDependentEsp, - blankDifferentPluginDependentEsp, - }); + std::vector 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 expectedSortedOrder({ - masterFile, - blankDifferentEsm, - blankDifferentMasterDependentEsm, - blankEsm, - blankMasterDependentEsm, - blankEsp, - blankDifferentEsp, - blankMasterDependentEsp, - blankDifferentMasterDependentEsp, - blankPluginDependentEsp, - blankDifferentPluginDependentEsp, - }); + std::vector 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 expectedSortedOrder({ - masterFile, - blankEsm, - blankDifferentEsm, - blankMasterDependentEsm, - blankDifferentMasterDependentEsm, - blankDifferentEsp, - blankDifferentPluginDependentEsp, - blankEsp, - blankMasterDependentEsp, - blankDifferentMasterDependentEsp, - blankPluginDependentEsp, - }); + std::vector 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 expectedSortedOrder({ - masterFile, - blankEsm, - blankDifferentEsm, - blankMasterDependentEsm, - blankDifferentMasterDependentEsm, - blankDifferentEsp, - blankDifferentPluginDependentEsp, - blankEsp, - blankMasterDependentEsp, - blankDifferentMasterDependentEsp, - blankPluginDependentEsp, - }); + std::vector 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(); diff --git a/src/tests/api/internals/sorting/plugin_sorting_data_test.h b/src/tests/api/internals/sorting/plugin_sorting_data_test.h index 7e861c7d..3d59bbd7 100644 --- a/src/tests/api/internals/sorting/plugin_sorting_data_test.h +++ b/src/tests/api/internals/sorting/plugin_sorting_data_test.h @@ -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()); + } } } } diff --git a/src/tests/common_game_test_fixture.h b/src/tests/common_game_test_fixture.h index 1f067a45..0bba7efa 100644 --- a/src/tests/common_game_test_fixture.h +++ b/src/tests/common_game_test_fixture.h @@ -331,9 +331,13 @@ protected: return { masterFile, blankEsm, + blankDifferentEsm, blankFullEsm, blankMasterDependentEsm, + blankMediumEsm, + blankEsl, blankEsp, + blankDifferentEsp, blankMasterDependentEsp, }; } else {