From ad7d0827e0bd47762d8f1660e864ea5d108006d8 Mon Sep 17 00:00:00 2001 From: Renaud G Date: Fri, 19 Jul 2019 01:59:33 +0200 Subject: Add if command test --- tests/tst_dice.cpp | 61 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) (limited to 'tests/tst_dice.cpp') 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({0, 0, 0}) << 1 << "No matching result"; } +void TestDice::ifCommandTest() +{ + QFETCH(QString, cmd); + QFETCH(BooleanCondition::LogicOperator, compare); + QFETCH(QList, 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("cmd"); + QTest::addColumn("compare"); + QTest::addColumn>("level"); + QTest::addColumn("startExperted"); + + QTest::addRow("cmd1") << "2d10i:[>=15]{\"Complete Success: %1 [%2]\"}{i:[>=10]{\"Success with Complications: %1 " + "[%2]\"}{\"Failure: %1 [%2]\"}}" + << BooleanCondition::GreaterOrEqual << QList({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({15, 10, 1}) + << QStringList({"Complete Success:", "Success with Complications:", "Failure:"}); +} + void TestDice::cleanupTestCase() {} QTEST_MAIN(TestDice) -- cgit v1.2.3-70-g09d2