diff options
| author | 2024-12-29 14:43:33 +0100 | |
|---|---|---|
| committer | 2024-12-29 15:18:51 +0100 | |
| commit | 3f56b91ca67c6fa5a407bd5df39808dc742cd693 (patch) | |
| tree | c621b6d558943b00b764cda3e31dcb5c1e73f745 /src/tests | |
| parent | 5c508b351a95f416e4a599f76902b888369de1b4 (diff) | |
| download | OneRoll-3f56b91ca67c6fa5a407bd5df39808dc742cd693.tar.gz OneRoll-3f56b91ca67c6fa5a407bd5df39808dc742cd693.zip | |
Fix #62: endless loop with list of values
Diffstat (limited to 'src/tests')
| -rw-r--r-- | src/tests/dice/tst_dice.cpp | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/src/tests/dice/tst_dice.cpp b/src/tests/dice/tst_dice.cpp index 2de3bcc..d6b9de3 100644 --- a/src/tests/dice/tst_dice.cpp +++ b/src/tests/dice/tst_dice.cpp @@ -24,6 +24,7 @@ #include "diceparser/dicealias.h" #include "diceparser/diceparser.h" +#include "diceparser/diceparserhelper.h" #include "die.h" // node @@ -206,6 +207,9 @@ private slots: void deterministTest(); void deterministTest_data(); + void listValueWithOption(); + void listValueWithOption_data(); + private: std::unique_ptr<Die> m_die; std::unique_ptr<DiceParser> m_diceParser; @@ -1382,6 +1386,74 @@ void TestDice::deterministTest_data() // 1d6;10d10e10k\$1 } +void TestDice::listValueWithOption() +{ + QFETCH(QString, command); + QFETCH(int, results); + QFETCH(Dice::CompareOperator, theOperator); + QFETCH(bool, error); + + auto parsing= m_diceParser->parseLine(command); + if(!error) + QVERIFY2(parsing, "parsing"); + + if(parsing) + m_diceParser->start(); + + if(error) + { + QVERIFY2(!m_diceParser->humanReadableError().isEmpty() || !m_diceParser->humanReadableWarning().isEmpty(), + "no error"); + return; + } + else + { + QVERIFY2(m_diceParser->humanReadableError().isEmpty(), "no error"); + QVERIFY2(m_diceParser->humanReadableWarning().isEmpty(), "no warning"); + } + + auto resultCmd= m_diceParser->scalarResultsFromEachInstruction(); + + auto resultCommand= resultCmd.at(0); + + switch(theOperator) + { + case Dice::CompareOperator::GreaterThan: + QVERIFY(results < resultCommand); + break; + case Dice::CompareOperator::LesserThan: + QVERIFY(results > resultCommand); + break; + case Dice::CompareOperator::LesserOrEqual: + qDebug() << results << " " << resultCommand; + QVERIFY(results >= resultCommand); + break; + default: + break; + } +} + +void TestDice::listValueWithOption_data() +{ + QTest::addColumn<QString>("command"); + QTest::addColumn<int>("results"); + QTest::addColumn<Dice::CompareOperator>("theOperator"); + QTest::addColumn<bool>("error"); + + // explode + QTest::addRow("cmd1") << "[10]e10" << 10 << Dice::CompareOperator::GreaterThan << false; + QTest::addRow("cmd2") << "[10]e10" << std::numeric_limits<int>::max() << Dice::CompareOperator::LesserThan << false; + // add + QTest::addRow("cmd3") << "[10]a10" << 10 << Dice::CompareOperator::GreaterThan << false; + QTest::addRow("cmd4") << "[10]a10" << 20 << Dice::CompareOperator::LesserOrEqual << false; + // reroll + QTest::addRow("cmd3") << "[10]r10" << 0 << Dice::CompareOperator::GreaterThan << false; + QTest::addRow("cmd4") << "[10]r10" << 11 << Dice::CompareOperator::LesserOrEqual << false; + // reroll until + QTest::addRow("cmd5") << "[10]R10" << 10 << Dice::CompareOperator::LesserOrEqual << false; + QTest::addRow("cmd6") << "[10]R1" << 10 << Dice::CompareOperator::LesserOrEqual << false; +} + void TestDice::cleanupTestCase() {} QTEST_MAIN(TestDice) |