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