From 26b41da0156149afe9a40cfb0df1325681e10a4b Mon Sep 17 00:00:00 2001 From: codereader Date: Mon, 23 Nov 2020 16:09:25 +0100 Subject: [PATCH] #5430: Add test cases covering GlobalColourSchemeManager().foreachScheme() --- include/icolourscheme.h | 3 +-- radiantcore/settings/ColourSchemeManager.h | 6 +++-- test/ColourSchemes.cpp | 26 ++++++++++++++++++++++ 3 files changed, 31 insertions(+), 4 deletions(-) diff --git a/include/icolourscheme.h b/include/icolourscheme.h index 40d3b3acc2..906f67a4ca 100644 --- a/include/icolourscheme.h +++ b/include/icolourscheme.h @@ -64,11 +64,10 @@ class IColourSchemeManager : // greebo: Returns the named colour, returns <0,0,0> if not found virtual Vector3 getColour(const std::string& colourName) = 0; - virtual void saveScheme(const std::string& name) = 0; virtual void deleteScheme(const std::string& name) = 0; virtual void copyScheme(const std::string& fromName, const std::string& toName) = 0; - // Loads/Saves all the schemes from the registry + // Loads/Saves all the schemes from/to the registry virtual void loadColourSchemes() = 0; virtual void saveColourSchemes() = 0; diff --git a/radiantcore/settings/ColourSchemeManager.h b/radiantcore/settings/ColourSchemeManager.h index 5f23771771..4c44f2fb21 100644 --- a/radiantcore/settings/ColourSchemeManager.h +++ b/radiantcore/settings/ColourSchemeManager.h @@ -28,7 +28,7 @@ class ColourSchemeManager : void setActive(const std::string& name) override; // Returns the requested colour from the currently active scheme - Vector3 getColour(const std::string& colourName); + Vector3 getColour(const std::string& colourName); ColourScheme& getActiveScheme() override; ColourScheme& getColourScheme(const std::string& name) override; @@ -38,7 +38,6 @@ class ColourSchemeManager : void saveColourSchemes(); // Saves the specified scheme into the registry - void saveScheme(const std::string& name) override; void deleteScheme(const std::string& name) override; void copyScheme(const std::string& fromName, const std::string& toName) override; @@ -49,6 +48,9 @@ class ColourSchemeManager : const StringSet& getDependencies() const override; void initialiseModule(const IApplicationContext& ctx) override; void shutdownModule() override; + +private: + void saveScheme(const std::string& name); }; } // namespace diff --git a/test/ColourSchemes.cpp b/test/ColourSchemes.cpp index 54b33e5124..ec69e50b11 100644 --- a/test/ColourSchemes.cpp +++ b/test/ColourSchemes.cpp @@ -438,4 +438,30 @@ TEST_F(ColourSchemeTestWithUserColours, RestoreChangedColourFromRegistry) EXPECT_NE(GlobalColourSchemeManager().getColourScheme(SCHEME_DARKRADIANT_DEFAULT).getColour("default_brush").getColour(), newValue); } +TEST_F(ColourSchemeTestWithUserColours, ForeachScheme) +{ + // Use a vector to record visited nodes to catch duplicate names + std::vector visitedSchemes; + GlobalColourSchemeManager().foreachScheme([&](const std::string& name, colours::IColourScheme&) + { + visitedSchemes.push_back(name); + }); + + std::set expectedSchemeNames = { + SCHEME_DARKRADIANT_DEFAULT, + SCHEME_QE3, + SCHEME_BLACK_AND_GREEN, + SCHEME_MAYA_MAX, + SCHEME_SUPER_MAL, + "MyMaya" // custom theme + }; + + EXPECT_EQ(expectedSchemeNames.size(), visitedSchemes.size()); + + for (auto expectedScheme : expectedSchemeNames) + { + EXPECT_EQ(std::count(visitedSchemes.begin(), visitedSchemes.end(), expectedScheme), 1); + } +} + }