From c987c9b501083b1995958d62c3e07fb236bc9410 Mon Sep 17 00:00:00 2001 From: Renaud G Date: Wed, 15 Apr 2020 22:42:55 +0200 Subject: Dice: fix #77 from github --- tests/dice/tst_dice.cpp | 69 ++++++++++++++++++++++++++++++++++--------------- 1 file changed, 48 insertions(+), 21 deletions(-) (limited to 'tests') diff --git a/tests/dice/tst_dice.cpp b/tests/dice/tst_dice.cpp index 7675615..cc156dc 100644 --- a/tests/dice/tst_dice.cpp +++ b/tests/dice/tst_dice.cpp @@ -83,16 +83,23 @@ void makeResultExplode(DiceResult& result, const QVector& values) result.insertResult(die); } -ValidatorList* makeValidator(int number, BooleanCondition::LogicOperator op) +ValidatorList* makeValidator(QVector number, BooleanCondition::LogicOperator op, + QVector vector= QVector()) { - BooleanCondition* validator= new BooleanCondition(); - NumberNode* node= new NumberNode(); - node->setNumber(number); - validator->setValueNode(node); - validator->setOperator(op); - ValidatorList* list= new ValidatorList(); - list->setValidators(QList() << validator); + QList validList; + for(auto num : number) + { + BooleanCondition* validator= new BooleanCondition(); + NumberNode* node= new NumberNode(); + node->setNumber(num); + validator->setValueNode(node); + validator->setOperator(op); + validList.append(validator); + } + list->setValidators(validList); + if(!vector.isEmpty()) + list->setOperationList(vector); return list; } @@ -247,6 +254,7 @@ void TestDice::validatorListTest_data() QTest::addRow("cmd1") << "2d[6..6]c6" << 2; QTest::addRow("cmd2") << "[6,2]c[:>6&%2=0]" << 2; + QTest::addRow("cmd3") << "[6,1,1]c[=6|=1]" << 3; } void TestDice::diceRollD10Test() @@ -688,14 +696,29 @@ void TestDice::sortTest_data() void TestDice::countTest() { QFETCH(QVector, values); - QFETCH(int, condition); + QFETCH(QVector, condition); QFETCH(int, score); QFETCH(QVector, subvalues); + QFETCH(int, boolOp); TestNode node; CountExecuteNode countN; - auto validator= makeValidator(condition, BooleanCondition::GreaterThan); + QVector vector; + + bool first= true; + for(auto i : condition) + { + if(!first) + { + first= !first; + continue; + } + + vector.push_back(ValidatorList::OR); + } + + auto validator= makeValidator(condition, static_cast(boolOp), vector); countN.setValidatorList(validator); DiceResult result; @@ -714,13 +737,17 @@ void TestDice::countTest() void TestDice::countTest_data() { QTest::addColumn>("values"); - QTest::addColumn("condition"); + QTest::addColumn>("condition"); QTest::addColumn("score"); QTest::addColumn>("subvalues"); - - QTest::addRow("cmd1") << QVector({10, 9, 2}) << 3 << 2 << QVector(); - QTest::addRow("cmd2") << QVector({1, 2, 3}) << 3 << 0 << QVector(); - QTest::addRow("cmd3") << QVector({10, 7, 4}) << 7 << 3 << QVector({10, 10, 2}); + QTest::addColumn("boolOp"); + + // clang-format off + QTest::addRow("cmd1") << QVector({10, 9, 2}) << QVector({3}) << 2 << QVector() << static_cast(BooleanCondition::GreaterThan); + QTest::addRow("cmd2") << QVector({1, 2, 3}) << QVector({3}) << 0 << QVector() << static_cast(BooleanCondition::GreaterThan); + QTest::addRow("cmd3") << QVector({10, 7, 4}) << QVector({7}) << 3 << QVector({10, 10, 2}) << static_cast(BooleanCondition::GreaterThan); + QTest::addRow("cmd4") << QVector({1, 1, 6}) << QVector({1,6}) << 3 << QVector() << static_cast(BooleanCondition::Equal); + // clang-format on } void TestDice::rerollTest() @@ -736,7 +763,7 @@ void TestDice::rerollTest() makeResult(result, values); node.setResult(&result); - auto validator= makeValidator(condition, BooleanCondition::GreaterThan); + auto validator= makeValidator(QVector() << condition, BooleanCondition::GreaterThan); reroll.setValidatorList(validator); node.setNextNode(&reroll); @@ -780,7 +807,7 @@ void TestDice::explodeTest() makeResult(result, values); node.setResult(&result); - auto validator= makeValidator(condition, BooleanCondition::Equal); + auto validator= makeValidator(QVector() << condition, BooleanCondition::Equal); explode.setValidatorList(validator); node.setNextNode(&explode); @@ -824,7 +851,7 @@ void TestDice::rerollUntilTest() makeResult(result, values, QVector(), 0); node.setResult(&result); - auto validator= makeValidator(condition, BooleanCondition::Equal); + auto validator= makeValidator(QVector() << condition, BooleanCondition::Equal); reroll.setValidatorList(validator); node.setNextNode(&reroll); @@ -866,7 +893,7 @@ void TestDice::rerollAddTest() makeResult(result, values); node.setResult(&result); - auto validator= makeValidator(condition, BooleanCondition::Equal); + auto validator= makeValidator(QVector() << condition, BooleanCondition::Equal); reroll.setValidatorList(validator); node.setNextNode(&reroll); @@ -924,7 +951,7 @@ void TestDice::ifTest() ifNode.setInstructionTrue(&trueNode); ifNode.setInstructionFalse(&falseNode); - auto validator= makeValidator(valCondition, BooleanCondition::Equal); + auto validator= makeValidator(QVector() << valCondition, BooleanCondition::Equal); ifNode.setValidatorList(validator); node.setNextNode(&ifNode); @@ -1077,7 +1104,7 @@ void TestDice::occurenceTest() makeResult(result, values); node.setResult(&result); - auto validator= makeValidator(condition, BooleanCondition::GreaterThan); + auto validator= makeValidator(QVector() << condition, BooleanCondition::GreaterThan); count.setValidatorList(validator); node.setNextNode(&count); -- cgit v1.2.3-70-g09d2