[ Index ]

PHP Cross Reference of DokuWiki

title

Body

[close]

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

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