Merge branch 'MDL-75464-master' of https://github.com/meirzamoodle/moodle

This commit is contained in:
Paul Holden 2023-03-16 11:38:49 +00:00 committed by Sara Arjona
commit 95c5001ddb
4 changed files with 115 additions and 7 deletions

View file

@ -317,4 +317,93 @@ class mathslib_test extends \basic_testcase {
$result = $formula->evaluate();
$this->assertTrue(is_float($result));
}
/**
* Tests the modulo operator.
*
* @covers calc_formula::evaluate
* @dataProvider moduloOperatorData
*
* @param string $formula
* @param array $values
* @param int|float $expectedResult
*/
public function shouldSupportModuloOperator($formula, $values, $expectedResult)
{
$formula = new calc_formula($formula);
$formula->set_params($values);
$this->assertEquals($expectedResult, $formula->evaluate());
}
/**
* Data provider for shouldSupportModuloOperator
*
* @return array
*/
public function moduloOperatorData() {
return array(
array(
'=a%b', // 9%3 => 0
array('a' => 9, 'b' => 3),
0
),
array(
'=a%b', // 10%3 => 1
array('a' => 10, 'b' => 3),
1
),
array(
'=10-a%(b+c*d)', // 10-10%(7-2*2) => 9
array('a' => '10', 'b' => 7, 'c' => -2, 'd' => 2),
9
)
);
}
/**
* Tests the double minus as plus.
*
* @covers calc_formula::evaluate
* @dataProvider doubleMinusData
*
* @param string $formula
* @param array $values
* @param int|float $expectedResult
*/
public function shouldConsiderDoubleMinusAsPlus($formula, $values, $expectedResult)
{
$formula = new calc_formula($formula);
$formula->set_params($values);
$this->assertEquals($expectedResult, $formula->evaluate());
}
/**
* Data provider for shouldConsiderDoubleMinusAsPlus
*
* @return array
*/
public function doubleMinusData() {
return array(
array(
'=a+b*c--d', // 1+2*3--4 => 1+6+4 => 11
array(
'a' => 1,
'b' => 2,
'c' => 3,
'd' => 4
),
11
),
array(
'=a+b*c--d', // 1+2*3---4 => 1+6-4 => 3
array(
'a' => 1,
'b' => 2,
'c' => 3,
'd' => -4
),
3
)
);
}
}