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