diff --git a/src/tests/backend/metadata/condition_grammar_test.h b/src/tests/backend/metadata/condition_grammar_test.h index c2ae7398..81a2ab5c 100644 --- a/src/tests/backend/metadata/condition_grammar_test.h +++ b/src/tests/backend/metadata/condition_grammar_test.h @@ -289,6 +289,21 @@ namespace loot { EXPECT_FALSE(result); } + TEST_P(ConditionGrammarTest, aVersionEqualityConditionForAPluginWithNoVersionShouldEvaluateToFalse) { + ASSERT_NO_THROW(game.LoadPlugins(true)); + + Grammar grammar(&game); + std::string condition("version(\"" + blankEsp + "\", \"6.0\", ==)"); + + success = boost::spirit::qi::phrase_parse(std::cbegin(condition), + std::cend(condition), + grammar, + skipper, + result); + EXPECT_TRUE(success); + EXPECT_FALSE(result); + } + TEST_P(ConditionGrammarTest, aVersionInequalityConditionWithAVersionThatDoesNotEqualTheActualPluginVersionShouldEvaluateToTrue) { ASSERT_NO_THROW(game.LoadPlugins(true)); @@ -319,6 +334,21 @@ namespace loot { EXPECT_FALSE(result); } + TEST_P(ConditionGrammarTest, aVersionInequalityConditionForAPluginWithNoVersionShouldEvaluateToTrue) { + ASSERT_NO_THROW(game.LoadPlugins(true)); + + Grammar grammar(&game); + std::string condition("version(\"" + blankEsp + "\", \"6.0\", !=)"); + + success = boost::spirit::qi::phrase_parse(std::cbegin(condition), + std::cend(condition), + grammar, + skipper, + result); + EXPECT_TRUE(success); + EXPECT_TRUE(result); + } + TEST_P(ConditionGrammarTest, aVersionLessThanConditionWithAnActualPluginVersionLessThanTheGivenVersionShouldEvaluateToTrue) { ASSERT_NO_THROW(game.LoadPlugins(true)); @@ -349,6 +379,21 @@ namespace loot { EXPECT_FALSE(result); } + TEST_P(ConditionGrammarTest, aVersionLessThanConditionForAPluginWithNoVersionShouldEvaluateToTrue) { + ASSERT_NO_THROW(game.LoadPlugins(true)); + + Grammar grammar(&game); + std::string condition("version(\"" + blankEsp + "\", \"5.0\", <)"); + + success = boost::spirit::qi::phrase_parse(std::cbegin(condition), + std::cend(condition), + grammar, + skipper, + result); + EXPECT_TRUE(success); + EXPECT_TRUE(result); + } + TEST_P(ConditionGrammarTest, aVersionGreaterThanConditionWithAnActualPluginVersionGreaterThanTheGivenVersionShouldEvaluateToTrue) { ASSERT_NO_THROW(game.LoadPlugins(true)); @@ -379,6 +424,21 @@ namespace loot { EXPECT_FALSE(result); } + TEST_P(ConditionGrammarTest, aVersionGreaterThanConditionForAPluginWithNoVersionShouldEvaluateToFalse) { + ASSERT_NO_THROW(game.LoadPlugins(true)); + + Grammar grammar(&game); + std::string condition("version(\"" + blankEsp + "\", \"5.0\", >)"); + + success = boost::spirit::qi::phrase_parse(std::cbegin(condition), + std::cend(condition), + grammar, + skipper, + result); + EXPECT_TRUE(success); + EXPECT_FALSE(result); + } + TEST_P(ConditionGrammarTest, aVersionLessThanOrEqualToConditionWithAnActualPluginVersionEqualToTheGivenVersionShouldEvaluateToTrue) { ASSERT_NO_THROW(game.LoadPlugins(true)); @@ -409,6 +469,21 @@ namespace loot { EXPECT_FALSE(result); } + TEST_P(ConditionGrammarTest, aVersionLessThanOrEqualToConditionForAPluginWithNoVersionShouldEvaluateToTrue) { + ASSERT_NO_THROW(game.LoadPlugins(true)); + + Grammar grammar(&game); + std::string condition("version(\"" + blankEsp + "\", \"5.0\", <=)"); + + success = boost::spirit::qi::phrase_parse(std::cbegin(condition), + std::cend(condition), + grammar, + skipper, + result); + EXPECT_TRUE(success); + EXPECT_TRUE(result); + } + TEST_P(ConditionGrammarTest, aVersionGreaterThanOrEqualToConditionWithAnActualPluginVersionEqualToTheGivenVersionShouldEvaluateToTrue) { ASSERT_NO_THROW(game.Init(false, localPath)); ASSERT_NO_THROW(game.LoadPlugins(true)); @@ -440,6 +515,21 @@ namespace loot { EXPECT_FALSE(result); } + TEST_P(ConditionGrammarTest, aVersionGreaterThanOrEqualToConditionForAPluginWithNoVersionShouldEvaluateToFalse) { + ASSERT_NO_THROW(game.LoadPlugins(true)); + + Grammar grammar(&game); + std::string condition("version(\"" + blankEsp + "\", \"5.0\", >=)"); + + success = boost::spirit::qi::phrase_parse(std::cbegin(condition), + std::cend(condition), + grammar, + skipper, + result); + EXPECT_TRUE(success); + EXPECT_FALSE(result); + } + TEST_P(ConditionGrammarTest, anActiveConditionWithAPluginThatIsActiveShouldEvaluateToTrue) { ASSERT_NO_THROW(game.Init(false, localPath));