aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/src/tests/dice/tst_dice.cpp
diff options
context:
space:
mode:
authorRenaud Guezennec <renaud@rolisteam.org>2024-12-29 14:43:33 +0100
committerRenaud Guezennec <renaud@rolisteam.org>2024-12-29 15:18:51 +0100
commit3f56b91ca67c6fa5a407bd5df39808dc742cd693 (patch)
treec621b6d558943b00b764cda3e31dcb5c1e73f745 /src/tests/dice/tst_dice.cpp
parent5c508b351a95f416e4a599f76902b888369de1b4 (diff)
downloadOneRoll-3f56b91ca67c6fa5a407bd5df39808dc742cd693.tar.gz
OneRoll-3f56b91ca67c6fa5a407bd5df39808dc742cd693.zip
Fix #62: endless loop with list of values
Diffstat (limited to 'src/tests/dice/tst_dice.cpp')
-rw-r--r--src/tests/dice/tst_dice.cpp72
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)