/** * @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'))); }
/** * 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()); } }
/** * @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); }
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); }