コード例 #1
0
 /**
  * Test the possilbe math functions defined for filter option
  */
 public function testMathFunctions()
 {
     try {
         $odataUriExpression = 'round(Price) eq 200.60';
         $parser = new ExpressionParser2($odataUriExpression, $this->_northWindMetadata->resolveResourceSet('Orders')->getResourceType(), null);
         $expressionTree = $parser->parseFilter();
         $expressionProcessor = new ExpressionProcessor($expressionTree, new PHPExpressionProvider('$lt'));
         $actualPHPExpression = $expressionProcessor->processExpression();
         $expectedPHPExpression = '(!(is_null($lt->Price)) && (round($lt->Price) == 200.60))';
         $this->AssertEquals($actualPHPExpression, $expectedPHPExpression);
         $odataUriExpression = 'ceiling(floor(Price) add 5) eq 345.90';
         $parser->resetParser($odataUriExpression);
         $expressionProcessor->setExpression($parser->parseFilter());
         $actualPHPExpression = $expressionProcessor->processExpression();
         $expectedPHPExpression = '(!(is_null($lt->Price)) && (ceil((floor($lt->Price) + 5)) == 345.90))';
         $this->AssertEquals($actualPHPExpression, $expectedPHPExpression);
     } catch (ODataException $exception) {
         $this->fail('An unexpected ODataException has been raised.' . $exception->getMessage());
     }
 }