Ejemplo n.º 1
0
 public function testSimpleRepeatingRule()
 {
     $wkday = new \Zimbra\Mail\Struct\WkDay(WeekDay::SU(), 10);
     $until = new \Zimbra\Mail\Struct\DateTimeStringAttr('20120315T18302305Z');
     $count = new \Zimbra\Mail\Struct\NumAttr(20120315);
     $interval = new \Zimbra\Mail\Struct\IntervalRule(20120315);
     $bysecond = new \Zimbra\Mail\Struct\BySecondRule('10,a,20,b,30');
     $byminute = new \Zimbra\Mail\Struct\ByMinuteRule('10,a,20,b,30');
     $byhour = new \Zimbra\Mail\Struct\ByHourRule('5,a,10,b,15');
     $byday = new \Zimbra\Mail\Struct\ByDayRule(array($wkday));
     $bymonthday = new \Zimbra\Mail\Struct\ByMonthDayRule('5,a,10,b,15,32');
     $byyearday = new \Zimbra\Mail\Struct\ByYearDayRule('5,a,10,b,15,367');
     $byweekno = new \Zimbra\Mail\Struct\ByWeekNoRule('5,a,10,b,15,54');
     $bymonth = new \Zimbra\Mail\Struct\ByMonthRule('5,a,10,b,15');
     $bysetpos = new \Zimbra\Mail\Struct\BySetPosRule('5,a,10,b,15,367');
     $wkst = new \Zimbra\Mail\Struct\WkstRule(WeekDay::SU());
     $xname = new \Zimbra\Mail\Struct\XNameRule('name', 'value');
     $rule = new \Zimbra\Mail\Struct\SimpleRepeatingRule(Frequency::SEC(), $until, $count, $interval, $bysecond, $byminute, $byhour, $byday, $bymonthday, $byyearday, $byweekno, $bymonth, $bysetpos, $wkst, array($xname));
     $this->assertSame('SEC', (string) $rule->freq());
     $this->assertSame($until, $rule->until());
     $this->assertSame($count, $rule->count());
     $this->assertSame($interval, $rule->interval());
     $this->assertSame($bysecond, $rule->bysecond());
     $this->assertSame($byminute, $rule->byminute());
     $this->assertSame($byhour, $rule->byhour());
     $this->assertSame($byday, $rule->byday());
     $this->assertSame($bymonthday, $rule->bymonthday());
     $this->assertSame($byyearday, $rule->byyearday());
     $this->assertSame($byweekno, $rule->byweekno());
     $this->assertSame($bymonth, $rule->bymonth());
     $this->assertSame($bysetpos, $rule->bysetpos());
     $this->assertSame($wkst, $rule->wkst());
     $this->assertSame(array($xname), $rule->ruleXName()->all());
     $rule->freq(Frequency::SEC())->until($until)->count($count)->interval($interval)->bysecond($bysecond)->byminute($byminute)->byhour($byhour)->byday($byday)->bymonthday($bymonthday)->byyearday($byyearday)->byweekno($byweekno)->bymonth($bymonth)->bysetpos($bysetpos)->wkst($wkst)->addXNameRule($xname);
     $this->assertSame('SEC', (string) $rule->freq());
     $this->assertSame($until, $rule->until());
     $this->assertSame($count, $rule->count());
     $this->assertSame($interval, $rule->interval());
     $this->assertSame($bysecond, $rule->bysecond());
     $this->assertSame($byminute, $rule->byminute());
     $this->assertSame($byhour, $rule->byhour());
     $this->assertSame($byday, $rule->byday());
     $this->assertSame($bymonthday, $rule->bymonthday());
     $this->assertSame($byyearday, $rule->byyearday());
     $this->assertSame($byweekno, $rule->byweekno());
     $this->assertSame($bymonth, $rule->bymonth());
     $this->assertSame($bysetpos, $rule->bysetpos());
     $this->assertSame($wkst, $rule->wkst());
     $this->assertSame(array($xname, $xname), $rule->ruleXName()->all());
     $xml = '<?xml version="1.0"?>' . "\n" . '<rule freq="SEC">' . '<until d="20120315T18302305Z" />' . '<count num="20120315" />' . '<interval ival="20120315" />' . '<bysecond seclist="10,20,30" />' . '<byminute minlist="10,20,30" />' . '<byhour hrlist="5,10,15" />' . '<byday>' . '<wkday day="SU" ordwk="10" />' . '</byday>' . '<bymonthday modaylist="5,10,15" />' . '<byyearday yrdaylist="5,10,15" />' . '<byweekno wklist="5,10,15" />' . '<bymonth molist="5,10" />' . '<bysetpos poslist="5,10,15" />' . '<wkst day="SU" />' . '<rule-x-name name="name" value="value" />' . '<rule-x-name name="name" value="value" />' . '</rule>';
     $this->assertXmlStringEqualsXmlString($xml, (string) $rule);
     $array = array('rule' => array('freq' => 'SEC', 'until' => array('d' => '20120315T18302305Z'), 'count' => array('num' => 20120315), 'interval' => array('ival' => 20120315), 'bysecond' => array('seclist' => '10,20,30'), 'byminute' => array('minlist' => '10,20,30'), 'byhour' => array('hrlist' => '5,10,15'), 'byday' => array('wkday' => array(array('day' => 'SU', 'ordwk' => 10))), 'bymonthday' => array('modaylist' => '5,10,15'), 'byyearday' => array('yrdaylist' => '5,10,15'), 'byweekno' => array('wklist' => '5,10,15'), 'bymonth' => array('molist' => '5,10'), 'bysetpos' => array('poslist' => '5,10,15'), 'wkst' => array('day' => 'SU'), 'rule-x-name' => array(array('name' => 'name', 'value' => 'value'), array('name' => 'name', 'value' => 'value'))));
     $this->assertEquals($array, $rule->toArray());
 }