xref: /template/strap/vendor/dragonmantank/cron-expression/tests/Cron/DayOfMonthFieldTest.php (revision 37748cd8654635afbeca80942126742f0f4cc346)
1*37748cd8SNickeau<?php
2*37748cd8SNickeau
3*37748cd8SNickeaunamespace Cron\Tests;
4*37748cd8SNickeau
5*37748cd8SNickeauuse Cron\DayOfMonthField;
6*37748cd8SNickeauuse DateTime;
7*37748cd8SNickeauuse PHPUnit_Framework_TestCase;
8*37748cd8SNickeau
9*37748cd8SNickeau/**
10*37748cd8SNickeau * @author Michael Dowling <mtdowling@gmail.com>
11*37748cd8SNickeau */
12*37748cd8SNickeauclass DayOfMonthFieldTest extends PHPUnit_Framework_TestCase
13*37748cd8SNickeau{
14*37748cd8SNickeau    /**
15*37748cd8SNickeau     * @covers Cron\DayOfMonthField::validate
16*37748cd8SNickeau     */
17*37748cd8SNickeau    public function testValidatesField()
18*37748cd8SNickeau    {
19*37748cd8SNickeau        $f = new DayOfMonthField();
20*37748cd8SNickeau        $this->assertTrue($f->validate('1'));
21*37748cd8SNickeau        $this->assertTrue($f->validate('*'));
22*37748cd8SNickeau        $this->assertTrue($f->validate('5W,L'));
23*37748cd8SNickeau        $this->assertFalse($f->validate('1.'));
24*37748cd8SNickeau    }
25*37748cd8SNickeau
26*37748cd8SNickeau    /**
27*37748cd8SNickeau     * @covers Cron\DayOfMonthField::isSatisfiedBy
28*37748cd8SNickeau     */
29*37748cd8SNickeau    public function testChecksIfSatisfied()
30*37748cd8SNickeau    {
31*37748cd8SNickeau        $f = new DayOfMonthField();
32*37748cd8SNickeau        $this->assertTrue($f->isSatisfiedBy(new DateTime(), '?'));
33*37748cd8SNickeau    }
34*37748cd8SNickeau
35*37748cd8SNickeau    /**
36*37748cd8SNickeau     * @covers Cron\DayOfMonthField::increment
37*37748cd8SNickeau     */
38*37748cd8SNickeau    public function testIncrementsDate()
39*37748cd8SNickeau    {
40*37748cd8SNickeau        $d = new DateTime('2011-03-15 11:15:00');
41*37748cd8SNickeau        $f = new DayOfMonthField();
42*37748cd8SNickeau        $f->increment($d);
43*37748cd8SNickeau        $this->assertEquals('2011-03-16 00:00:00', $d->format('Y-m-d H:i:s'));
44*37748cd8SNickeau
45*37748cd8SNickeau        $d = new DateTime('2011-03-15 11:15:00');
46*37748cd8SNickeau        $f->increment($d, true);
47*37748cd8SNickeau        $this->assertEquals('2011-03-14 23:59:00', $d->format('Y-m-d H:i:s'));
48*37748cd8SNickeau    }
49*37748cd8SNickeau
50*37748cd8SNickeau    /**
51*37748cd8SNickeau     * Day of the month cannot accept a 0 value, it must be between 1 and 31
52*37748cd8SNickeau     * See Github issue #120
53*37748cd8SNickeau     *
54*37748cd8SNickeau     * @since 2017-01-22
55*37748cd8SNickeau     */
56*37748cd8SNickeau    public function testDoesNotAccept0Date()
57*37748cd8SNickeau    {
58*37748cd8SNickeau        $f = new DayOfMonthField();
59*37748cd8SNickeau        $this->assertFalse($f->validate(0));
60*37748cd8SNickeau    }
61*37748cd8SNickeau}
62