mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-27 20:48:46 +02:00
Evaluator fixes/enhancements + tests
This commit is contained in:
@@ -10,6 +10,12 @@ class PhpExpressionEvaluatorTest extends ItopDataTestCase {
|
||||
private static $PRIVATE_STATIC_PROPERTY = 123;
|
||||
private const PRIVATE_CONSTANT = 123;
|
||||
|
||||
protected function tearDown(): void
|
||||
{
|
||||
parent::tearDown(); // TODO: Change the autogenerated stub
|
||||
PhpExpressionEvaluator::GetInstance()->SetMode(PhpExpressionEvaluator::ITOP_ALGO);
|
||||
}
|
||||
|
||||
public static function EvaluateExpressionProvider() {
|
||||
return [
|
||||
'Array: [1000 => "a"]' => ['sExpression' => '[1000 => "a"]'],
|
||||
@@ -19,7 +25,7 @@ class PhpExpressionEvaluatorTest extends ItopDataTestCase {
|
||||
'BinaryOperator: false|true' => [ 'sExpression' => 'false|true'],
|
||||
'BinaryOperator: false||true' => [ 'sExpression' => 'false||true'],
|
||||
'BinaryOperator: false&&true' => [ 'sExpression' => 'false&&true'],
|
||||
'BinaryOperator: true&&true&&true&&false' => [ 'sExpression' => 'true&&true&&true&&false'],
|
||||
'BinaryOperator: true&&true&&true&&false' => [ 'sExpression' => 'true && true && true && false'],
|
||||
'BinaryOperator: false&true' => [ 'sExpression' => 'false&true'],
|
||||
'BinaryOperator: ! true' => [ 'sExpression' => '! true'],
|
||||
'BinaryOperator: 10 * 5' => [ 'sExpression' => '10 * 5'],
|
||||
@@ -30,6 +36,7 @@ class PhpExpressionEvaluatorTest extends ItopDataTestCase {
|
||||
'BinaryOperator: PHP_VERSION_ID != PHP_VERSION_ID' => [ 'sExpression' => 'PHP_VERSION_ID != PHP_VERSION_ID'],
|
||||
'BitwiseNot: ~3' => ['sExpression' => '~3'],
|
||||
'BitwiseXor: 3^2' => ['sExpression' => '3^2'],
|
||||
'BooleanAnd: true && false' => ['sExpression' => 'true && false'],
|
||||
'Cast: (array)3' => ['sExpression' => '(array)3'],
|
||||
'Cast: (bool)1' => ['sExpression' => '(bool)1'],
|
||||
'Cast: (bool)0' => ['sExpression' => '(bool)0'],
|
||||
@@ -48,14 +55,21 @@ class PhpExpressionEvaluatorTest extends ItopDataTestCase {
|
||||
],
|
||||
'Coalesce: $oNullVar ?? 1' => ['sExpression' => '$oNullVar ?? 1', 1],
|
||||
'Coalesce: $oNonNullVar ?? 1' => ['sExpression' => '$oNonNullVar ?? 1', 1],
|
||||
'Coalesce: $_SERVER["toto"] ?? 1' => ['sExpression' => '$_SERVER["toto"] ?? 1', "titi"],
|
||||
'Coalesce: $_SERVER["unknown_key"] ?? 1' => ['sExpression' => '$_SERVER["unknown_key"] ?? 1', 1],
|
||||
'Coalesce: $oGlobalNonNullVar ?? 1' => ['sExpression' => '$oGlobalNonNullVar ?? 1', "a"],
|
||||
'Coalesce: $oGlobalNullVar ?? 1' => ['sExpression' => '$oGlobalNullVar ?? 1', 1],
|
||||
'Concat: "a"."b"' => ['sExpression' => '"a"."b"'],
|
||||
'ConstFetch: false' => [ 'sExpression' => 'false'],
|
||||
'ConstFetch: (false)' => [ 'sExpression' => 'false'],
|
||||
'ConstFetch: true' => [ 'sExpression' => 'true'],
|
||||
'ConstFetch: (true)' => [ 'sExpression' => 'true'],
|
||||
'Equal: 1 == true' => [ 'sExpression' => '1 == true', true],
|
||||
'Equal: 1 == false' => [ 'sExpression' => '1 == false', false],
|
||||
'FuncCall: function_exists(\'ldap_connect\')' => [ 'sExpression' => 'function_exists(\'ldap_connect\')'],
|
||||
'FuncCall: function_exists(\'gabuzomeushouldnotexist\')' => [ 'sExpression' => 'function_exists(\'gabuzomeushouldnotexist\')'],
|
||||
'Identical: 1==="1"' => ['sExpression' => '1==="1"', false],
|
||||
'Identical: "1"==="1"' => ['sExpression' => '"1"==="1"', true],
|
||||
'Isset: isset($oNonNullVar)' => ['sExpression' => 'isset($oNonNullVar)', false],
|
||||
'Isset: isset($oGlobalNonNullVar)' => ['sExpression' => 'isset($oGlobalNonNullVar)', true],
|
||||
'Isset: isset($a, $_SERVER)' => ['sExpression' => 'isset($a, $_SERVER)', false],
|
||||
@@ -85,6 +99,7 @@ class PhpExpressionEvaluatorTest extends ItopDataTestCase {
|
||||
'Variable: $_SERVER' => ['sExpression' => '$_SERVER', ['toto' => 'titi']],
|
||||
'Variable: $oNonNullVar' => ['sExpression' => '$oNonNullVar', null],
|
||||
'Variable: $oGlobalNonNullVar' => ['sExpression' => '$oGlobalNonNullVar', "a"],
|
||||
'Variable: $oEvaluationFakeClass' => ['sExpression' => '$oEvaluationFakeClass', new EvaluationFakeClass()],
|
||||
];
|
||||
}
|
||||
|
||||
@@ -116,6 +131,10 @@ class PhpExpressionEvaluatorTest extends ItopDataTestCase {
|
||||
{
|
||||
global $oGlobalNonNullVar;
|
||||
$oGlobalNonNullVar="a";
|
||||
|
||||
global $oGlobalNullVar;
|
||||
$oGlobalNullVar=null;
|
||||
|
||||
$oNonNullVar="a";
|
||||
|
||||
$oNullVar=null;
|
||||
@@ -126,7 +145,8 @@ class PhpExpressionEvaluatorTest extends ItopDataTestCase {
|
||||
global $oEvaluationFakeClass;
|
||||
$oEvaluationFakeClass = new EvaluationFakeClass();
|
||||
|
||||
$res = PhpExpressionEvaluator::GetInstance()->ParseAndEvaluateExpression($sExpression, $iMode);
|
||||
PhpExpressionEvaluator::GetInstance()->SetMode($iMode);
|
||||
$res = PhpExpressionEvaluator::GetInstance()->ParseAndEvaluateExpression($sExpression);
|
||||
if ($forced_expected === "NOTPROVIDED"){
|
||||
$this->assertEquals($this->UnprotectedComputeExpression($sExpression), $res, $sExpression);
|
||||
} else {
|
||||
|
||||
Reference in New Issue
Block a user