Пример #1
0
 /**
  * @param int $days
  * @param ExpressionResult $expression
  */
 protected function assertExpressionModifierSame($days, ExpressionResult $expression)
 {
     $this->assertTrue($expression->isModifier(), 'Expression result should be an integer value.');
     $this->assertSame($days, $expression->getValue(), sprintf("Expression value is '%s'\n The current time is %s.", $expression->getValue(), date('c')));
 }
Пример #2
0
 /**
  * Merges two results by rules
  *
  * @param ExpressionResult $expression
  *
  * @throws SyntaxException
  */
 public function merge(ExpressionResult $expression)
 {
     if (self::TYPE_DATE === $this->getSourceType()) {
         /** @var Carbon $dateValue */
         $dateValue = $this->getValue();
         $dateValue->second($expression->getValue()->second);
         $dateValue->minute($expression->getValue()->minute);
         $dateValue->hour($expression->getValue()->hour);
     } elseif (self::TYPE_TIME === $this->getSourceType()) {
         $expression->merge($this);
         $this->value = $expression->getValue();
     } else {
         throw new ExpressionDenied($expression->getVariableLabel());
     }
 }
Пример #3
0
 /**
  * @dataProvider provider
  */
 public function testReverseStartOfSmthModifier($day, $toTime)
 {
     $dateTime = new \DateTime('now', new \DateTimeZone('UTC'));
     $expressionModify = new ExpressionResult(new Token(Token::TYPE_VARIABLE, $day));
     $expression = new ExpressionResult(33);
     $expression->subtract($expressionModify);
     $result = $expression->getValue();
     $expectedDay = 33 - date('d', strtotime($toTime));
     $this->assertSame($expectedDay, (int) $result);
     $expression = new ExpressionResult(1);
     $expression->add($expressionModify);
     $result = $expression->getValue();
     $expectedDay = 1 + date('d', strtotime($toTime));
     $this->assertSame($expectedDay, $result->day);
 }
Пример #4
0
 public function testReverseSubtractionWeek()
 {
     $dateTime = new \DateTime('now', new \DateTimeZone('UTC'));
     // Needed because Oro\Bundle\FilterBundle\Expression\Date\ExpressionResult changes first day of week
     $dateTime->modify('this week');
     $expression = new ExpressionResult(200);
     $expressionModify = new ExpressionResult(new Token(Token::TYPE_VARIABLE, DateModifierInterface::VAR_THIS_WEEK));
     $expression->subtract($expressionModify);
     $result = $expression->getValue();
     $expectedWeek = 200 - (int) $dateTime->format('W');
     $this->assertSame($expectedWeek, (int) $result);
 }