[ Index ]

PHP Cross Reference of DokuWiki

title

Body

[close]

/_test/tests/inc/ -> changelog_getrelativerevision.test.php (source)

   1  <?php
   2  
   3  use dokuwiki\ChangeLog\PageChangeLog;
   4  
   5  /**
   6   * Tests for requesting revisioninfo of a revision of a page with getRevisionInfo()
   7   *
   8   * This class uses the files:
   9   * - data/pages/mailinglist.txt
  10   * - data/meta/mailinglist.changes
  11   */
  12  class changelog_getrelativerevision_test extends DokuWikiTest {
  13  
  14      private $logline = "1362525899    127.0.0.1    E    mailinglist    pubcie    [Data entry]     \n";
  15      private $pageid = 'mailinglist';
  16  
  17      function setup() : void {
  18          parent::setup();
  19          global $cache_revinfo;
  20          $cache =& $cache_revinfo;
  21          unset($cache['nonexist']);
  22          unset($cache['mailinglist']);
  23      }
  24  
  25      /**
  26       * no nonexist.changes meta file available
  27       */
  28      function test_changemetadatanotexists() {
  29          $rev = 1362525899;
  30          $dir = 1;
  31          $id = 'nonexist';
  32          $revsexpected = false;
  33  
  34          $pagelog = new PageChangeLog($id, $chunk_size = 8192);
  35          $revs = $pagelog->getRelativeRevision($rev, $dir);
  36          $this->assertEquals($revsexpected, $revs);
  37      }
  38  
  39      /**
  40       * no nonexist.changes meta file available
  41       */
  42      function test_nodirection() {
  43          $rev = 1362525899;
  44          $dir = 0;
  45          $revsexpected = false;
  46  
  47          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
  48          $revs = $pagelog->getRelativeRevision($rev, $dir);
  49          $this->assertEquals($revsexpected, $revs);
  50      }
  51  
  52      /**
  53       * start at exact current revision of mailinglist page
  54       *
  55       */
  56      function test_startatexactcurrentrev() {
  57          $rev = 1385051947;
  58          $dir = 1;
  59          $revsexpectedpos = false;
  60          $revsexpectedneg = 1374261194;
  61  
  62          //set a known timestamp
  63          touch(wikiFN($this->pageid), $rev);
  64  
  65          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
  66          $revs = $pagelog->getRelativeRevision($rev, $dir);
  67          $this->assertEquals($revsexpectedpos, $revs);
  68  
  69          $revs = $pagelog->getRelativeRevision($rev, -$dir);
  70          $this->assertEquals($revsexpectedneg, $revs);
  71      }
  72  
  73      /**
  74       * start at exact last revision of mailinglist page
  75       *
  76       */
  77      function test_startatexactlastrev() {
  78          $rev = 1360110636;
  79          $dir = 1;
  80          $revsexpectedpos = 1361901536;
  81          $revsexpectedneg = false;
  82  
  83          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
  84          $revs = $pagelog->getRelativeRevision($rev, $dir);
  85          $this->assertEquals($revsexpectedpos, $revs);
  86  
  87          $revs = $pagelog->getRelativeRevision($rev, -$dir);
  88          $this->assertEquals($revsexpectedneg, $revs);
  89      }
  90  
  91      /**
  92       * start at exact one before last revision of mailinglist page
  93       *
  94       */
  95      function test_requestlastrevisions() {
  96          $rev = 1361901536;
  97          $dir = -1;
  98          $revsexpectedlast = 1360110636;
  99          $revsexpectedbeforelast = false;
 100  
 101          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
 102          $revs = $pagelog->getRelativeRevision($rev, $dir);
 103          $this->assertEquals($revsexpectedlast, $revs);
 104  
 105          $revs = $pagelog->getRelativeRevision($rev, 2 * $dir);
 106          $this->assertEquals($revsexpectedbeforelast, $revs);
 107      }
 108  
 109      /**
 110       * request existing rev and check cache
 111       */
 112      function test_requestrev_checkcache() {
 113          $rev = 1362525359;
 114          $dir = 1;
 115          $revexpected = 1362525899;
 116          $infoexpected = parseChangelogLine($this->logline);
 117  
 118          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
 119          $revfound = $pagelog->getRelativeRevision($rev, $dir);
 120          $this->assertEquals($revexpected, $revfound);
 121  
 122          //checked info returned from cache
 123          $info = $pagelog->getRevisionInfo($revfound);
 124          $this->assertEquals($infoexpected, $info);
 125      }
 126  
 127      /**
 128       * request existing rev
 129       */
 130      function test_requestnextrev() {
 131          $rev = 1362525899;
 132  
 133          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
 134  
 135          $dir = 1;
 136          $revexpected = 1362525926;
 137          $revfound = $pagelog->getRelativeRevision($rev, $dir);
 138          $this->assertEquals($revexpected, $revfound);
 139  
 140          $dir = 2;
 141          $revexpected = 1362526039;
 142          $revfound = $pagelog->getRelativeRevision($rev, $dir);
 143          $this->assertEquals($revexpected, $revfound);
 144  
 145          $dir = -1;
 146          $revexpected = 1362525359;
 147          $revfound = $pagelog->getRelativeRevision($rev, $dir);
 148          $this->assertEquals($revexpected, $revfound);
 149  
 150          $dir = -2;
 151          $revexpected = 1362525145;
 152          $revfound = $pagelog->getRelativeRevision($rev, $dir);
 153          $this->assertEquals($revexpected, $revfound);
 154      }
 155  
 156      /**
 157       * request existing rev with chucked reading
 158       */
 159      function test_requestnextrev_chuncked() {
 160          $rev = 1362525899;
 161  
 162          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
 163  
 164          $dir = 1;
 165          $revexpected = 1362525926;
 166          $revfound = $pagelog->getRelativeRevision($rev, $dir);
 167          $this->assertEquals($revexpected, $revfound);
 168  
 169          $dir = 2;
 170          $revexpected = 1362526039;
 171          $revfound = $pagelog->getRelativeRevision($rev, $dir);
 172          $this->assertEquals($revexpected, $revfound);
 173  
 174          $dir = -1;
 175          $revexpected = 1362525359;
 176          $revfound = $pagelog->getRelativeRevision($rev, $dir);
 177          $this->assertEquals($revexpected, $revfound);
 178  
 179          $dir = -2;
 180          $revexpected = 1362525145;
 181          $revfound = $pagelog->getRelativeRevision($rev, $dir);
 182          $this->assertEquals($revexpected, $revfound);
 183      }
 184  
 185  
 186      /**
 187       * request existing rev with chucked reading, chunk size smaller than line length
 188       */
 189      function test_requestnextrev_chunkshorterthanlines() {
 190          $rev = 1362525899;
 191  
 192          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20);
 193  
 194          $dir = 1;
 195          $revexpected = 1362525926;
 196          $revfound = $pagelog->getRelativeRevision($rev, $dir);
 197          $this->assertEquals($revexpected, $revfound);
 198  
 199          $dir = 2;
 200          $revexpected = 1362526039;
 201          $revfound = $pagelog->getRelativeRevision($rev, $dir);
 202          $this->assertEquals($revexpected, $revfound);
 203  
 204          $dir = -1;
 205          $revexpected = 1362525359;
 206          $revfound = $pagelog->getRelativeRevision($rev, $dir);
 207          $this->assertEquals($revexpected, $revfound);
 208  
 209          $dir = -2;
 210          $revexpected = 1362525145;
 211          $revfound = $pagelog->getRelativeRevision($rev, $dir);
 212          $this->assertEquals($revexpected, $revfound);
 213      }
 214  
 215      /**
 216       * request existing rev
 217       */
 218      function test_requestnextfifthrev() {
 219          $rev = 1362525899;
 220          $dir = 5;
 221          $revexpected = 1362526767;
 222  
 223          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
 224          $revfound = $pagelog->getRelativeRevision($rev, $dir);
 225          $this->assertEquals($revexpected, $revfound);
 226      }
 227  
 228      /**
 229       * request existing rev with chucked reading
 230       */
 231      function test_requestnextfifthrev_chuncked() {
 232          $rev = 1362525899;
 233          $dir = 5;
 234          $revexpected = 1362526767;
 235  
 236          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
 237          $revfound = $pagelog->getRelativeRevision($rev, $dir);
 238          $this->assertEquals($revexpected, $revfound);
 239      }
 240  
 241      /**
 242       * request existing rev
 243       */
 244      function test_requestprevrev() {
 245          $rev = 1362525899;
 246          $dir1 = -1;
 247          $dir5 = -5;
 248          $revexpected1 = 1362525359;
 249          $revexpected5 = 1360110636;
 250  
 251          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
 252          $revfound1 = $pagelog->getRelativeRevision($rev, $dir1);
 253          $this->assertEquals($revexpected1, $revfound1);
 254  
 255          $revfound5 = $pagelog->getRelativeRevision($rev, $dir5);
 256          $this->assertEquals($revexpected5, $revfound5);
 257      }
 258  
 259      /**
 260       * request existing rev with chucked reading
 261       */
 262      function test_requestprevrev_chuncked() {
 263          $rev = 1362525899;
 264          $dir1 = -1;
 265          $dir5 = -5;
 266          $revexpected1 = 1362525359;
 267          $revexpected5 = 1360110636;
 268  
 269          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
 270          $revfound1 = $pagelog->getRelativeRevision($rev, $dir1);
 271          $this->assertEquals($revexpected1, $revfound1);
 272  
 273          $revfound5 = $pagelog->getRelativeRevision($rev, $dir5);
 274          $this->assertEquals($revexpected5, $revfound5);
 275      }
 276  
 277      /**
 278       * request after recentest version in changelog
 279       */
 280      function test_requestrecentestlogline_next() {
 281          $rev = 1374261194;
 282          $dir = 1;
 283          $revexpected = false;
 284  
 285          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
 286          $revfound = $pagelog->getRelativeRevision($rev, $dir);
 287          $this->assertEquals($revexpected, $revfound);
 288      }
 289  
 290      /**
 291       * request after recentest version in changelog, with chuncked reading
 292       */
 293      function test_requestrecentestlogline_next_chuncked() {
 294          $rev = 1374261194;
 295          $dir = 1;
 296          $revexpected = false;
 297  
 298          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
 299          $revfound = $pagelog->getRelativeRevision($rev, $dir);
 300          $this->assertEquals($revexpected, $revfound);
 301      }
 302  
 303      /**
 304       * request before current version
 305       */
 306      function test_requestrecentestlogline_prev() {
 307          $rev = 1374261194;
 308          $dir = -1;
 309          $revexpected = 1371579614;
 310  
 311          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
 312          $revfound = $pagelog->getRelativeRevision($rev, $dir);
 313          $this->assertEquals($revexpected, $revfound);
 314      }
 315  
 316      /**
 317       * request before current version, with chuncked reading
 318       */
 319      function test_requestrecentestlogline_prev_chuncked() {
 320          $rev = 1374261194;
 321          $dir = -1;
 322          $revexpected = 1371579614;
 323  
 324          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
 325          $revfound = $pagelog->getRelativeRevision($rev, $dir);
 326          $this->assertEquals($revexpected, $revfound);
 327      }
 328  
 329      /**
 330       * Request negative revision
 331       * looks in positive direction, so it catches the oldest revision
 332       */
 333      function test_negativerev_posdir() {
 334          $rev = -10;
 335          $dir = 1;
 336          $revexpected = 1360110636;
 337  
 338          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
 339          $revfound = $pagelog->getRelativeRevision($rev, $dir);
 340          $this->assertEquals($revexpected, $revfound);
 341      }
 342  
 343      /**
 344       * Request negative revision
 345       * looks in negative direction, but there is nothing
 346       */
 347      function test_negativerev_negdir() {
 348          $rev = -10;
 349          $dir = -1;
 350          $revexpected = false;
 351  
 352          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
 353          $revfound = $pagelog->getRelativeRevision($rev, $dir);
 354          $this->assertEquals($revexpected, $revfound);
 355      }
 356  
 357      /**
 358       * Start at non existing revision somewhere between existing revisions
 359       */
 360      function test_startatnotexistingrev_next() {
 361          $rev = 1362525890;
 362          $dir = 1;
 363          $revexpected = 1362525899;
 364  
 365          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
 366          $revfound = $pagelog->getRelativeRevision($rev, $dir);
 367          $this->assertEquals($revexpected, $revfound);
 368      }
 369  
 370      /**
 371       * Start at non existing revision somewhere between existing revisions
 372       */
 373      function test_startatnotexistingrev_prev() {
 374          $rev = 1362525890;
 375          $dir = -1;
 376          $revexpected = 1362525359;
 377  
 378          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
 379          $revfound = $pagelog->getRelativeRevision($rev, $dir);
 380          $this->assertEquals($revexpected, $revfound);
 381      }
 382  
 383      function test_iscurrentpagerevision() {
 384          $rev = 1385051947;
 385          $currentexpected = true;
 386  
 387          //set a known timestamp
 388          touch(wikiFN($this->pageid), $rev);
 389  
 390          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
 391          $current = $pagelog->isCurrentRevision($rev);
 392          $this->assertEquals($currentexpected, $current);
 393      }
 394  
 395      function test_isnotcurrentpagerevision() {
 396          $rev = 1385051947;
 397          $not_current_rev = $rev - 1;
 398          $currentexpected = false;
 399  
 400          //set a known timestamp
 401          touch(wikiFN($this->pageid), $rev);
 402  
 403          $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
 404          $current = $pagelog->isCurrentRevision($not_current_rev);
 405          $this->assertEquals($currentexpected, $current);
 406      }
 407  
 408      function test_notexistingcurrentpage() {
 409          $rev = 1385051947;
 410          $currentexpected = false;
 411  
 412          $pagelog = new PageChangeLog('nonexistingpage', $chunk_size = 8192);
 413          $current = $pagelog->isCurrentRevision($rev);
 414          $this->assertEquals($currentexpected, $current);
 415      }
 416  }