70 {
71
72 $blob1 = <<<yow
73BEGIN:VCALENDAR
74BEGIN:VEVENT
75SUMMARY:hi
76END:VEVENT
77END:VCALENDAR
78yow;
79
80 $blob2 = <<<yow
81BEGIN:VCALENDAR
82BEGIN:VEVENT
83SUMMARY:hi
84BEGIN:VALARM
85ACTION:DISPLAY
86END:VALARM
87END:VEVENT
88END:VCALENDAR
89yow;
90
91 $blob3 = <<<yow
92BEGIN:VCALENDAR
93BEGIN:VEVENT
94SUMMARY:hi
95DTSTART;VALUE=DATE:20110704
96END:VEVENT
97END:VCALENDAR
98yow;
99 $blob4 = <<<yow
100BEGIN:VCARD
101VERSION:3.0
102FN:Evert
103END:VCARD
104yow;
105
106 $blob5 = <<<yow
107BEGIN:VCALENDAR
108BEGIN:VEVENT
109DTSTART:20110101T120000Z
110DTEND:20110102T120000Z
111END:VEVENT
112END:VCALENDAR
113yow;
114
115 $blob6 = <<<yow
116BEGIN:VCALENDAR
117BEGIN:VEVENT
118DTSTART:20110101T120000Z
119DURATION:PT5H
120END:VEVENT
121END:VCALENDAR
122yow;
123
124 $blob7 = <<<yow
125BEGIN:VCALENDAR
126BEGIN:VEVENT
127DTSTART;VALUE=DATE:20110101
128END:VEVENT
129END:VCALENDAR
130yow;
131
132 $blob8 = <<<yow
133BEGIN:VCALENDAR
134BEGIN:VEVENT
135DTSTART:20110101T120000Z
136END:VEVENT
137END:VCALENDAR
138yow;
139
140 $blob9 = <<<yow
141BEGIN:VCALENDAR
142BEGIN:VTODO
143DTSTART:20110101T120000Z
144DURATION:PT1H
145END:VTODO
146END:VCALENDAR
147yow;
148 $blob10 = <<<yow
149BEGIN:VCALENDAR
150BEGIN:VTODO
151DTSTART:20110101T120000Z
152DUE:20110101T130000Z
153END:VTODO
154END:VCALENDAR
155yow;
156 $blob11 = <<<yow
157BEGIN:VCALENDAR
158BEGIN:VTODO
159DTSTART:20110101T120000Z
160END:VTODO
161END:VCALENDAR
162yow;
163
164 $blob12 = <<<yow
165BEGIN:VCALENDAR
166BEGIN:VTODO
167DUE:20110101T130000Z
168END:VTODO
169END:VCALENDAR
170yow;
171
172 $blob13 = <<<yow
173BEGIN:VCALENDAR
174BEGIN:VTODO
176CREATED:20110101T110000Z
177END:VTODO
178END:VCALENDAR
179yow;
180
181 $blob14 = <<<yow
182BEGIN:VCALENDAR
183BEGIN:VTODO
185END:VTODO
186END:VCALENDAR
187yow;
188
189 $blob15 = <<<yow
190BEGIN:VCALENDAR
191BEGIN:VTODO
192CREATED:20110101T110000Z
193END:VTODO
194END:VCALENDAR
195yow;
196
197
198 $blob16 = <<<yow
199BEGIN:VCALENDAR
200BEGIN:VTODO
201END:VTODO
202END:VCALENDAR
203yow;
204
205 $blob17 = <<<yow
206BEGIN:VCALENDAR
207BEGIN:VJOURNAL
208END:VJOURNAL
209END:VCALENDAR
210yow;
211
212 $blob18 = <<<yow
213BEGIN:VCALENDAR
214BEGIN:VJOURNAL
215DTSTART:20110101T120000Z
216END:VJOURNAL
217END:VCALENDAR
218yow;
219
220 $blob19 = <<<yow
221BEGIN:VCALENDAR
222BEGIN:VJOURNAL
223DTSTART;VALUE=DATE:20110101
224END:VJOURNAL
225END:VCALENDAR
226yow;
227
228 $blob20 = <<<yow
229BEGIN:VCALENDAR
230BEGIN:VFREEBUSY
231END:VFREEBUSY
232END:VCALENDAR
233yow;
234
235 $blob21 = <<<yow
236BEGIN:VCALENDAR
237BEGIN:VEVENT
238DTSTART:20110101T120000Z
239BEGIN:VALARM
240TRIGGER:-PT1H
241END:VALARM
242END:VEVENT
243END:VCALENDAR
244yow;
245
246 $blob22 = <<<yow
247BEGIN:VCALENDAR
248BEGIN:VEVENT
249DTSTART:20110101T120000Z
250BEGIN:VALARM
251TRIGGER;VALUE=DURATION:-PT1H
252END:VALARM
253END:VEVENT
254END:VCALENDAR
255yow;
256
257 $blob23 = <<<yow
258BEGIN:VCALENDAR
259BEGIN:VEVENT
260DTSTART:20110101T120000Z
261BEGIN:VALARM
262TRIGGER;VALUE=DURATION;RELATED=END:-PT1H
263END:VALARM
264END:VEVENT
265END:VCALENDAR
266yow;
267
268 $blob24 = <<<yow
269BEGIN:VCALENDAR
270BEGIN:VEVENT
271DTSTART:20110101T120000Z
272DTEND:20110101T130000Z
273BEGIN:VALARM
274TRIGGER;VALUE=DURATION;RELATED=END:-PT2H
275END:VALARM
276END:VEVENT
277END:VCALENDAR
278yow;
279
280 $blob25 = <<<yow
281BEGIN:VCALENDAR
282BEGIN:VEVENT
283DTSTART:20110101T120000Z
284DURATION:PT1H
285BEGIN:VALARM
286TRIGGER;VALUE=DURATION;RELATED=END:-PT2H
287END:VALARM
288END:VEVENT
289END:VCALENDAR
290yow;
291
292 $blob26 = <<<yow
293BEGIN:VCALENDAR
294BEGIN:VEVENT
295DTSTART:20110101T120000Z
296DURATION:PT1H
297BEGIN:VALARM
298TRIGGER;VALUE=DATE-TIME:20110101T110000Z
299END:VALARM
300END:VEVENT
301END:VCALENDAR
302yow;
303
304
305 $blob27 = <<<yow
306BEGIN:VCALENDAR
307BEGIN:VTODO
308DTSTART:20110101T120000Z
309DUE:20110101T130000Z
310BEGIN:VALARM
311TRIGGER;VALUE=DURATION;RELATED=END:-PT2H
312END:VALARM
313END:VTODO
314END:VCALENDAR
315yow;
316
317 $blob28 = <<<yow
318BEGIN:VCALENDAR
319BEGIN:VJOURNAL
320DTSTART:20110101T120000Z
321BEGIN:VALARM
322TRIGGER;VALUE=DURATION;RELATED=END:-PT2H
323END:VALARM
324END:VJOURNAL
325END:VCALENDAR
326yow;
327
328 $blob29 = <<<yow
329BEGIN:VCALENDAR
330BEGIN:VEVENT
331DTSTART:20110101T120000Z
332DURATION:PT1H
333BEGIN:VALARM
334TRIGGER;VALUE=DATE-TIME:20110101T090000Z
335REPEAT:2
336DURATION:PT1H
337END:VALARM
338END:VEVENT
339END:VCALENDAR
340yow;
341
342 $blob30 = <<<yow
343BEGIN:VCALENDAR
344BEGIN:VEVENT
345DTSTART:20110101T120000Z
346DURATION:PT1H
347BEGIN:VALARM
348TRIGGER;VALUE=DATE-TIME:20110101T090000Z
349DURATION:PT1H
350END:VALARM
351END:VEVENT
352END:VCALENDAR
353yow;
354
355 $blob31 = <<<yow
356BEGIN:VCALENDAR
357BEGIN:VEVENT
358UID:foobar
359DTSTART:20080101T120000Z
360DURATION:PT1H
361RRULE:FREQ=YEARLY
362END:VEVENT
363END:VCALENDAR
364yow;
365
366 $blob32 = <<<yow
367BEGIN:VCALENDAR
368BEGIN:VEVENT
369UID:foobar
370DTSTART:20080102T120000Z
371DURATION:PT1H
372RRULE:FREQ=YEARLY
373END:VEVENT
374END:VCALENDAR
375yow;
376 $blob33 = <<<yow
377BEGIN:VCALENDAR
378BEGIN:VEVENT
379UID:foobar
380DTSTART;VALUE=DATE:20120628
381RRULE:FREQ=DAILY
382END:VEVENT
383END:VCALENDAR
384yow;
385 $blob34 = <<<yow
386BEGIN:VCALENDAR
387BEGIN:VEVENT
388UID:foobar
389DTSTART;VALUE=DATE:20120628
390RRULE:FREQ=DAILY
391BEGIN:VALARM
392TRIGGER:P52W
393END:VALARM
394END:VEVENT
395END:VCALENDAR
396yow;
397
398 $filter1 = [
399 'name' => 'VEVENT',
400 'comp-filters' => [],
401 'prop-filters' => [],
402 'is-not-defined' => false,
403 'time-range' => null,
404 ];
405 $filter2 = $filter1;
406 $filter2['name'] = 'VTODO';
407
408 $filter3 = $filter1;
409 $filter3['is-not-defined'] = true;
410
411 $filter4 = $filter1;
412 $filter4['name'] = 'VTODO';
413 $filter4['is-not-defined'] = true;
414
415 $filter5 = $filter1;
416 $filter5['comp-filters'] = [
417 [
418 'name' => 'VALARM',
419 'is-not-defined' => false,
420 'comp-filters' => [],
421 'prop-filters' => [],
422 'time-range' => null,
423 ],
424 ];
425 $filter6 = $filter1;
426 $filter6['prop-filters'] = [
427 [
428 'name' => 'SUMMARY',
429 'is-not-defined' => false,
430 'param-filters' => [],
431 'time-range' => null,
432 'text-match' => null,
433 ],
434 ];
435 $filter7 = $filter6;
436 $filter7['prop-filters'][0]['name'] = 'DESCRIPTION';
437
438 $filter8 = $filter6;
439 $filter8['prop-filters'][0]['is-not-defined'] = true;
440
441 $filter9 = $filter7;
442 $filter9['prop-filters'][0]['is-not-defined'] = true;
443
444 $filter10 = $filter5;
445 $filter10['prop-filters'] = $filter6['prop-filters'];
446
447
448 $filter11 = $filter1;
449 $filter11['prop-filters'] = [
450 [
451 'name' => 'DTSTART',
452 'is-not-defined' => false,
453 'param-filters' => [
454 [
455 'name' => 'VALUE',
456 'is-not-defined' => false,
457 'text-match' => null,
458 ],
459 ],
460 'time-range' => null,
461 'text-match' => null,
462 ],
463 ];
464
465 $filter12 = $filter11;
466 $filter12['prop-filters'][0]['param-filters'][0]['name'] = 'TZID';
467
468 $filter13 = $filter11;
469 $filter13['prop-filters'][0]['param-filters'][0]['is-not-defined'] = true;
470
471 $filter14 = $filter12;
472 $filter14['prop-filters'][0]['param-filters'][0]['is-not-defined'] = true;
473
474
475 $filter15 = $filter11;
476 $filter15['prop-filters'][0]['param-filters'][0]['text-match'] = [
477 'collation' => 'i;ascii-casemap',
478 'value' => 'dAtE',
479 'negate-condition' => false,
480 ];
481 $filter16 = $filter15;
482 $filter16['prop-filters'][0]['param-filters'][0]['text-match']['collation'] = 'i;octet';
483
484 $filter17 = $filter15;
485 $filter17['prop-filters'][0]['param-filters'][0]['text-match']['negate-condition'] = true;
486
487 $filter18 = $filter15;
488 $filter18['prop-filters'][0]['param-filters'][0]['text-match']['negate-condition'] = true;
489 $filter18['prop-filters'][0]['param-filters'][0]['text-match']['collation'] = 'i;octet';
490
491
492 $filter19 = $filter5;
493 $filter19['comp-filters'][0]['prop-filters'] = [
494 [
495 'name' => 'action',
496 'is-not-defined' => false,
497 'time-range' => null,
498 'param-filters' => [],
499 'text-match' => [
500 'collation' => 'i;ascii-casemap',
501 'value' => 'display',
502 'negate-condition' => false,
503 ],
504 ],
505 ];
506
507
508 $filter20 = [
509 'name' => 'VEVENT',
510 'comp-filters' => [],
511 'prop-filters' => [],
512 'is-not-defined' => false,
513 'time-range' => [
514 'start' => new \DateTime('2011-01-01 10:00:00', new \DateTimeZone('GMT')),
515 'end' => new \DateTime('2011-01-01 13:00:00', new \DateTimeZone('GMT')),
516 ],
517 ];
518
519 $filter21 = $filter20;
520 $filter21['time-range']['end'] = null;
521
522
523 $filter22 = $filter20;
524 $filter22['time-range']['start'] = null;
525
526
527 $filter23 = $filter20;
528 $filter23['time-range'] = [
529 'start' => new \DateTime('2011-02-01 10:00:00', new \DateTimeZone('GMT')),
530 'end' => new \DateTime('2011-02-01 13:00:00', new \DateTimeZone('GMT')),
531 ];
532
533 $filter24 = [
534 'name' => 'VTODO',
535 'comp-filters' => [],
536 'prop-filters' => [],
537 'is-not-defined' => false,
538 'time-range' => [
539 'start' => new \DateTime('2011-01-01 12:45:00', new \DateTimeZone('GMT')),
540 'end' => new \DateTime('2011-01-01 13:15:00', new \DateTimeZone('GMT')),
541 ],
542 ];
543
544 $filter25 = $filter24;
545 $filter25['time-range'] = [
546 'start' => new \DateTime('2011-02-01 10:00:00', new \DateTimeZone('GMT')),
547 'end' => new \DateTime('2011-02-01 13:00:00', new \DateTimeZone('GMT')),
548 ];
549 $filter26 = $filter24;
550 $filter26['time-range'] = [
551 'start' => new \DateTime('2011-01-01 11:45:00', new \DateTimeZone('GMT')),
552 'end' => new \DateTime('2011-01-01 12:15:00', new \DateTimeZone('GMT')),
553 ];
554
555
556 $filter27 = [
557 'name' => 'VJOURNAL',
558 'comp-filters' => [],
559 'prop-filters' => [],
560 'is-not-defined' => false,
561 'time-range' => [
562 'start' => new \DateTime('2011-01-01 12:45:00', new \DateTimeZone('GMT')),
563 'end' => new \DateTime('2011-01-01 13:15:00', new \DateTimeZone('GMT')),
564 ],
565 ];
566 $filter28 = $filter27;
567 $filter28['time-range'] = [
568 'start' => new \DateTime('2011-01-01 11:45:00', new \DateTimeZone('GMT')),
569 'end' => new \DateTime('2011-01-01 12:15:00', new \DateTimeZone('GMT')),
570 ];
571
572 $filter29 = [
573 'name' => 'VFREEBUSY',
574 'comp-filters' => [],
575 'prop-filters' => [],
576 'is-not-defined' => false,
577 'time-range' => [
578 'start' => new \DateTime('2011-01-01 12:45:00', new \DateTimeZone('GMT')),
579 'end' => new \DateTime('2011-01-01 13:15:00', new \DateTimeZone('GMT')),
580 ],
581 ];
582
583 $filter30 = [
584 'name' => 'VEVENT',
585 'comp-filters' => [],
586 'prop-filters' => [
587 [
588 'name' => 'DTSTART',
589 'is-not-defined' => false,
590 'param-filters' => [],
591 'time-range' => [
592 'start' => new \DateTime('2011-01-01 10:00:00', new \DateTimeZone('GMT')),
593 'end' => new \DateTime('2011-01-01 13:00:00', new \DateTimeZone('GMT')),
594 ],
595 'text-match' => null,
596 ],
597 ],
598 'is-not-defined' => false,
599 'time-range' => null,
600 ];
601
602
603 $filter31 = [
604 'name' => 'VEVENT',
605 'prop-filters' => [],
606 'comp-filters' => [
607 [
608 'name' => 'VALARM',
609 'is-not-defined' => false,
610 'comp-filters' => [],
611 'prop-filters' => [],
612 'time-range' => [
613 'start' => new \DateTime('2011-01-01 10:45:00', new \DateTimeZone('GMT')),
614 'end' => new \DateTime('2011-01-01 11:15:00', new \DateTimeZone('GMT')),
615 ],
616 'text-match' => null,
617 ],
618 ],
619 'is-not-defined' => false,
620 'time-range' => null,
621 ];
622 $filter32 = $filter31;
623 $filter32['comp-filters'][0]['time-range'] = [
624 'start' => new \DateTime('2011-01-01 11:45:00', new \DateTimeZone('GMT')),
625 'end' => new \DateTime('2011-01-01 12:15:00', new \DateTimeZone('GMT')),
626 ];
627
628 $filter33 = $filter31;
629 $filter33['name'] = 'VTODO';
630 $filter34 = $filter32;
631 $filter34['name'] = 'VTODO';
632 $filter35 = $filter31;
633 $filter35['name'] = 'VJOURNAL';
634 $filter36 = $filter32;
635 $filter36['name'] = 'VJOURNAL';
636
637
638 $filter37 = [
639 'name' => 'VEVENT',
640 'comp-filters' => [],
641 'prop-filters' => [
642 [
643 'name' => 'SUMMARY',
644 'is-not-defined' => false,
645 'param-filters' => [],
646 'time-range' => [
647 'start' => new \DateTime('2011-01-01 10:00:00', new \DateTimeZone('GMT')),
648 'end' => new \DateTime('2011-01-01 13:00:00', new \DateTimeZone('GMT')),
649 ],
650 'text-match' => null,
651 ],
652 ],
653 'is-not-defined' => false,
654 'time-range' => null,
655 ];
656
657 $filter38 = [
658 'name' => 'VEVENT',
659 'comp-filters' => [],
660 'prop-filters' => [],
661 'is-not-defined' => false,
662 'time-range' => [
663 'start' => new \DateTime('2012-07-01 00:00:00', new \DateTimeZone('UTC')),
664 'end' => new \DateTime('2012-08-01 00:00:00', new \DateTimeZone('UTC')),
665 ]
666 ];
667 $filter39 = [
668 'name' => 'VEVENT',
669 'comp-filters' => [
670 [
671 'name' => 'VALARM',
672 'comp-filters' => [],
673 'prop-filters' => [],
674 'is-not-defined' => false,
675 'time-range' => [
676 'start' => new \DateTime('2012-09-01 00:00:00', new \DateTimeZone('UTC')),
677 'end' => new \DateTime('2012-10-01 00:00:00', new \DateTimeZone('UTC')),
678 ]
679 ],
680 ],
681 'prop-filters' => [],
682 'is-not-defined' => false,
683 'time-range' => null,
684 ];
685
686 return [
687
688
689
690 [$blob1, $filter1, 1],
691 [$blob1, $filter2, 0],
692 [$blob1, $filter3, 0],
693 [$blob1, $filter4, 1],
694
695
696 [$blob1, $filter5, 0],
697 [$blob2, $filter5, 1],
698
699
700 [$blob1, $filter6, 1],
701 [$blob1, $filter7, 0],
702 [$blob1, $filter8, 0],
703 [$blob1, $filter9, 1],
704
705
706 [$blob2, $filter10, 1],
707
708
709 [$blob3, $filter11, 1],
710 [$blob3, $filter12, 0],
711 [$blob3, $filter13, 0],
712 [$blob3, $filter14, 1],
713
714
715 [$blob3, $filter15, 1],
716 [$blob3, $filter16, 0],
717 [$blob3, $filter17, 0],
718 [$blob3, $filter18, 1],
719
720
721 [$blob2, $filter19, 1],
722
723
724 [$blob4, $filter1, -1],
725
726
727 [$blob5, $filter20, 1],
728 [$blob6, $filter20, 1],
729 [$blob7, $filter20, 1],
730 [$blob8, $filter20, 1],
731
732 [$blob5, $filter21, 1],
733 [$blob5, $filter22, 1],
734
735 [$blob5, $filter23, 0],
736 [$blob6, $filter23, 0],
737 [$blob7, $filter23, 0],
738 [$blob8, $filter23, 0],
739
740
741 [$blob9, $filter24, 1],
742 [$blob9, $filter25, 0],
743 [$blob9, $filter26, 1],
744 [$blob10, $filter24, 1],
745 [$blob10, $filter25, 0],
746 [$blob10, $filter26, 1],
747
748 [$blob11, $filter24, 0],
749 [$blob11, $filter25, 0],
750 [$blob11, $filter26, 1],
751
752 [$blob12, $filter24, 1],
753 [$blob12, $filter25, 0],
754 [$blob12, $filter26, 0],
755
756 [$blob13, $filter24, 1],
757 [$blob13, $filter25, 0],
758 [$blob13, $filter26, 1],
759
760 [$blob14, $filter24, 1],
761 [$blob14, $filter25, 0],
762 [$blob14, $filter26, 0],
763
764 [$blob15, $filter24, 1],
765 [$blob15, $filter25, 1],
766 [$blob15, $filter26, 1],
767
768 [$blob16, $filter24, 1],
769 [$blob16, $filter25, 1],
770 [$blob16, $filter26, 1],
771
772
773 [$blob17, $filter27, 0],
774 [$blob17, $filter28, 0],
775 [$blob18, $filter27, 0],
776 [$blob18, $filter28, 1],
777 [$blob19, $filter27, 1],
778 [$blob19, $filter28, 1],
779
780
781 [$blob20, $filter29, -1],
782
783
784 [$blob5, $filter30, 1],
785 [$blob3, $filter37, -1],
786 [$blob3, $filter30, 0],
787
788
789 [$blob21, $filter31, 1],
790 [$blob21, $filter32, 0],
791 [$blob22, $filter31, 1],
792 [$blob22, $filter32, 0],
793 [$blob23, $filter31, 1],
794 [$blob23, $filter32, 0],
795 [$blob24, $filter31, 1],
796 [$blob24, $filter32, 0],
797 [$blob25, $filter31, 1],
798 [$blob25, $filter32, 0],
799 [$blob26, $filter31, 1],
800 [$blob26, $filter32, 0],
801
802
803 [$blob27, $filter33, 1],
804 [$blob27, $filter34, 0],
805
806
807 [$blob28, $filter35, -1],
808 [$blob28, $filter36, -1],
809
810
811 [$blob29, $filter31, 1],
812 [$blob29, $filter32, 0],
813 [$blob30, $filter31, 0],
814 [$blob30, $filter32, 0],
815
816
817 [$blob31, $filter20, 1],
818 [$blob32, $filter20, 0],
819
820
821
822
823
824 [$blob34, $filter39, 0],
825 ];
826
827 }