diff --git a/CMakeLists.txt b/CMakeLists.txt
index c6d60e2b..2efc94d4 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -245,7 +245,7 @@ set (LOOT_TESTS_HEADERS "${CMAKE_SOURCE_DIR}/src/tests/base_game_test.h"
"${CMAKE_SOURCE_DIR}/src/tests/backend/helpers/version_test.h"
"${CMAKE_SOURCE_DIR}/src/tests/backend/helpers/yaml_set_helpers_test.h"
"${CMAKE_SOURCE_DIR}/src/tests/backend/metadata/condition_grammar_test.h"
- "${CMAKE_SOURCE_DIR}/src/tests/backend/metadata/test_conditional_metadata.h"
+ "${CMAKE_SOURCE_DIR}/src/tests/backend/metadata/conditional_metadata_test.h"
"${CMAKE_SOURCE_DIR}/src/tests/backend/metadata/test_file.h"
"${CMAKE_SOURCE_DIR}/src/tests/backend/metadata/test_location.h"
"${CMAKE_SOURCE_DIR}/src/tests/backend/metadata/test_message.h"
diff --git a/src/tests/backend/metadata/conditional_metadata_test.h b/src/tests/backend/metadata/conditional_metadata_test.h
new file mode 100644
index 00000000..d718934c
--- /dev/null
+++ b/src/tests/backend/metadata/conditional_metadata_test.h
@@ -0,0 +1,122 @@
+/* LOOT
+
+A load order optimisation tool for Oblivion, Skyrim, Fallout 3 and
+Fallout: New Vegas.
+
+Copyright (C) 2014-2016 WrinklyNinja
+
+This file is part of LOOT.
+
+LOOT is free software: you can redistribute
+it and/or modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation, either version 3 of
+the License, or (at your option) any later version.
+
+LOOT is distributed in the hope that it will
+be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with LOOT. If not, see
+.
+*/
+
+#ifndef LOOT_TEST_BACKEND_METADATA_CONDITIONAL_METADATA
+#define LOOT_TEST_BACKEND_METADATA_CONDITIONAL_METADATA
+
+#include "backend/error.h"
+#include "backend/metadata/conditional_metadata.h"
+#include "tests/base_game_test.h"
+
+namespace loot {
+ namespace test {
+ class ConditionalMetadataTest : public BaseGameTest {
+ protected:
+ ConditionalMetadata conditionalMetadata;
+ };
+
+ // Pass an empty first argument, as it's a prefix for the test instantation,
+ // but we only have the one so no prefix is necessary.
+ INSTANTIATE_TEST_CASE_P(,
+ ConditionalMetadataTest,
+ ::testing::Values(
+ GameSettings::tes4,
+ GameSettings::tes5,
+ GameSettings::fo3,
+ GameSettings::fonv,
+ GameSettings::fo4));
+
+ TEST_P(ConditionalMetadataTest, defaultConstructorShouldSetEmptyConditionString) {
+ EXPECT_TRUE(conditionalMetadata.Condition().empty());
+ }
+
+ TEST_P(ConditionalMetadataTest, stringConstructorShouldSetConditionToGivenString) {
+ std::string condition("condition");
+ conditionalMetadata = ConditionalMetadata(condition);
+
+ EXPECT_EQ(condition, conditionalMetadata.Condition());
+ }
+
+ TEST_P(ConditionalMetadataTest, isConditionalShouldBeFalseForAnEmptyConditionString) {
+ EXPECT_FALSE(conditionalMetadata.IsConditional());
+ }
+
+ TEST_P(ConditionalMetadataTest, isConditionalShouldBeTrueForANonEmptyConditionString) {
+ conditionalMetadata = ConditionalMetadata("condition");
+ EXPECT_TRUE(conditionalMetadata.IsConditional());
+ }
+
+ TEST_P(ConditionalMetadataTest, evalConditionShouldReturnTrueForAnEmptyCondition) {
+ Game game(GetParam());
+ game.SetGamePath(dataPath.parent_path());
+
+ EXPECT_TRUE(conditionalMetadata.EvalCondition(game));
+ }
+
+ TEST_P(ConditionalMetadataTest, evalConditionShouldThrowForAnInvalidCondition) {
+ Game game(GetParam());
+ game.SetGamePath(dataPath.parent_path());
+
+ conditionalMetadata = ConditionalMetadata("condition");
+ EXPECT_THROW(conditionalMetadata.EvalCondition(game), error);
+ }
+
+ TEST_P(ConditionalMetadataTest, evalConditionShouldReturnTrueForAConditionThatIsTrue) {
+ Game game(GetParam());
+ game.SetGamePath(dataPath.parent_path());
+
+ conditionalMetadata = ConditionalMetadata("file(\"" + blankEsm + "\")");
+ EXPECT_TRUE(conditionalMetadata.EvalCondition(game));
+ }
+
+ TEST_P(ConditionalMetadataTest, evalConditionShouldReturnFalseForAConditionThatIsFalse) {
+ Game game(GetParam());
+ game.SetGamePath(dataPath.parent_path());
+
+ conditionalMetadata = ConditionalMetadata("file(\"" + missingEsp + "\")");
+ EXPECT_FALSE(conditionalMetadata.EvalCondition(game));
+ }
+
+ TEST_P(ConditionalMetadataTest, parseConditionShouldNotThrowForAnEmptyCondition) {
+ EXPECT_NO_THROW(conditionalMetadata.ParseCondition());
+ }
+
+ TEST_P(ConditionalMetadataTest, parseConditionShouldThrowForAnInvalidCondition) {
+ conditionalMetadata = ConditionalMetadata("condition");
+ EXPECT_THROW(conditionalMetadata.ParseCondition(), error);
+ }
+
+ TEST_P(ConditionalMetadataTest, parseConditionShouldNotThrowForATrueCondition) {
+ conditionalMetadata = ConditionalMetadata("file(\"" + blankEsm + "\")");
+ EXPECT_NO_THROW(conditionalMetadata.ParseCondition());
+ }
+
+ TEST_P(ConditionalMetadataTest, parseConditionShouldNotThrowForAFalseCondition) {
+ conditionalMetadata = ConditionalMetadata("file(\"" + missingEsp + "\")");
+ EXPECT_NO_THROW(conditionalMetadata.ParseCondition());
+ }
+ }
+}
+
+#endif
diff --git a/src/tests/backend/metadata/test_conditional_metadata.h b/src/tests/backend/metadata/test_conditional_metadata.h
deleted file mode 100644
index e3c9b317..00000000
--- a/src/tests/backend/metadata/test_conditional_metadata.h
+++ /dev/null
@@ -1,90 +0,0 @@
-/* LOOT
-
-A load order optimisation tool for Oblivion, Skyrim, Fallout 3 and
-Fallout: New Vegas.
-
-Copyright (C) 2014-2016 WrinklyNinja
-
-This file is part of LOOT.
-
-LOOT is free software: you can redistribute
-it and/or modify it under the terms of the GNU General Public License
-as published by the Free Software Foundation, either version 3 of
-the License, or (at your option) any later version.
-
-LOOT is distributed in the hope that it will
-be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with LOOT. If not, see
-.
-*/
-
-#ifndef LOOT_TEST_BACKEND_METADATA_CONDITIONAL_METADATA
-#define LOOT_TEST_BACKEND_METADATA_CONDITION_GRAMMAR
-
-#include "backend/error.h"
-#include "backend/metadata/conditional_metadata.h"
-#include "tests/fixtures.h"
-
-namespace loot {
- namespace test {
- class ConditionalMetadataTest : public SkyrimTest {};
-
- TEST_F(ConditionalMetadataTest, ConstructorAndDataAccess) {
- ConditionalMetadata cm;
- EXPECT_EQ("", cm.Condition());
-
- cm = ConditionalMetadata("condition");
- EXPECT_EQ("condition", cm.Condition());
- }
-
- TEST_F(ConditionalMetadataTest, IsConditional) {
- ConditionalMetadata cm;
- EXPECT_FALSE(cm.IsConditional());
-
- cm = ConditionalMetadata("condition");
- EXPECT_TRUE(cm.IsConditional());
- }
-
- TEST_F(ConditionalMetadataTest, EvalCondition) {
- Game game(Game::tes5);
- game.SetGamePath(dataPath.parent_path());
- ASSERT_NO_THROW(game.Init(false, localPath));
-
- ConditionalMetadata cm;
- EXPECT_TRUE(cm.EvalCondition(game));
-
- cm = ConditionalMetadata("condition");
- EXPECT_THROW(cm.EvalCondition(game), error);
-
- cm = ConditionalMetadata("file(\"Blank.esm\")");
- EXPECT_TRUE(cm.EvalCondition(game));
-
- cm = ConditionalMetadata("file(\"Blank.missing.esm\")");
- EXPECT_FALSE(cm.EvalCondition(game));
- }
-
- TEST_F(ConditionalMetadataTest, ParseCondition) {
- ConditionalMetadata cm;
- EXPECT_NO_THROW(cm.ParseCondition());
-
- cm = ConditionalMetadata("condition");
- EXPECT_THROW(cm.ParseCondition(), error);
-
- // Check that invalid regex also throws.
- cm = ConditionalMetadata("regex(\"RagnvaldBook(Farengar(+Ragnvald)?)?\\.esp\")");
- EXPECT_THROW(cm.ParseCondition(), error);
-
- cm = ConditionalMetadata("file(\"Blank.esm\")");
- EXPECT_NO_THROW(cm.ParseCondition());
-
- cm = ConditionalMetadata("file(\"Blank.missing.esm\")");
- EXPECT_NO_THROW(cm.ParseCondition());
- }
- }
-}
-
-#endif
diff --git a/src/tests/main.cpp b/src/tests/main.cpp
index 21e5e72f..2b6621b1 100644
--- a/src/tests/main.cpp
+++ b/src/tests/main.cpp
@@ -51,7 +51,7 @@
#include "backend/helpers/version_test.h"
#include "backend/helpers/yaml_set_helpers_test.h"
#include "backend/metadata/condition_grammar_test.h"
-#include "backend/metadata/test_conditional_metadata.h"
+#include "backend/metadata/conditional_metadata_test.h"
#include "backend/metadata/test_file.h"
#include "backend/metadata/test_location.h"
#include "backend/metadata/test_message.h"