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