155545bccSGerrit Uitslag<?php 255545bccSGerrit Uitslag 355545bccSGerrit Uitslag/** 455545bccSGerrit Uitslag * Tests for requesting revisioninfo of a revision of a page with getRevisionInfo() 555545bccSGerrit Uitslag * 655545bccSGerrit Uitslag * This class uses the files: 755545bccSGerrit Uitslag * - data/pages/mailinglist.txt 855545bccSGerrit Uitslag * - data/meta/mailinglist.changes 955545bccSGerrit Uitslag */ 1055545bccSGerrit Uitslagclass changelog_getrelativerevision_test extends DokuWikiTest { 1155545bccSGerrit Uitslag 1255545bccSGerrit Uitslag private $logline = "1362525899 127.0.0.1 E mailinglist pubcie [Data entry] \n"; 1355545bccSGerrit Uitslag private $pageid = 'mailinglist'; 1455545bccSGerrit Uitslag 1555545bccSGerrit Uitslag function setup() { 1655545bccSGerrit Uitslag parent::setup(); 1755545bccSGerrit Uitslag global $cache_revinfo; 1855545bccSGerrit Uitslag $cache =& $cache_revinfo; 1955545bccSGerrit Uitslag if(isset($cache['nonexist'])) { 2055545bccSGerrit Uitslag unset($cache['nonexist']); 2155545bccSGerrit Uitslag } 2255545bccSGerrit Uitslag if(isset($cache['mailinglist'])) { 2355545bccSGerrit Uitslag unset($cache['mailinglist']); 2455545bccSGerrit Uitslag } 2555545bccSGerrit Uitslag } 2655545bccSGerrit Uitslag 2755545bccSGerrit Uitslag /** 2855545bccSGerrit Uitslag * no nonexist.changes meta file available 2955545bccSGerrit Uitslag */ 3055545bccSGerrit Uitslag function test_changemetadatanotexists() { 3155545bccSGerrit Uitslag $rev = 1362525899; 3255545bccSGerrit Uitslag $dir = 1; 3355545bccSGerrit Uitslag $id = 'nonexist'; 3455545bccSGerrit Uitslag $revsexpected = false; 3555545bccSGerrit Uitslag 36047bad06SGerrit Uitslag $pagelog = new PageChangeLog($id, $chunk_size = 8192); 37047bad06SGerrit Uitslag $revs = $pagelog->getRelativeRevision($rev, $dir); 3855545bccSGerrit Uitslag $this->assertEquals($revsexpected, $revs); 3955545bccSGerrit Uitslag } 4055545bccSGerrit Uitslag 4155545bccSGerrit Uitslag /** 4255545bccSGerrit Uitslag * no nonexist.changes meta file available 4355545bccSGerrit Uitslag */ 4455545bccSGerrit Uitslag function test_nodirection() { 4555545bccSGerrit Uitslag $rev = 1362525899; 4655545bccSGerrit Uitslag $dir = 0; 4755545bccSGerrit Uitslag $revsexpected = false; 4855545bccSGerrit Uitslag 49047bad06SGerrit Uitslag $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 50047bad06SGerrit Uitslag $revs = $pagelog->getRelativeRevision($rev, $dir); 5155545bccSGerrit Uitslag $this->assertEquals($revsexpected, $revs); 5255545bccSGerrit Uitslag } 5355545bccSGerrit Uitslag 5455545bccSGerrit Uitslag /** 5555545bccSGerrit Uitslag * start at exact current revision of mailinglist page 5655545bccSGerrit Uitslag * 5755545bccSGerrit Uitslag */ 5855545bccSGerrit Uitslag function test_startatexactcurrentrev() { 59*332817fcSGerrit Uitslag $rev = 1385051947; 6055545bccSGerrit Uitslag $dir = 1; 61*332817fcSGerrit Uitslag $revsexpectedpos = false; 62*332817fcSGerrit Uitslag $revsexpectedneg = 1374261194; 6355545bccSGerrit Uitslag 64*332817fcSGerrit Uitslag //set a known timestamp 65*332817fcSGerrit Uitslag touch(wikiFN($this->pageid), $rev); 6655545bccSGerrit Uitslag 67047bad06SGerrit Uitslag $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 68047bad06SGerrit Uitslag $revs = $pagelog->getRelativeRevision($rev, $dir); 69*332817fcSGerrit Uitslag $this->assertEquals($revsexpectedpos, $revs); 70*332817fcSGerrit Uitslag 71*332817fcSGerrit Uitslag $revs = $pagelog->getRelativeRevision($rev, -$dir); 72*332817fcSGerrit Uitslag $this->assertEquals($revsexpectedneg, $revs); 73*332817fcSGerrit Uitslag } 74*332817fcSGerrit Uitslag 75*332817fcSGerrit Uitslag /** 76*332817fcSGerrit Uitslag * start at exact last revision of mailinglist page 77*332817fcSGerrit Uitslag * 78*332817fcSGerrit Uitslag */ 79*332817fcSGerrit Uitslag function test_startatexactlastrev() { 80*332817fcSGerrit Uitslag $rev = 1360110636; 81*332817fcSGerrit Uitslag $dir = 1; 82*332817fcSGerrit Uitslag $revsexpectedpos = 1361901536; 83*332817fcSGerrit Uitslag $revsexpectedneg = false; 84*332817fcSGerrit Uitslag 85*332817fcSGerrit Uitslag $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 86*332817fcSGerrit Uitslag $revs = $pagelog->getRelativeRevision($rev, $dir); 87*332817fcSGerrit Uitslag $this->assertEquals($revsexpectedpos, $revs); 88*332817fcSGerrit Uitslag 89*332817fcSGerrit Uitslag $revs = $pagelog->getRelativeRevision($rev, -$dir); 90*332817fcSGerrit Uitslag $this->assertEquals($revsexpectedneg, $revs); 91*332817fcSGerrit Uitslag } 92*332817fcSGerrit Uitslag 93*332817fcSGerrit Uitslag /** 94*332817fcSGerrit Uitslag * start at exact one before last revision of mailinglist page 95*332817fcSGerrit Uitslag * 96*332817fcSGerrit Uitslag */ 97*332817fcSGerrit Uitslag function test_requestlastrevisions() { 98*332817fcSGerrit Uitslag $rev = 1361901536; 99*332817fcSGerrit Uitslag $dir = -1; 100*332817fcSGerrit Uitslag $revsexpectedlast = 1360110636; 101*332817fcSGerrit Uitslag $revsexpectedbeforelast = false; 102*332817fcSGerrit Uitslag 103*332817fcSGerrit Uitslag $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 104*332817fcSGerrit Uitslag $revs = $pagelog->getRelativeRevision($rev, $dir); 105*332817fcSGerrit Uitslag $this->assertEquals($revsexpectedlast, $revs); 106*332817fcSGerrit Uitslag 107*332817fcSGerrit Uitslag $revs = $pagelog->getRelativeRevision($rev, 2 * $dir); 108*332817fcSGerrit Uitslag $this->assertEquals($revsexpectedbeforelast, $revs); 10955545bccSGerrit Uitslag } 11055545bccSGerrit Uitslag 11155545bccSGerrit Uitslag /** 11255545bccSGerrit Uitslag * request existing rev 11355545bccSGerrit Uitslag */ 11455545bccSGerrit Uitslag function test_requestrev() { 11555545bccSGerrit Uitslag $rev = 1362525359; 11655545bccSGerrit Uitslag $dir = 1; 11755545bccSGerrit Uitslag $revexpected = 1362525899; 11855545bccSGerrit Uitslag $infoexpected = parseChangelogLine($this->logline); 11955545bccSGerrit Uitslag 120047bad06SGerrit Uitslag $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 121047bad06SGerrit Uitslag $revfound = $pagelog->getRelativeRevision($rev, $dir); 12255545bccSGerrit Uitslag $this->assertEquals($revexpected, $revfound); 12355545bccSGerrit Uitslag //checked info returned from cache 124047bad06SGerrit Uitslag $info = $pagelog->getRevisionInfo($revfound); 12555545bccSGerrit Uitslag $this->assertEquals($infoexpected, $info); 12655545bccSGerrit Uitslag } 12755545bccSGerrit Uitslag 12855545bccSGerrit Uitslag /** 12955545bccSGerrit Uitslag * request existing rev with chucked reading 13055545bccSGerrit Uitslag */ 13155545bccSGerrit Uitslag function test_requestnextrev_chuncked() { 13255545bccSGerrit Uitslag $rev = 1362525899; 13355545bccSGerrit Uitslag $dir = 1; 13455545bccSGerrit Uitslag $revexpected = 1362525926; 13555545bccSGerrit Uitslag 136047bad06SGerrit Uitslag $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512); 137047bad06SGerrit Uitslag $revfound = $pagelog->getRelativeRevision($rev, $dir); 13855545bccSGerrit Uitslag $this->assertEquals($revexpected, $revfound); 13955545bccSGerrit Uitslag } 14055545bccSGerrit Uitslag 14155545bccSGerrit Uitslag /** 14255545bccSGerrit Uitslag * request existing rev 14355545bccSGerrit Uitslag */ 14455545bccSGerrit Uitslag function test_requestnextfifthrev() { 14555545bccSGerrit Uitslag $rev = 1362525899; 14655545bccSGerrit Uitslag $dir = 5; 14755545bccSGerrit Uitslag $revexpected = 1362526767; 14855545bccSGerrit Uitslag 149047bad06SGerrit Uitslag $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 150047bad06SGerrit Uitslag $revfound = $pagelog->getRelativeRevision($rev, $dir); 15155545bccSGerrit Uitslag $this->assertEquals($revexpected, $revfound); 15255545bccSGerrit Uitslag } 15355545bccSGerrit Uitslag 15455545bccSGerrit Uitslag /** 15555545bccSGerrit Uitslag * request existing rev with chucked reading 15655545bccSGerrit Uitslag */ 15755545bccSGerrit Uitslag function test_requestnextfifthrev_chuncked() { 15855545bccSGerrit Uitslag $rev = 1362525899; 15955545bccSGerrit Uitslag $dir = 5; 16055545bccSGerrit Uitslag $revexpected = 1362526767; 16155545bccSGerrit Uitslag 162047bad06SGerrit Uitslag $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512); 163047bad06SGerrit Uitslag $revfound = $pagelog->getRelativeRevision($rev, $dir); 16455545bccSGerrit Uitslag $this->assertEquals($revexpected, $revfound); 16555545bccSGerrit Uitslag } 16655545bccSGerrit Uitslag 16755545bccSGerrit Uitslag /** 16855545bccSGerrit Uitslag * request existing rev 16955545bccSGerrit Uitslag */ 17055545bccSGerrit Uitslag function test_requestprevrev() { 17155545bccSGerrit Uitslag $rev = 1362525899; 17255545bccSGerrit Uitslag $dir1 = -1; 17355545bccSGerrit Uitslag $dir5 = -5; 17455545bccSGerrit Uitslag $revexpected1 = 1362525359; 17555545bccSGerrit Uitslag $revexpected5 = 1360110636; 17655545bccSGerrit Uitslag 177047bad06SGerrit Uitslag $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 178047bad06SGerrit Uitslag $revfound1 = $pagelog->getRelativeRevision($rev, $dir1); 17955545bccSGerrit Uitslag $this->assertEquals($revexpected1, $revfound1); 18055545bccSGerrit Uitslag 181047bad06SGerrit Uitslag $revfound5 = $pagelog->getRelativeRevision($rev, $dir5); 18255545bccSGerrit Uitslag $this->assertEquals($revexpected5, $revfound5); 18355545bccSGerrit Uitslag } 18455545bccSGerrit Uitslag 18555545bccSGerrit Uitslag /** 18655545bccSGerrit Uitslag * request existing rev with chucked reading 18755545bccSGerrit Uitslag */ 18855545bccSGerrit Uitslag function test_requestprevrev_chuncked() { 18955545bccSGerrit Uitslag $rev = 1362525899; 19055545bccSGerrit Uitslag $dir1 = -1; 19155545bccSGerrit Uitslag $dir5 = -5; 19255545bccSGerrit Uitslag $revexpected1 = 1362525359; 19355545bccSGerrit Uitslag $revexpected5 = 1360110636; 19455545bccSGerrit Uitslag 195047bad06SGerrit Uitslag $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512); 196047bad06SGerrit Uitslag $revfound1 = $pagelog->getRelativeRevision($rev, $dir1); 19755545bccSGerrit Uitslag $this->assertEquals($revexpected1, $revfound1); 19855545bccSGerrit Uitslag 199047bad06SGerrit Uitslag $revfound5 = $pagelog->getRelativeRevision($rev, $dir5); 20055545bccSGerrit Uitslag $this->assertEquals($revexpected5, $revfound5); 20155545bccSGerrit Uitslag } 20255545bccSGerrit Uitslag 20355545bccSGerrit Uitslag /** 20455545bccSGerrit Uitslag * request after recentest version in changelog 20555545bccSGerrit Uitslag */ 20655545bccSGerrit Uitslag function test_requestrecentestlogline_next() { 20755545bccSGerrit Uitslag $rev = 1374261194; 20855545bccSGerrit Uitslag $dir = 1; 20955545bccSGerrit Uitslag $revexpected = false; 21055545bccSGerrit Uitslag 211047bad06SGerrit Uitslag $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 212047bad06SGerrit Uitslag $revfound = $pagelog->getRelativeRevision($rev, $dir); 21355545bccSGerrit Uitslag $this->assertEquals($revexpected, $revfound); 21455545bccSGerrit Uitslag } 21555545bccSGerrit Uitslag 21655545bccSGerrit Uitslag /** 21755545bccSGerrit Uitslag * request after recentest version in changelog, with chuncked reading 21855545bccSGerrit Uitslag */ 21955545bccSGerrit Uitslag function test_requestrecentestlogline_next_chuncked() { 22055545bccSGerrit Uitslag $rev = 1374261194; 22155545bccSGerrit Uitslag $dir = 1; 22255545bccSGerrit Uitslag $revexpected = false; 22355545bccSGerrit Uitslag 224047bad06SGerrit Uitslag $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512); 225047bad06SGerrit Uitslag $revfound = $pagelog->getRelativeRevision($rev, $dir); 22655545bccSGerrit Uitslag $this->assertEquals($revexpected, $revfound); 22755545bccSGerrit Uitslag } 22855545bccSGerrit Uitslag 22955545bccSGerrit Uitslag /** 23055545bccSGerrit Uitslag * request before current version 23155545bccSGerrit Uitslag */ 23255545bccSGerrit Uitslag function test_requestrecentestlogline_prev() { 23355545bccSGerrit Uitslag $rev = 1374261194; 23455545bccSGerrit Uitslag $dir = -1; 23555545bccSGerrit Uitslag $revexpected = 1371579614; 23655545bccSGerrit Uitslag 237047bad06SGerrit Uitslag $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 238047bad06SGerrit Uitslag $revfound = $pagelog->getRelativeRevision($rev, $dir); 23955545bccSGerrit Uitslag $this->assertEquals($revexpected, $revfound); 24055545bccSGerrit Uitslag } 24155545bccSGerrit Uitslag 24255545bccSGerrit Uitslag /** 24355545bccSGerrit Uitslag * request before current version, with chuncked reading 24455545bccSGerrit Uitslag */ 24555545bccSGerrit Uitslag function test_requestrecentestlogline_prev_chuncked() { 24655545bccSGerrit Uitslag $rev = 1374261194; 24755545bccSGerrit Uitslag $dir = -1; 24855545bccSGerrit Uitslag $revexpected = 1371579614; 24955545bccSGerrit Uitslag 250047bad06SGerrit Uitslag $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512); 251047bad06SGerrit Uitslag $revfound = $pagelog->getRelativeRevision($rev, $dir); 25255545bccSGerrit Uitslag $this->assertEquals($revexpected, $revfound); 25355545bccSGerrit Uitslag } 25455545bccSGerrit Uitslag 25555545bccSGerrit Uitslag /** 25655545bccSGerrit Uitslag * Request negative revision 25755545bccSGerrit Uitslag * looks in positive direction, so it catches the oldest revision 25855545bccSGerrit Uitslag */ 25955545bccSGerrit Uitslag function test_negativerev_posdir() { 26055545bccSGerrit Uitslag $rev = -10; 26155545bccSGerrit Uitslag $dir = 1; 26255545bccSGerrit Uitslag $revexpected = 1360110636; 26355545bccSGerrit Uitslag 264047bad06SGerrit Uitslag $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 265047bad06SGerrit Uitslag $revfound = $pagelog->getRelativeRevision($rev, $dir); 26655545bccSGerrit Uitslag $this->assertEquals($revexpected, $revfound); 26755545bccSGerrit Uitslag } 26855545bccSGerrit Uitslag 26955545bccSGerrit Uitslag /** 27055545bccSGerrit Uitslag * Request negative revision 27155545bccSGerrit Uitslag * looks in negative direction, but there is nothing 27255545bccSGerrit Uitslag */ 27355545bccSGerrit Uitslag function test_negativerev_negdir() { 27455545bccSGerrit Uitslag $rev = -10; 27555545bccSGerrit Uitslag $dir = -1; 27655545bccSGerrit Uitslag $revexpected = false; 27755545bccSGerrit Uitslag 278047bad06SGerrit Uitslag $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 279047bad06SGerrit Uitslag $revfound = $pagelog->getRelativeRevision($rev, $dir); 28055545bccSGerrit Uitslag $this->assertEquals($revexpected, $revfound); 28155545bccSGerrit Uitslag } 28255545bccSGerrit Uitslag 28355545bccSGerrit Uitslag /** 28455545bccSGerrit Uitslag * Start at non existing revision somewhere between existing revisions 28555545bccSGerrit Uitslag */ 28655545bccSGerrit Uitslag function test_startatnotexistingrev_next() { 28755545bccSGerrit Uitslag $rev = 1362525890; 28855545bccSGerrit Uitslag $dir = 1; 28955545bccSGerrit Uitslag $revexpected = 1362525899; 29055545bccSGerrit Uitslag 291047bad06SGerrit Uitslag $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 292047bad06SGerrit Uitslag $revfound = $pagelog->getRelativeRevision($rev, $dir); 29355545bccSGerrit Uitslag $this->assertEquals($revexpected, $revfound); 29455545bccSGerrit Uitslag } 29555545bccSGerrit Uitslag 29655545bccSGerrit Uitslag /** 29755545bccSGerrit Uitslag * Start at non existing revision somewhere between existing revisions 29855545bccSGerrit Uitslag */ 29955545bccSGerrit Uitslag function test_startatnotexistingrev_prev() { 30055545bccSGerrit Uitslag $rev = 1362525890; 30155545bccSGerrit Uitslag $dir = -1; 30255545bccSGerrit Uitslag $revexpected = 1362525359; 30355545bccSGerrit Uitslag 304047bad06SGerrit Uitslag $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 305047bad06SGerrit Uitslag $revfound = $pagelog->getRelativeRevision($rev, $dir); 30655545bccSGerrit Uitslag $this->assertEquals($revexpected, $revfound); 30755545bccSGerrit Uitslag } 3080f13c836SGerrit Uitslag 3090f13c836SGerrit Uitslag function test_iscurrentpagerevision() { 3100f13c836SGerrit Uitslag $rev = 1385051947; 3110f13c836SGerrit Uitslag $currentexpected = true; 3120f13c836SGerrit Uitslag 3130f13c836SGerrit Uitslag //set a known timestamp 3140f13c836SGerrit Uitslag touch(wikiFN($this->pageid), $rev); 3150f13c836SGerrit Uitslag 316047bad06SGerrit Uitslag $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 317047bad06SGerrit Uitslag $current = $pagelog->isCurrentRevision($rev); 3180f13c836SGerrit Uitslag $this->assertEquals($currentexpected, $current); 3190f13c836SGerrit Uitslag } 3200f13c836SGerrit Uitslag 3210f13c836SGerrit Uitslag function test_isnotcurrentpagerevision() { 3220f13c836SGerrit Uitslag $rev = 1385051947; 3230f13c836SGerrit Uitslag $not_current_rev = $rev - 1; 3240f13c836SGerrit Uitslag $currentexpected = false; 3250f13c836SGerrit Uitslag 3260f13c836SGerrit Uitslag //set a known timestamp 3270f13c836SGerrit Uitslag touch(wikiFN($this->pageid), $rev); 3280f13c836SGerrit Uitslag 329047bad06SGerrit Uitslag $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192); 330047bad06SGerrit Uitslag $current = $pagelog->isCurrentRevision($not_current_rev); 3310f13c836SGerrit Uitslag $this->assertEquals($currentexpected, $current); 3320f13c836SGerrit Uitslag } 3330f13c836SGerrit Uitslag 3340f13c836SGerrit Uitslag function test_notexistingcurrentpage() { 3350f13c836SGerrit Uitslag $rev = 1385051947; 3360f13c836SGerrit Uitslag $currentexpected = false; 3370f13c836SGerrit Uitslag 338047bad06SGerrit Uitslag $pagelog = new PageChangeLog('nonexistingpage', $chunk_size = 8192); 339047bad06SGerrit Uitslag $current = $pagelog->isCurrentRevision($rev); 3400f13c836SGerrit Uitslag $this->assertEquals($currentexpected, $current); 3410f13c836SGerrit Uitslag } 34255545bccSGerrit Uitslag}