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