Пример #1
0
 private function parseConditionElement(DOMElement $conditionElement)
 {
     $operatorElements = $this->xpath->query(sprintf('*[namespace-uri() = "%s"]', self::XMLNS_LOADER), $conditionElement);
     $operators = array();
     foreach ($operatorElements as $operatorElement) {
         $operatorParser = OperatorParserFactoryMethod::create($operatorElement->localName);
         $operators[] = $operatorParser->parse($operatorElement, $this->xpath);
     }
     switch (count($operators)) {
         case 0:
             return Boolean::true();
         case 1:
             return $operators[0];
         default:
             $and = new AndOp();
             array_map(function ($operator) use($and) {
                 $and->addOperand($operator);
             }, $operators);
             return $and;
     }
 }
Пример #2
0
 /** @test */
 public function codeWithSeveralOperands()
 {
     $this->and->addOperand($this->getNativeExpressionMock('EXPRESSION1'))->addOperand($this->getNativeExpressionMock('EXPRESSION2'))->addOperand($this->getNativeExpressionMock('EXPRESSION3'))->addOperand($this->getNativeExpressionMock('EXPRESSION2'))->addOperand($this->getNativeExpressionMock('EXPRESSION1'));
     $this->assertEquals('(EXPRESSION1 && EXPRESSION2 && EXPRESSION3)', $this->and->getNativeExpression());
 }