xref: /plugin/combo/vendor/dragonmantank/cron-expression/tests/Cron/MonthFieldTest.php (revision 37748cd8654635afbeca80942126742f0f4cc346)
1*37748cd8SNickeau<?php
2*37748cd8SNickeau
3*37748cd8SNickeaunamespace Cron\Tests;
4*37748cd8SNickeau
5*37748cd8SNickeauuse Cron\MonthField;
6*37748cd8SNickeauuse DateTime;
7*37748cd8SNickeauuse PHPUnit_Framework_TestCase;
8*37748cd8SNickeau
9*37748cd8SNickeau/**
10*37748cd8SNickeau * @author Michael Dowling <mtdowling@gmail.com>
11*37748cd8SNickeau */
12*37748cd8SNickeauclass MonthFieldTest extends PHPUnit_Framework_TestCase
13*37748cd8SNickeau{
14*37748cd8SNickeau    /**
15*37748cd8SNickeau     * @covers Cron\MonthField::validate
16*37748cd8SNickeau     */
17*37748cd8SNickeau    public function testValidatesField()
18*37748cd8SNickeau    {
19*37748cd8SNickeau        $f = new MonthField();
20*37748cd8SNickeau        $this->assertTrue($f->validate('12'));
21*37748cd8SNickeau        $this->assertTrue($f->validate('*'));
22*37748cd8SNickeau        $this->assertTrue($f->validate('*/10,2,1-12'));
23*37748cd8SNickeau        $this->assertFalse($f->validate('1.fix-regexp'));
24*37748cd8SNickeau    }
25*37748cd8SNickeau
26*37748cd8SNickeau    /**
27*37748cd8SNickeau     * @covers Cron\MonthField::increment
28*37748cd8SNickeau     */
29*37748cd8SNickeau    public function testIncrementsDate()
30*37748cd8SNickeau    {
31*37748cd8SNickeau        $d = new DateTime('2011-03-15 11:15:00');
32*37748cd8SNickeau        $f = new MonthField();
33*37748cd8SNickeau        $f->increment($d);
34*37748cd8SNickeau        $this->assertEquals('2011-04-01 00:00:00', $d->format('Y-m-d H:i:s'));
35*37748cd8SNickeau
36*37748cd8SNickeau        $d = new DateTime('2011-03-15 11:15:00');
37*37748cd8SNickeau        $f->increment($d, true);
38*37748cd8SNickeau        $this->assertEquals('2011-02-28 23:59:00', $d->format('Y-m-d H:i:s'));
39*37748cd8SNickeau    }
40*37748cd8SNickeau
41*37748cd8SNickeau    /**
42*37748cd8SNickeau     * @covers Cron\MonthField::increment
43*37748cd8SNickeau     */
44*37748cd8SNickeau    public function testIncrementsDateWithThirtyMinuteTimezone()
45*37748cd8SNickeau    {
46*37748cd8SNickeau        $tz = date_default_timezone_get();
47*37748cd8SNickeau        date_default_timezone_set('America/St_Johns');
48*37748cd8SNickeau        $d = new DateTime('2011-03-31 11:59:59');
49*37748cd8SNickeau        $f = new MonthField();
50*37748cd8SNickeau        $f->increment($d);
51*37748cd8SNickeau        $this->assertEquals('2011-04-01 00:00:00', $d->format('Y-m-d H:i:s'));
52*37748cd8SNickeau
53*37748cd8SNickeau        $d = new DateTime('2011-03-15 11:15:00');
54*37748cd8SNickeau        $f->increment($d, true);
55*37748cd8SNickeau        $this->assertEquals('2011-02-28 23:59:00', $d->format('Y-m-d H:i:s'));
56*37748cd8SNickeau        date_default_timezone_set($tz);
57*37748cd8SNickeau    }
58*37748cd8SNickeau
59*37748cd8SNickeau
60*37748cd8SNickeau    /**
61*37748cd8SNickeau     * @covers Cron\MonthField::increment
62*37748cd8SNickeau     */
63*37748cd8SNickeau    public function testIncrementsYearAsNeeded()
64*37748cd8SNickeau    {
65*37748cd8SNickeau        $f = new MonthField();
66*37748cd8SNickeau        $d = new DateTime('2011-12-15 00:00:00');
67*37748cd8SNickeau        $f->increment($d);
68*37748cd8SNickeau        $this->assertEquals('2012-01-01 00:00:00', $d->format('Y-m-d H:i:s'));
69*37748cd8SNickeau    }
70*37748cd8SNickeau
71*37748cd8SNickeau    /**
72*37748cd8SNickeau     * @covers Cron\MonthField::increment
73*37748cd8SNickeau     */
74*37748cd8SNickeau    public function testDecrementsYearAsNeeded()
75*37748cd8SNickeau    {
76*37748cd8SNickeau        $f = new MonthField();
77*37748cd8SNickeau        $d = new DateTime('2011-01-15 00:00:00');
78*37748cd8SNickeau        $f->increment($d, true);
79*37748cd8SNickeau        $this->assertEquals('2010-12-31 23:59:00', $d->format('Y-m-d H:i:s'));
80*37748cd8SNickeau    }
81*37748cd8SNickeau}
82