diff --git a/cxx/src/tests/api/internals/metadata/condition_evaluator_test.h b/cxx/src/tests/api/internals/metadata/condition_evaluator_test.h
deleted file mode 100644
index deab40c3..00000000
--- a/cxx/src/tests/api/internals/metadata/condition_evaluator_test.h
+++ /dev/null
@@ -1,267 +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_TESTS_API_INTERNALS_METADATA_CONDITION_EVALUATOR_TEST
-#define LOOT_TESTS_API_INTERNALS_METADATA_CONDITION_EVALUATOR_TEST
-
-#include "api/metadata/condition_evaluator.h"
-#include "loot/exception/condition_syntax_error.h"
-#include "tests/common_game_test_fixture.h"
-
-namespace loot {
-namespace test {
-class ConditionEvaluatorTest : public CommonGameTestFixture,
- public testing::WithParamInterface {
-protected:
- ConditionEvaluatorTest() :
- CommonGameTestFixture(GetParam()),
- info_(std::vector({
- MessageContent("info"),
- })),
- nonAsciiEsm(u8"non\u00C1scii.esm"),
- nonAsciiNestedFile(u8"non\u00C1scii/test.txt"),
- game_(GetParam(), gamePath, localPath),
- evaluator_(game_.GetType(), game_.DataPath()) {
- // Make sure the plugin with a non-ASCII filename exists.
- std::filesystem::copy_file(dataPath / blankEsm,
- dataPath / std::filesystem::u8path(nonAsciiEsm));
-
- touch(dataPath / std::filesystem::u8path(nonAsciiNestedFile));
-
- loadInstalledPlugins();
- evaluator_.RefreshLoadedPluginsState(game_.GetLoadedPlugins());
- evaluator_.RefreshActivePluginsState(
- game_.GetLoadOrderHandler().GetActivePlugins());
- }
-
- std::string IntToHexString(const uint32_t value) {
- std::stringstream stream;
- stream << std::hex << value;
- return stream.str();
- }
-
- void loadInstalledPlugins() {
- auto plugins = GetInstalledPlugins();
-
- plugins.push_back(std::filesystem::u8path(nonAsciiEsm));
-
- game_.LoadCurrentLoadOrderState();
- game_.LoadPlugins(plugins, true);
- }
-
- const std::vector info_;
- const std::string nonAsciiEsm;
- const std::string nonAsciiNestedFile;
-
- Game game_;
- ConditionEvaluator evaluator_;
-};
-
-// 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_SUITE_P(,
- ConditionEvaluatorTest,
- ::testing::Values(GameType::tes3,
- GameType::tes4,
- GameType::tes5,
- GameType::fo3,
- GameType::fonv,
- GameType::fo4,
- GameType::tes5se,
- GameType::openmw));
-
-TEST_P(ConditionEvaluatorTest,
- evaluateShouldReturnTrueForAnEmptyConditionString) {
- EXPECT_TRUE(evaluator_.Evaluate(""));
-}
-
-TEST_P(ConditionEvaluatorTest, evaluateShouldThrowForAnInvalidConditionString) {
- EXPECT_THROW(evaluator_.Evaluate("condition"), ConditionSyntaxError);
-}
-
-TEST_P(ConditionEvaluatorTest,
- evaluateShouldReturnTrueForAConditionThatIsTrue) {
- EXPECT_TRUE(evaluator_.Evaluate("file(\"" + blankEsm + "\")"));
-}
-
-TEST_P(ConditionEvaluatorTest, evaluateShouldUseAllGivenDataPaths) {
- ASSERT_FALSE(
- evaluator_.Evaluate("file(\"" + localPath.filename().u8string() + "\")"));
-
- evaluator_.ClearConditionCache();
- evaluator_.SetAdditionalDataPaths({localPath.parent_path()});
-
- EXPECT_TRUE(
- evaluator_.Evaluate("file(\"" + localPath.filename().u8string() + "\")"));
-}
-
-TEST_P(ConditionEvaluatorTest,
- evaluateFileConditionShouldReturnTrueForANonAsciiFileThatExists) {
- EXPECT_TRUE(evaluator_.Evaluate("file(\"" + nonAsciiEsm + "\")"));
-}
-
-TEST_P(ConditionEvaluatorTest,
- evaluateChecksumConditionShouldBeAbleToGetTheCrcOfANonAsciiFile) {
- std::string condition("checksum(\"" + nonAsciiEsm + "\", " +
- IntToHexString(blankEsmCrc) + ")");
- EXPECT_TRUE(evaluator_.Evaluate(condition));
-}
-
-TEST_P(ConditionEvaluatorTest,
- evaluateVersionConditionShouldBeAbleToGetTheVersionOfANonAsciiFile) {
- std::string condition("version(\"" + nonAsciiEsm + "\", \"5.0\", ==)");
- EXPECT_TRUE(evaluator_.Evaluate(condition));
-}
-
-TEST_P(ConditionEvaluatorTest,
- evaluateActiveConditionShouldReturnTrueForAnActivePlugin) {
- std::string condition("active(\"" + blankEsm + "\")");
- EXPECT_TRUE(evaluator_.Evaluate(condition));
-}
-
-TEST_P(ConditionEvaluatorTest,
- evaluateRegexFileConditionShouldReturnTrueForANonAsciiFileThatExists) {
- std::string condition(u8"file(\"non\u00C1scii.*\\.esm\")");
- EXPECT_TRUE(evaluator_.Evaluate(condition));
-}
-
-TEST_P(
- ConditionEvaluatorTest,
- evaluateRegexFileConditionShouldReturnTrueForANonAsciiNestedFileThatExists) {
- std::string condition(u8"file(\"non\u00C1scii/.+\\.txt\")");
- EXPECT_TRUE(evaluator_.Evaluate(condition));
-}
-
-TEST_P(ConditionEvaluatorTest,
- evaluateShouldReturnFalseForAConditionThatIsFalse) {
- EXPECT_FALSE(evaluator_.Evaluate("file(\"" + missingEsp + "\")"));
-}
-
-TEST_P(ConditionEvaluatorTest, evaluateAllShouldEvaluateAllMetadataConditions) {
- PluginMetadata plugin(nonAsciiEsm);
- plugin.SetGroup("group1");
-
- File file1(blankEsp);
- File file2(blankDifferentEsm, "", "file(\"" + missingEsp + "\")");
- plugin.SetLoadAfterFiles({file1, file2});
- plugin.SetRequirements({file1, file2});
- plugin.SetIncompatibilities({file1, file2});
-
- Message message1(MessageType::say, "content");
- Message message2(MessageType::say, "content", "file(\"" + missingEsp + "\")");
- plugin.SetMessages({message1, message2});
-
- Tag tag1("Relev");
- Tag tag2("Relev", true, "file(\"" + missingEsp + "\")");
- plugin.SetTags({tag1, tag2});
-
- PluginCleaningData info1(blankEsmCrc, "utility", info_, 1, 2, 3);
- PluginCleaningData info2(0xDEADBEEF, "utility", info_, 1, 2, 3);
- plugin.SetDirtyInfo({info1, info2});
- plugin.SetCleanInfo({info1, info2});
-
- EXPECT_NO_THROW(plugin = evaluator_.EvaluateAll(plugin));
-
- std::vector expectedFiles({file1});
- EXPECT_EQ("group1", plugin.GetGroup().value());
- EXPECT_EQ(expectedFiles, plugin.GetLoadAfterFiles());
- EXPECT_EQ(expectedFiles, plugin.GetRequirements());
- EXPECT_EQ(expectedFiles, plugin.GetIncompatibilities());
- EXPECT_EQ(std::vector({message1}), plugin.GetMessages());
- EXPECT_EQ(std::vector({tag1}), plugin.GetTags());
- EXPECT_EQ(std::vector({info1}), plugin.GetDirtyInfo());
- EXPECT_EQ(std::vector({info1}), plugin.GetCleanInfo());
-}
-
-TEST_P(ConditionEvaluatorTest, evaluateAllShouldPreserveGroupExplicitness) {
- PluginMetadata plugin(blankEsm);
-
- EXPECT_NO_THROW(plugin = evaluator_.EvaluateAll(plugin));
- EXPECT_FALSE(plugin.GetGroup());
-}
-
-TEST_P(ConditionEvaluatorTest,
- refreshActivePluginsStateShouldClearTheConditionCache) {
- std::string condition("active(\"" + blankEsm + "\")");
- ASSERT_TRUE(evaluator_.Evaluate(condition));
-
- evaluator_.RefreshActivePluginsState({blankEsp});
-
- EXPECT_FALSE(evaluator_.Evaluate(condition));
-}
-
-TEST_P(
- ConditionEvaluatorTest,
- refreshActivePluginsStateShouldClearTheActivePluginsCacheIfGivenAnEmptyVector) {
- std::string condition("active(\"" + blankEsm + "\")");
- ASSERT_TRUE(evaluator_.Evaluate(condition));
-
- evaluator_.RefreshActivePluginsState({});
-
- EXPECT_FALSE(evaluator_.Evaluate(condition));
-}
-
-TEST_P(ConditionEvaluatorTest,
- refreshLoadedPluginsStateShouldClearTheConditionCache) {
- std::string condition("version(\"" + blankEsm + "\", \"5.0\", ==)");
-
- ASSERT_TRUE(evaluator_.Evaluate(condition));
-
- auto plugins = game_.GetLoadedPlugins();
- auto pluginsIt =
- std::find_if(plugins.cbegin(), plugins.cend(), [&](auto plugin) {
- return plugin->GetName() == blankEsm;
- });
- plugins.erase(pluginsIt);
- evaluator_.RefreshLoadedPluginsState(plugins);
-
- EXPECT_FALSE(evaluator_.Evaluate(condition));
-}
-
-TEST_P(
- ConditionEvaluatorTest,
- refreshLoadedPluginsStateShouldClearTheVersionsCacheIfGivenAnEmptyVector) {
- std::string condition("version(\"" + blankEsm + "\", \"5.0\", ==)");
-
- ASSERT_TRUE(evaluator_.Evaluate(condition));
-
- evaluator_.RefreshLoadedPluginsState({});
-
- EXPECT_FALSE(evaluator_.Evaluate(condition));
-}
-
-TEST_P(ConditionEvaluatorTest,
- setAdditionalDataPathsShouldAcceptAnEmptyVector) {
- EXPECT_NO_THROW(evaluator_.SetAdditionalDataPaths({}));
-}
-
-TEST_P(ConditionEvaluatorTest,
- setAdditionalDataPathsShouldAcceptANonEmptyVector) {
- EXPECT_NO_THROW(evaluator_.SetAdditionalDataPaths(
- {std::filesystem::u8path("a"), std::filesystem::u8path("b")}));
-}
-}
-}
-
-#endif