aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/tests
diff options
context:
space:
mode:
authorRenaud G <renaud@rolisteam.org>2019-07-19 01:59:33 +0200
committerRenaud G <renaud@rolisteam.org>2019-07-19 01:59:33 +0200
commitad7d0827e0bd47762d8f1660e864ea5d108006d8 (patch)
treedf899f865dbcbfdf413b7bda5418b16f30256eaf /tests
parent5c2fbf1edc7547333739d3d643c4abee5ce6f942 (diff)
downloadOneRoll-ad7d0827e0bd47762d8f1660e864ea5d108006d8.tar.gz
OneRoll-ad7d0827e0bd47762d8f1660e864ea5d108006d8.zip
Add if command test
Diffstat (limited to 'tests')
-rw-r--r--tests/tst_dice.cpp61
1 files changed, 61 insertions, 0 deletions
diff --git a/tests/tst_dice.cpp b/tests/tst_dice.cpp
index 81618ca..58fb605 100644
--- a/tests/tst_dice.cpp
+++ b/tests/tst_dice.cpp
@@ -105,6 +105,9 @@ private slots:
void ifTest();
void ifTest_data();
+ void ifCommandTest();
+ void ifCommandTest_data();
+
void paintTest();
void paintTest_data();
@@ -933,6 +936,64 @@ void TestDice::occurenceTest_data()
QTest::addRow("cmd2") << QVector<int>({0, 0, 0}) << 1 << "No matching result";
}
+void TestDice::ifCommandTest()
+{
+ QFETCH(QString, cmd);
+ QFETCH(BooleanCondition::LogicOperator, compare);
+ QFETCH(QList<int>, level);
+ QFETCH(QStringList, startExperted);
+
+ bool test= m_diceParser->parseLine(cmd);
+ QVERIFY2(test, cmd.toStdString().c_str());
+ m_diceParser->start();
+ auto results= m_diceParser->getLastIntegerResults();
+ auto strResult= m_diceParser->getStringResult();
+
+ QCOMPARE(results.size(), 1);
+ QCOMPARE(strResult.size(), 1);
+
+ auto result= results.first();
+ auto it= std::find_if(level.begin(), level.end(), [compare, result](int level) {
+ if(compare == BooleanCondition::GreaterOrEqual)
+ return result >= level;
+ else if(compare == BooleanCondition::GreaterThan)
+ return result > level;
+ else if(compare == BooleanCondition::LesserThan)
+ return result < level;
+ else if(compare == BooleanCondition::LesserOrEqual)
+ return result <= level;
+ else if(compare == BooleanCondition::Equal)
+ return qFuzzyCompare(result, level);
+ else // if(compare == BooleanCondition::Different)
+ return !qFuzzyCompare(result, level);
+ });
+
+ auto index= std::distance(level.begin(), it);
+
+ auto strResultExpected= startExperted[index];
+ auto resultText= strResult.first();
+
+ QVERIFY2(resultText.startsWith(strResultExpected), "string result does not fit the expectation");
+}
+
+void TestDice::ifCommandTest_data()
+{
+ QTest::addColumn<QString>("cmd");
+ QTest::addColumn<BooleanCondition::LogicOperator>("compare");
+ QTest::addColumn<QList<int>>("level");
+ QTest::addColumn<QStringList>("startExperted");
+
+ QTest::addRow("cmd1") << "2d10i:[>=15]{\"Complete Success: %1 [%2]\"}{i:[>=10]{\"Success with Complications: %1 "
+ "[%2]\"}{\"Failure: %1 [%2]\"}}"
+ << BooleanCondition::GreaterOrEqual << QList<int>({15, 10, 1})
+ << QStringList({"Complete Success:", "Success with Complications:", "Failure:"});
+ QTest::addRow("cmd2")
+ << "2d10;$1i:[>=15]{\"Complete Success: %1 [%2]\"}{$1i:[>=10]{\"Success with Complications: %1 "
+ "[%2]\"}{\"Failure: %1 [%2]\"}}"
+ << BooleanCondition::GreaterOrEqual << QList<int>({15, 10, 1})
+ << QStringList({"Complete Success:", "Success with Complications:", "Failure:"});
+}
+
void TestDice::cleanupTestCase() {}
QTEST_MAIN(TestDice)