Skip to content

Commit

Permalink
#5430: Add some tests covering the scheme loading from the user's col…
Browse files Browse the repository at this point in the history
…ours.xml file
  • Loading branch information
codereader committed Nov 23, 2020
1 parent b5e11cb commit 9e5e4e4
Show file tree
Hide file tree
Showing 2 changed files with 289 additions and 11 deletions.
99 changes: 88 additions & 11 deletions test/ColourSchemes.cpp
Expand Up @@ -19,22 +19,49 @@ namespace
const char* const SCHEME_SUPER_MAL = "Super Mal";
}

using ColourSchemeTest = RadiantTest;
class ColourSchemeTest :
public RadiantTest
{
protected:
void copySchemeFileToSettingsPath(const std::string& schemeFile)
{
fs::path schemeFilePath = _context.getTestResourcePath();
schemeFilePath /= "settings/";
schemeFilePath /= schemeFile;

fs::path targetFile = _context.getSettingsPath();
targetFile /= "colours.xml";

fs::remove(targetFile);
fs::copy(schemeFilePath, targetFile);
}
};

class ColourSchemeTestWithIncompleteScheme :
public ColourSchemeTest
{
public:
void SetUp() override
{
fs::path incompleteFile = _context.getTestResourcePath();
incompleteFile /= "settings/colours_incomplete.xml";
copySchemeFileToSettingsPath("colours_incomplete.xml");

fs::path targetFile = _context.getSettingsPath();
targetFile /= "colours.xml";
RadiantTest::SetUp();
}
};

fs::remove(targetFile);
fs::copy(incompleteFile, targetFile);
class ColourSchemeTestWithUserColours :
public ColourSchemeTest
{
protected:
fs::path _userDefinedSchemePath;
public:
void SetUp() override
{
// Store the value locally, the test case wants to have it
_userDefinedSchemePath = _context.getTestResourcePath();
_userDefinedSchemePath /= "settings/colours_userdefined.xml";

copySchemeFileToSettingsPath("colours_userdefined.xml");

RadiantTest::SetUp();
}
Expand Down Expand Up @@ -95,9 +122,9 @@ TEST_F(ColourSchemeTestWithEmptySettings, LoadDefaultSchemes)
{
auto defaultSchemeNames = {
SCHEME_DARKRADIANT_DEFAULT,
"QE3Radiant Original",
"Black & Green",
"Maya/Max/Lightwave Emulation",
SCHEME_QE3,
SCHEME_BLACK_AND_GREEN,
SCHEME_MAYA_MAX,
SCHEME_SUPER_MAL
};

Expand Down Expand Up @@ -241,8 +268,58 @@ TEST_F(ColourSchemeTestWithIncompleteScheme, SchemeUpgrade)
EXPECT_TRUE(fs::exists(defaultColoursFile)) << "Could not find factory colours file: " << defaultColoursFile;

auto defaultScheme = loadSchemeFromXml(SCHEME_SUPER_MAL, defaultColoursFile);

EXPECT_EQ(defaultScheme[missingColour], activeScheme.getColour(missingColour).getColour());

// When saving, the scheme should now be complete
GlobalColourSchemeManager().saveColourSchemes();
GlobalRegistry().saveToDisk();

std::string savedColoursFile = _context.getSettingsPath() + "colours.xml";
EXPECT_TRUE(fs::exists(savedColoursFile)) << "Could not find saved colours file: " << savedColoursFile;

auto savedScheme = loadSchemeFromXml(SCHEME_SUPER_MAL, savedColoursFile);
EXPECT_EQ(savedScheme.size(), defaultScheme.size());

// All colour keys must be present
for (const auto& pair : savedScheme)
{
EXPECT_EQ(savedScheme.count(pair.first), 1);
}
}

TEST_F(ColourSchemeTestWithUserColours, RestoreActiveSchemeFromUserFile)
{
auto& activeScheme = GlobalColourSchemeManager().getActiveScheme();

// The "MyMaya" custom theme is tagged as active in the file
EXPECT_EQ(activeScheme.getName(), "MyMaya");
}

TEST_F(ColourSchemeTestWithUserColours, RestoreAllSchemesFromUserFile)
{
// Compare the schemes that we know are stored in the file
// The colours_userdefined.xml file specifically changes the "camera_background"
// colour in the SCHEME_BLACK_AND_GREEN theme, plus it adds a custom theme named MyMaya
auto storedSchemeNames = {
SCHEME_DARKRADIANT_DEFAULT,
SCHEME_QE3,
SCHEME_BLACK_AND_GREEN,
SCHEME_MAYA_MAX,
SCHEME_SUPER_MAL,
"MyMaya" // custom theme
};

for (auto schemeName : storedSchemeNames)
{
auto& loadedScheme = GlobalColourSchemeManager().getColourScheme(schemeName);
auto storedScheme = loadSchemeFromXml(schemeName, _userDefinedSchemePath.string());

// Check colour values
for (const auto& pair : storedScheme)
{
EXPECT_EQ(loadedScheme.getColour(pair.first).getColour(), pair.second);
}
}
}

}
201 changes: 201 additions & 0 deletions test/resources/settings/colours_userdefined.xml
@@ -0,0 +1,201 @@
<?xml version="1.0"?>
<colourschemes>
<colourscheme name="Black &amp; Green" version="1.0" readonly="1">
<colour name="active_view_name" value="0.7 0.7 0"/>
<colour name="axis_x" value="1 0 0"/>
<colour name="axis_y" value="0 1 0"/>
<colour name="axis_z" value="0 0 1"/>
<colour name="brush_size_info" value="0.65 0 0"/>
<colour name="brush_vertices" value="0 1 0"/>
<colour name="camera_background" value="0 0 0"/>
<colour name="camera_icon" value="0 0 1"/>
<colour name="clipper" value="0 0 1"/>
<colour name="default_brush" value="1 1 1"/>
<colour name="default_entity" value="1 0.5 0"/>
<colour name="drag_selection" value="1 0 0"/>
<colour name="grid_background" value="0 0 0"/>
<colour name="grid_block" value="0 0 1"/>
<colour name="grid_major" value="0.3 0.5 0.5"/>
<colour name="grid_minor" value="0.2 0.2 0.2"/>
<colour name="grid_text" value="1 1 1"/>
<colour name="light_startend_deselected" value="0 1 1"/>
<colour name="light_startend_selected" value="0 0 1"/>
<colour name="light_vertex_deselected" value="0 1 0"/>
<colour name="light_vertex_normal" value="1 0 0"/>
<colour name="light_vertex_selected" value="0 0 1"/>
<colour name="light_volumes" value="0 1 0"/>
<colour name="patch_vertex_corner" value="1 0 1"/>
<colour name="patch_vertex_inside" value="0 1 0"/>
<colour name="selected_brush" value="1 0 0"/>
<colour name="selected_brush_camera" value="1 0 0"/>
<colour name="selected_group_items" value="0 0.4 0.8"/>
<colour name="texture_background" value="0.25 0.25 0.25"/>
<colour name="workzone" value="1 0 0"/>
<colour name="xyview_crosshairs" value="0.2 0.9 0.2"/>
</colourscheme>
<colourscheme name="DarkRadiant Default" version="1.0" readonly="1">
<colour name="active_view_name" value="0.5 0 0.75"/>
<colour name="axis_x" value="1 0 0"/>
<colour name="axis_y" value="0 1 0"/>
<colour name="axis_z" value="0 0 1"/>
<colour name="brush_size_info" value="0.65 0 0"/>
<colour name="brush_vertices" value="0 1 0"/>
<colour name="camera_background" value="0.25 0.25 0.25"/>
<colour name="camera_icon" value="0 0 1"/>
<colour name="clipper" value="0 0 1"/>
<colour name="default_brush" value="0 0 0"/>
<colour name="default_entity" value="1 0.5 0"/>
<colour name="drag_selection" value="0.65 0 0"/>
<colour name="grid_background" value="1 1 1"/>
<colour name="grid_block" value="0 0 1"/>
<colour name="grid_major" value="0.5 0.5 0.5"/>
<colour name="grid_minor" value="0.75 0.75 0.75"/>
<colour name="grid_text" value="0 0 0"/>
<colour name="light_startend_deselected" value="0 1 1"/>
<colour name="light_startend_selected" value="0 0 1"/>
<colour name="light_vertex_deselected" value="0 1 0"/>
<colour name="light_vertex_normal" value="1 0 0"/>
<colour name="light_vertex_selected" value="0 0 1"/>
<colour name="light_volumes" value="0 1 0"/>
<colour name="patch_vertex_corner" value="1 0 1"/>
<colour name="patch_vertex_inside" value="0 1 0"/>
<colour name="selected_brush" value="1 0 0"/>
<colour name="selected_brush_camera" value="1 0 0"/>
<colour name="selected_group_items" value="0 0.4 0.8"/>
<colour name="texture_background" value="0.25 0.25 0.25"/>
<colour name="workzone" value="1 0 0"/>
<colour name="xyview_crosshairs" value="0.2 0.9 0.2"/>
</colourscheme>
<colourscheme name="Maya/Max/Lightwave Emulation" version="1.0" readonly="1">
<colour name="active_view_name" value="0.5 0 0.75"/>
<colour name="axis_x" value="1 0 0"/>
<colour name="axis_y" value="0 1 0"/>
<colour name="axis_z" value="0 0 1"/>
<colour name="brush_size_info" value="0.65 0 0"/>
<colour name="brush_vertices" value="0 1 0"/>
<colour name="camera_background" value="0.25 0.25 0.25"/>
<colour name="camera_icon" value="0 0 1"/>
<colour name="clipper" value="0 0 1"/>
<colour name="default_brush" value="0 0 0"/>
<colour name="default_entity" value="0 0.4 0"/>
<colour name="drag_selection" value="0.65 0 0"/>
<colour name="grid_background" value="0.77 0.77 0.77"/>
<colour name="grid_block" value="1 1 1"/>
<colour name="grid_major" value="0.89 0.89 0.89"/>
<colour name="grid_minor" value="0.83 0.83 0.83"/>
<colour name="grid_text" value="0 0 0"/>
<colour name="light_startend_deselected" value="0 1 1"/>
<colour name="light_startend_selected" value="0 0 1"/>
<colour name="light_vertex_deselected" value="0 1 0"/>
<colour name="light_vertex_normal" value="1 0 0"/>
<colour name="light_vertex_selected" value="0 0 1"/>
<colour name="light_volumes" value="0 0.6 0"/>
<colour name="patch_vertex_corner" value="1 0 1"/>
<colour name="patch_vertex_inside" value="0 1 0"/>
<colour name="selected_brush" value="1 0 0"/>
<colour name="selected_brush_camera" value="1 0 0"/>
<colour name="selected_group_items" value="0 0.4 0.8"/>
<colour name="texture_background" value="0.25 0.25 0.25"/>
<colour name="workzone" value="1 0 0"/>
<colour name="xyview_crosshairs" value="0.2 0.9 0.2"/>
</colourscheme>
<colourscheme name="MyMaya" version="1.0" active="1">
<colour name="active_view_name" value="0.5 0 0.75"/>
<colour name="axis_x" value="1 0 0"/>
<colour name="axis_y" value="0 1 0"/>
<colour name="axis_z" value="0 0 1"/>
<colour name="brush_size_info" value="0.65 0 0"/>
<colour name="brush_vertices" value="0 1 0"/>
<colour name="camera_background" value="0.25 0.25 0.25"/>
<colour name="camera_icon" value="0 0 1"/>
<colour name="clipper" value="0 0 1"/>
<colour name="default_brush" value="0 0 0"/>
<colour name="default_entity" value="0 0.4 0"/>
<colour name="drag_selection" value="0.65 0 0"/>
<colour name="grid_background" value="0.635294 0.635294 0.635294"/>
<colour name="grid_block" value="1 1 1"/>
<colour name="grid_major" value="0.439216 0.439216 0.439216"/>
<colour name="grid_minor" value="0.521569 0.521569 0.521569"/>
<colour name="grid_text" value="0 0 0"/>
<colour name="light_startend_deselected" value="0 1 1"/>
<colour name="light_startend_selected" value="0 0 1"/>
<colour name="light_vertex_deselected" value="0 1 0"/>
<colour name="light_vertex_normal" value="1 0 0"/>
<colour name="light_vertex_selected" value="0 0 1"/>
<colour name="light_volumes" value="0 0.6 0"/>
<colour name="patch_vertex_corner" value="1 0 1"/>
<colour name="patch_vertex_inside" value="0 1 0"/>
<colour name="selected_brush" value="1 0 0"/>
<colour name="selected_brush_camera" value="1 0 0"/>
<colour name="selected_group_items" value="1 0.627451 0.12549"/>
<colour name="texture_background" value="0.25 0.25 0.25"/>
<colour name="workzone" value="1 0 0"/>
<colour name="xyview_crosshairs" value="0.2 0.9 0.2"/>
</colourscheme>
<colourscheme name="QE3Radiant Original" version="1.0" readonly="1">
<colour name="active_view_name" value="0.5 0 0.75"/>
<colour name="axis_x" value="1 0 0"/>
<colour name="axis_y" value="0 1 0"/>
<colour name="axis_z" value="0 0 1"/>
<colour name="brush_size_info" value="0.65 0 0"/>
<colour name="brush_vertices" value="0 1 0"/>
<colour name="camera_background" value="0.25 0.25 0.25"/>
<colour name="camera_icon" value="0 0 1"/>
<colour name="clipper" value="0 0 1"/>
<colour name="default_brush" value="0 0 0"/>
<colour name="default_entity" value="1 0.5 0"/>
<colour name="drag_selection" value="0.65 0 0"/>
<colour name="grid_background" value="1 1 1"/>
<colour name="grid_block" value="0 0 1"/>
<colour name="grid_major" value="0.5 0.5 0.5"/>
<colour name="grid_minor" value="1 1 1"/>
<colour name="grid_text" value="0 0 0"/>
<colour name="light_startend_deselected" value="0 1 1"/>
<colour name="light_startend_selected" value="0 0 1"/>
<colour name="light_vertex_deselected" value="0 1 0"/>
<colour name="light_vertex_normal" value="1 0 0"/>
<colour name="light_vertex_selected" value="0 0 1"/>
<colour name="light_volumes" value="0 1 0"/>
<colour name="patch_vertex_corner" value="1 0 1"/>
<colour name="patch_vertex_inside" value="0 1 0"/>
<colour name="selected_brush" value="1 0 0"/>
<colour name="selected_brush_camera" value="1 0 0"/>
<colour name="selected_group_items" value="0 0.4 0.8"/>
<colour name="texture_background" value="0.25 0.25 0.25"/>
<colour name="workzone" value="1 0 0"/>
<colour name="xyview_crosshairs" value="0.2 0.9 0.2"/>
</colourscheme>
<colourscheme name="Super Mal" version="1.0" readonly="1">
<colour name="active_view_name" value="0.498039 0 0.737255"/>
<colour name="axis_x" value="1 0 0"/>
<colour name="axis_y" value="0 1 0"/>
<colour name="axis_z" value="0 0 1"/>
<colour name="brush_size_info" value="1 0.898039 0.898039"/>
<colour name="brush_vertices" value="0 1 0"/>
<colour name="camera_background" value="0.25 0.25 0.25"/>
<colour name="camera_icon" value="0 0 1"/>
<colour name="clipper" value="0 0 1"/>
<colour name="default_brush" value="0 0 0"/>
<colour name="default_entity" value="1 0.5 0"/>
<colour name="drag_selection" value="1 0 0"/>
<colour name="grid_background" value="0.34902 0.34902 0.34902"/>
<colour name="grid_block" value="0 0 1"/>
<colour name="grid_major" value="0.498039 0.499992 0.499992"/>
<colour name="grid_minor" value="0.388235 0.388235 0.388235"/>
<colour name="grid_text" value="0 0 0"/>
<colour name="light_startend_deselected" value="0 1 1"/>
<colour name="light_startend_selected" value="0 0 1"/>
<colour name="light_vertex_deselected" value="0 1 0"/>
<colour name="light_vertex_normal" value="1 0 0"/>
<colour name="light_vertex_selected" value="0 0 1"/>
<colour name="light_volumes" value="0 1 0"/>
<colour name="patch_vertex_corner" value="1 0 1"/>
<colour name="patch_vertex_inside" value="0 1 0"/>
<colour name="selected_brush" value="1 0.898039 0.898039"/>
<colour name="selected_brush_camera" value="1 0.898039 0.898039"/>
<colour name="selected_group_items" value="0 0.4 0.8"/>
<colour name="texture_background" value="0 0 0"/>
<colour name="workzone" value="1 0 0"/>
<colour name="xyview_crosshairs" value="0.2 0.9 0.2"/>
</colourscheme>
</colourschemes>

0 comments on commit 9e5e4e4

Please sign in to comment.