source: contrib/davical/inc/test-RRULE.php @ 3733

Revision 3733, 3.8 KB checked in by gabriel.malheiros, 13 years ago (diff)

Ticket #1541 - <Davical customizado para o Expresso.Utiliza Caldav e CardDav?>

Line 
1<?php
2require_once("../htdocs/always.php");
3require_once("RRule.php");
4
5header("Content-type: text/plain");
6
7echo <<<EOTXT
8Testing the RRule Library
9
10EOTXT;
11
12class RRuleTest {
13  var $dtstart;
14  var $recur;
15  var $description;
16  var $result_description;
17
18  function RRuleTest( $description, $start, $recur, $result_description = null ) {
19    $this->description = $description;
20    $this->dtstart = $start;
21    $this->recur = $recur;
22    $this->result_description = $result_description;
23  }
24
25  function PHPTest() {
26    $result = '';
27    $rule = new RRule( new iCalDate($this->dtstart), $this->recur );
28    $i = 0;
29    do {
30      $date = $rule->GetNext();
31      if ( isset($date) ) {
32        if ( ($i++ % 4) == 0 ) $result .= "\n";
33        $result .= "   " . $date->Render();
34      }
35    }
36    while( isset($date) && $i < 30 );
37    return $result;
38  }
39
40  function SQLTest() {
41    $result = '';
42    $sql = "SELECT event_instances::timestamp AS event_date FROM event_instances(?,?) LIMIT 30;";
43    $qry = new AwlQuery($sql, $this->dtstart, $this->recur);
44    // printf( "%s\n", $qry->querystring);
45    if ( $qry->Exec("test") && $qry->rows > 0 ) {
46      $i = 0;
47      while( $row = $qry->Fetch() ) {
48        if ( ($i++ % 4) == 0 ) $result .= "\n";
49        $result .= "   " . $row->event_date;
50      }
51    }
52    return $result;
53  }
54}
55
56
57$tests = array(
58    new RRuleTest( "Daily for 7 days", "20061103T073000", "RRULE:FREQ=DAILY;COUNT=7" )
59  , new RRuleTest( "Weekly for 26 weeks", "20061102T100000", "RRULE:FREQ=WEEKLY;COUNT=26;INTERVAL=1;BYDAY=TH" )
60  , new RRuleTest( "Fortnightly for 28 events", "20061103T160000", "RRULE:FREQ=WEEKLY;INTERVAL=2;UNTIL=20071122T235900" )
61  , new RRuleTest( "3/wk for 5 weeks", "20081101T160000", "RRULE:FREQ=WEEKLY;COUNT=15;INTERVAL=1;BYDAY=MO,WE,FR" )
62  , new RRuleTest( "Monthly forever", "20061104T073000", "RRULE:FREQ=MONTHLY" )
63  , new RRuleTest( "Monthly, on the 1st monday, 2nd wednesday, 3rd friday and last sunday, forever", "20061117T073000", "RRULE:FREQ=MONTHLY;BYDAY=1MO,2WE,3FR,-1SU" )
64  , new RRuleTest( "The last working day of each month", "20061107T113000", "RRULE:FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR;BYSETPOS=-1" )
65  , new RRuleTest( "Every working day", "20081020T103000", "RRULE:FREQ=MONTHLY;BYDAY=MO,TU,WE,TH,FR" )
66  , new RRuleTest( "Every working day", "20081020T110000", "RRULE:FREQ=DAILY;INTERVAL=1;BYDAY=MO,TU,WE,TH,FR" )
67  , new RRuleTest( "1st Tuesday, 2nd Wednesday, 3rd Thursday & 4th Friday, every March, June, September, October and December", "20081001T133000", "RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=1TU,2WE,3TH,4FR;BYMONTH=3,6,9,10,12" )
68  , new RRuleTest( "Every tuesday and friday", "20081017T084500", "RRULE:FREQ=MONTHLY;INTERVAL=1;BYDAY=TU,FR" )
69  , new RRuleTest( "Every tuesday and friday", "20081017T084500", "RRULE:FREQ=WEEKLY;INTERVAL=1;BYDAY=TU,FR" )
70  , new RRuleTest( "Every tuesday and friday", "20081017T084500", "RRULE:FREQ=DAILY;INTERVAL=1;BYDAY=TU,FR" )
71  , new RRuleTest( "Time zone 1", "19700315T030000", "FREQ=YEARLY;INTERVAL=1;BYDAY=3SU;BYMONTH=3" )
72  , new RRuleTest( "Time zone 2", "19700927T020000", "FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=9" )
73  , new RRuleTest( "Time zone 3", "19810329T030000", "FREQ=YEARLY;BYMONTH=3;BYDAY=-1SU" )
74  , new RRuleTest( "Time zone 4", "20000404T020000", "FREQ=YEARLY;BYDAY=1SU;BYMONTH=4" )
75);
76
77foreach( $tests AS $k => $test ) {
78  echo "=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=~=\n";
79  echo "$test->dtstart - $test->recur\n";
80  echo "$test->description\n";
81  $php_result = $test->PHPTest();
82/*
83  $sql_result = $test->SQLTest();
84  if ( $php_result == $sql_result ) {
85    echo "PHP & SQL results are identical :-)\n";
86  }
87  else {
88    echo "PHP & SQL results differ :-(\n";
89  }
90*/
91  echo "PHP Result:\n$php_result\n\n";
92//  echo "SQL Result:\n$sql_result\n\n";  // Still under development
93}
94
95
96exit(0);
Note: See TracBrowser for help on using the repository browser.