xref: /dokuwiki/_test/tests/inc/changelog_getrelativerevision.test.php (revision 01e8d739c8b53aeb1d0a653331d65eb1f8394002)
155545bccSGerrit Uitslag<?php
255545bccSGerrit Uitslag
371951841SGerrit Uitslaguse dokuwiki\ChangeLog\ChangeLog;
40c3a5702SAndreas Gohruse dokuwiki\ChangeLog\PageChangeLog;
50c3a5702SAndreas Gohr
655545bccSGerrit Uitslag/**
755545bccSGerrit Uitslag * Tests for requesting revisioninfo of a revision of a page with getRevisionInfo()
855545bccSGerrit Uitslag *
955545bccSGerrit Uitslag * This class uses the files:
1055545bccSGerrit Uitslag * - data/pages/mailinglist.txt
1155545bccSGerrit Uitslag * - data/meta/mailinglist.changes
1255545bccSGerrit Uitslag */
1355545bccSGerrit Uitslagclass changelog_getrelativerevision_test extends DokuWikiTest {
1455545bccSGerrit Uitslag
1555545bccSGerrit Uitslag    private $logline = "1362525899	127.0.0.1	E	mailinglist	pubcie	[Data entry] 	\n";
1655545bccSGerrit Uitslag    private $pageid = 'mailinglist';
1755545bccSGerrit Uitslag
18*01e8d739SAndreas Gohr    /** @var string original fixture content of the changelog, restored before each test */
19*01e8d739SAndreas Gohr    private static $originalChangelog;
20*01e8d739SAndreas Gohr
21*01e8d739SAndreas Gohr    public static function setUpBeforeClass() : void {
22*01e8d739SAndreas Gohr        parent::setUpBeforeClass();
23*01e8d739SAndreas Gohr        self::$originalChangelog = file_get_contents(metaFN('mailinglist', '.changes'));
24*01e8d739SAndreas Gohr    }
25*01e8d739SAndreas Gohr
261c33cec3SAndreas Gohr    function setup() : void {
2755545bccSGerrit Uitslag        parent::setup();
2855545bccSGerrit Uitslag        global $cache_revinfo;
2955545bccSGerrit Uitslag        $cache =& $cache_revinfo;
3055545bccSGerrit Uitslag        unset($cache['nonexist']);
3155545bccSGerrit Uitslag        unset($cache['mailinglist']);
32*01e8d739SAndreas Gohr        // Restore fixture state per test. Two tests in this class explicitly touch the
33*01e8d739SAndreas Gohr        // page file forward (test_startatexactcurrentrev / test_iscurrentpagerevision /
34*01e8d739SAndreas Gohr        // test_isnotcurrentpagerevision), and getCurrentRevisionInfo now persists the
35*01e8d739SAndreas Gohr        // synthesized external-edit entry on first observation. Without restoring, the
36*01e8d739SAndreas Gohr        // first such test mutates the changelog and subsequent tests trigger another
37*01e8d739SAndreas Gohr        // round of "rescue" persistence (file mtime older than last log entry).
38*01e8d739SAndreas Gohr        file_put_contents(metaFN('mailinglist', '.changes'), self::$originalChangelog);
39*01e8d739SAndreas Gohr        @touch(wikiFN($this->pageid), 1374261194);
40*01e8d739SAndreas Gohr        clearstatcache(false, wikiFN($this->pageid));
4155545bccSGerrit Uitslag    }
4255545bccSGerrit Uitslag
4355545bccSGerrit Uitslag    /**
4455545bccSGerrit Uitslag     * no nonexist.changes meta file available
4555545bccSGerrit Uitslag     */
4655545bccSGerrit Uitslag    function test_changemetadatanotexists() {
4755545bccSGerrit Uitslag        $rev = 1362525899;
4855545bccSGerrit Uitslag        $dir = 1;
4955545bccSGerrit Uitslag        $id = 'nonexist';
5055545bccSGerrit Uitslag        $revsexpected = false;
5155545bccSGerrit Uitslag
52047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($id, $chunk_size = 8192);
53047bad06SGerrit Uitslag        $revs = $pagelog->getRelativeRevision($rev, $dir);
5455545bccSGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
5555545bccSGerrit Uitslag    }
5655545bccSGerrit Uitslag
5755545bccSGerrit Uitslag    /**
5855545bccSGerrit Uitslag     * no nonexist.changes meta file available
5955545bccSGerrit Uitslag     */
6055545bccSGerrit Uitslag    function test_nodirection() {
6155545bccSGerrit Uitslag        $rev = 1362525899;
6255545bccSGerrit Uitslag        $dir = 0;
6355545bccSGerrit Uitslag        $revsexpected = false;
6455545bccSGerrit Uitslag
65047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
66047bad06SGerrit Uitslag        $revs = $pagelog->getRelativeRevision($rev, $dir);
6755545bccSGerrit Uitslag        $this->assertEquals($revsexpected, $revs);
6855545bccSGerrit Uitslag    }
6955545bccSGerrit Uitslag
7055545bccSGerrit Uitslag    /**
7155545bccSGerrit Uitslag     * start at exact current revision of mailinglist page
7255545bccSGerrit Uitslag     *
7355545bccSGerrit Uitslag     */
7455545bccSGerrit Uitslag    function test_startatexactcurrentrev() {
75332817fcSGerrit Uitslag        $rev = 1385051947;
7655545bccSGerrit Uitslag        $dir = 1;
77332817fcSGerrit Uitslag        $revsexpectedpos = false;
78332817fcSGerrit Uitslag        $revsexpectedneg = 1374261194;
7955545bccSGerrit Uitslag
80332817fcSGerrit Uitslag        //set a known timestamp
81332817fcSGerrit Uitslag        touch(wikiFN($this->pageid), $rev);
8255545bccSGerrit Uitslag
83047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
84047bad06SGerrit Uitslag        $revs = $pagelog->getRelativeRevision($rev, $dir);
85332817fcSGerrit Uitslag        $this->assertEquals($revsexpectedpos, $revs);
86332817fcSGerrit Uitslag
87332817fcSGerrit Uitslag        $revs = $pagelog->getRelativeRevision($rev, -$dir);
88332817fcSGerrit Uitslag        $this->assertEquals($revsexpectedneg, $revs);
89332817fcSGerrit Uitslag    }
90332817fcSGerrit Uitslag
91332817fcSGerrit Uitslag    /**
92332817fcSGerrit Uitslag     * start at exact last revision of mailinglist page
93332817fcSGerrit Uitslag     *
94332817fcSGerrit Uitslag     */
95332817fcSGerrit Uitslag    function test_startatexactlastrev() {
96332817fcSGerrit Uitslag        $rev = 1360110636;
97332817fcSGerrit Uitslag        $dir = 1;
98332817fcSGerrit Uitslag        $revsexpectedpos = 1361901536;
99332817fcSGerrit Uitslag        $revsexpectedneg = false;
100332817fcSGerrit Uitslag
101332817fcSGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
102332817fcSGerrit Uitslag        $revs = $pagelog->getRelativeRevision($rev, $dir);
103332817fcSGerrit Uitslag        $this->assertEquals($revsexpectedpos, $revs);
104332817fcSGerrit Uitslag
105332817fcSGerrit Uitslag        $revs = $pagelog->getRelativeRevision($rev, -$dir);
106332817fcSGerrit Uitslag        $this->assertEquals($revsexpectedneg, $revs);
107332817fcSGerrit Uitslag    }
108332817fcSGerrit Uitslag
109332817fcSGerrit Uitslag    /**
110332817fcSGerrit Uitslag     * start at exact one before last revision of mailinglist page
111332817fcSGerrit Uitslag     *
112332817fcSGerrit Uitslag     */
113332817fcSGerrit Uitslag    function test_requestlastrevisions() {
114332817fcSGerrit Uitslag        $rev = 1361901536;
115332817fcSGerrit Uitslag        $dir = -1;
116332817fcSGerrit Uitslag        $revsexpectedlast = 1360110636;
117332817fcSGerrit Uitslag        $revsexpectedbeforelast = false;
118332817fcSGerrit Uitslag
119332817fcSGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
120332817fcSGerrit Uitslag        $revs = $pagelog->getRelativeRevision($rev, $dir);
121332817fcSGerrit Uitslag        $this->assertEquals($revsexpectedlast, $revs);
122332817fcSGerrit Uitslag
123332817fcSGerrit Uitslag        $revs = $pagelog->getRelativeRevision($rev, 2 * $dir);
124332817fcSGerrit Uitslag        $this->assertEquals($revsexpectedbeforelast, $revs);
12555545bccSGerrit Uitslag    }
12655545bccSGerrit Uitslag
12755545bccSGerrit Uitslag    /**
12859cce2d9SGerrit Uitslag     * request existing rev and check cache
12955545bccSGerrit Uitslag     */
13059cce2d9SGerrit Uitslag    function test_requestrev_checkcache() {
13155545bccSGerrit Uitslag        $rev = 1362525359;
13255545bccSGerrit Uitslag        $dir = 1;
13355545bccSGerrit Uitslag        $revexpected = 1362525899;
13471951841SGerrit Uitslag        $infoexpected = ChangeLog::parseLogLine($this->logline);
13572d8810bSGerrit Uitslag        $infoexpected['mode'] = 'page';
13655545bccSGerrit Uitslag
137047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
138047bad06SGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir);
13955545bccSGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
14059cce2d9SGerrit Uitslag
14155545bccSGerrit Uitslag        //checked info returned from cache
142047bad06SGerrit Uitslag        $info = $pagelog->getRevisionInfo($revfound);
14355545bccSGerrit Uitslag        $this->assertEquals($infoexpected, $info);
14455545bccSGerrit Uitslag    }
14555545bccSGerrit Uitslag
14655545bccSGerrit Uitslag    /**
14759cce2d9SGerrit Uitslag     * request existing rev
14859cce2d9SGerrit Uitslag     */
14959cce2d9SGerrit Uitslag    function test_requestnextrev() {
15059cce2d9SGerrit Uitslag        $rev = 1362525899;
15159cce2d9SGerrit Uitslag
15259cce2d9SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
15359cce2d9SGerrit Uitslag
15459cce2d9SGerrit Uitslag        $dir = 1;
15559cce2d9SGerrit Uitslag        $revexpected = 1362525926;
15659cce2d9SGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir);
15759cce2d9SGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
15859cce2d9SGerrit Uitslag
15959cce2d9SGerrit Uitslag        $dir = 2;
16059cce2d9SGerrit Uitslag        $revexpected = 1362526039;
16159cce2d9SGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir);
16259cce2d9SGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
16359cce2d9SGerrit Uitslag
16459cce2d9SGerrit Uitslag        $dir = -1;
16559cce2d9SGerrit Uitslag        $revexpected = 1362525359;
16659cce2d9SGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir);
16759cce2d9SGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
16859cce2d9SGerrit Uitslag
16959cce2d9SGerrit Uitslag        $dir = -2;
17059cce2d9SGerrit Uitslag        $revexpected = 1362525145;
17159cce2d9SGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir);
17259cce2d9SGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
17359cce2d9SGerrit Uitslag    }
17459cce2d9SGerrit Uitslag
17559cce2d9SGerrit Uitslag    /**
17655545bccSGerrit Uitslag     * request existing rev with chucked reading
17755545bccSGerrit Uitslag     */
17855545bccSGerrit Uitslag    function test_requestnextrev_chuncked() {
17955545bccSGerrit Uitslag        $rev = 1362525899;
18055545bccSGerrit Uitslag
181047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
18259cce2d9SGerrit Uitslag
18359cce2d9SGerrit Uitslag        $dir = 1;
18459cce2d9SGerrit Uitslag        $revexpected = 1362525926;
18559cce2d9SGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir);
18659cce2d9SGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
18759cce2d9SGerrit Uitslag
18859cce2d9SGerrit Uitslag        $dir = 2;
18959cce2d9SGerrit Uitslag        $revexpected = 1362526039;
19059cce2d9SGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir);
19159cce2d9SGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
19259cce2d9SGerrit Uitslag
19359cce2d9SGerrit Uitslag        $dir = -1;
19459cce2d9SGerrit Uitslag        $revexpected = 1362525359;
19559cce2d9SGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir);
19659cce2d9SGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
19759cce2d9SGerrit Uitslag
19859cce2d9SGerrit Uitslag        $dir = -2;
19959cce2d9SGerrit Uitslag        $revexpected = 1362525145;
20059cce2d9SGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir);
20159cce2d9SGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
20259cce2d9SGerrit Uitslag    }
20359cce2d9SGerrit Uitslag
20459cce2d9SGerrit Uitslag
20559cce2d9SGerrit Uitslag    /**
20659cce2d9SGerrit Uitslag     * request existing rev with chucked reading, chunk size smaller than line length
20759cce2d9SGerrit Uitslag     */
20859cce2d9SGerrit Uitslag    function test_requestnextrev_chunkshorterthanlines() {
20959cce2d9SGerrit Uitslag        $rev = 1362525899;
21059cce2d9SGerrit Uitslag
21159cce2d9SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 20);
21259cce2d9SGerrit Uitslag
21359cce2d9SGerrit Uitslag        $dir = 1;
21459cce2d9SGerrit Uitslag        $revexpected = 1362525926;
21559cce2d9SGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir);
21659cce2d9SGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
21759cce2d9SGerrit Uitslag
21859cce2d9SGerrit Uitslag        $dir = 2;
21959cce2d9SGerrit Uitslag        $revexpected = 1362526039;
22059cce2d9SGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir);
22159cce2d9SGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
22259cce2d9SGerrit Uitslag
22359cce2d9SGerrit Uitslag        $dir = -1;
22459cce2d9SGerrit Uitslag        $revexpected = 1362525359;
22559cce2d9SGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir);
22659cce2d9SGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
22759cce2d9SGerrit Uitslag
22859cce2d9SGerrit Uitslag        $dir = -2;
22959cce2d9SGerrit Uitslag        $revexpected = 1362525145;
230047bad06SGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir);
23155545bccSGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
23255545bccSGerrit Uitslag    }
23355545bccSGerrit Uitslag
23455545bccSGerrit Uitslag    /**
23555545bccSGerrit Uitslag     * request existing rev
23655545bccSGerrit Uitslag     */
23755545bccSGerrit Uitslag    function test_requestnextfifthrev() {
23855545bccSGerrit Uitslag        $rev = 1362525899;
23955545bccSGerrit Uitslag        $dir = 5;
24055545bccSGerrit Uitslag        $revexpected = 1362526767;
24155545bccSGerrit Uitslag
242047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
243047bad06SGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir);
24455545bccSGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
24555545bccSGerrit Uitslag    }
24655545bccSGerrit Uitslag
24755545bccSGerrit Uitslag    /**
24855545bccSGerrit Uitslag     * request existing rev with chucked reading
24955545bccSGerrit Uitslag     */
25055545bccSGerrit Uitslag    function test_requestnextfifthrev_chuncked() {
25155545bccSGerrit Uitslag        $rev = 1362525899;
25255545bccSGerrit Uitslag        $dir = 5;
25355545bccSGerrit Uitslag        $revexpected = 1362526767;
25455545bccSGerrit Uitslag
255047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
256047bad06SGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir);
25755545bccSGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
25855545bccSGerrit Uitslag    }
25955545bccSGerrit Uitslag
26055545bccSGerrit Uitslag    /**
26155545bccSGerrit Uitslag     * request existing rev
26255545bccSGerrit Uitslag     */
26355545bccSGerrit Uitslag    function test_requestprevrev() {
26455545bccSGerrit Uitslag        $rev = 1362525899;
26555545bccSGerrit Uitslag        $dir1 = -1;
26655545bccSGerrit Uitslag        $dir5 = -5;
26755545bccSGerrit Uitslag        $revexpected1 = 1362525359;
26855545bccSGerrit Uitslag        $revexpected5 = 1360110636;
26955545bccSGerrit Uitslag
270047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
271047bad06SGerrit Uitslag        $revfound1 = $pagelog->getRelativeRevision($rev, $dir1);
27255545bccSGerrit Uitslag        $this->assertEquals($revexpected1, $revfound1);
27355545bccSGerrit Uitslag
274047bad06SGerrit Uitslag        $revfound5 = $pagelog->getRelativeRevision($rev, $dir5);
27555545bccSGerrit Uitslag        $this->assertEquals($revexpected5, $revfound5);
27655545bccSGerrit Uitslag    }
27755545bccSGerrit Uitslag
27855545bccSGerrit Uitslag    /**
27955545bccSGerrit Uitslag     * request existing rev with chucked reading
28055545bccSGerrit Uitslag     */
28155545bccSGerrit Uitslag    function test_requestprevrev_chuncked() {
28255545bccSGerrit Uitslag        $rev = 1362525899;
28355545bccSGerrit Uitslag        $dir1 = -1;
28455545bccSGerrit Uitslag        $dir5 = -5;
28555545bccSGerrit Uitslag        $revexpected1 = 1362525359;
28655545bccSGerrit Uitslag        $revexpected5 = 1360110636;
28755545bccSGerrit Uitslag
288047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
289047bad06SGerrit Uitslag        $revfound1 = $pagelog->getRelativeRevision($rev, $dir1);
29055545bccSGerrit Uitslag        $this->assertEquals($revexpected1, $revfound1);
29155545bccSGerrit Uitslag
292047bad06SGerrit Uitslag        $revfound5 = $pagelog->getRelativeRevision($rev, $dir5);
29355545bccSGerrit Uitslag        $this->assertEquals($revexpected5, $revfound5);
29455545bccSGerrit Uitslag    }
29555545bccSGerrit Uitslag
29655545bccSGerrit Uitslag    /**
29755545bccSGerrit Uitslag     * request after recentest version in changelog
29855545bccSGerrit Uitslag     */
29955545bccSGerrit Uitslag    function test_requestrecentestlogline_next() {
30055545bccSGerrit Uitslag        $rev = 1374261194;
30155545bccSGerrit Uitslag        $dir = 1;
30255545bccSGerrit Uitslag        $revexpected = false;
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    }
30855545bccSGerrit Uitslag
30955545bccSGerrit Uitslag    /**
31055545bccSGerrit Uitslag     * request after recentest version in changelog, with chuncked reading
31155545bccSGerrit Uitslag     */
31255545bccSGerrit Uitslag    function test_requestrecentestlogline_next_chuncked() {
31355545bccSGerrit Uitslag        $rev = 1374261194;
31455545bccSGerrit Uitslag        $dir = 1;
31555545bccSGerrit Uitslag        $revexpected = false;
31655545bccSGerrit Uitslag
317047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
318047bad06SGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir);
31955545bccSGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
32055545bccSGerrit Uitslag    }
32155545bccSGerrit Uitslag
32255545bccSGerrit Uitslag    /**
32355545bccSGerrit Uitslag     * request before current version
32455545bccSGerrit Uitslag     */
32555545bccSGerrit Uitslag    function test_requestrecentestlogline_prev() {
32655545bccSGerrit Uitslag        $rev = 1374261194;
32755545bccSGerrit Uitslag        $dir = -1;
32855545bccSGerrit Uitslag        $revexpected = 1371579614;
32955545bccSGerrit Uitslag
330047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
331047bad06SGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir);
33255545bccSGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
33355545bccSGerrit Uitslag    }
33455545bccSGerrit Uitslag
33555545bccSGerrit Uitslag    /**
33655545bccSGerrit Uitslag     * request before current version, with chuncked reading
33755545bccSGerrit Uitslag     */
33855545bccSGerrit Uitslag    function test_requestrecentestlogline_prev_chuncked() {
33955545bccSGerrit Uitslag        $rev = 1374261194;
34055545bccSGerrit Uitslag        $dir = -1;
34155545bccSGerrit Uitslag        $revexpected = 1371579614;
34255545bccSGerrit Uitslag
343047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 512);
344047bad06SGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir);
34555545bccSGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
34655545bccSGerrit Uitslag    }
34755545bccSGerrit Uitslag
34855545bccSGerrit Uitslag    /**
34955545bccSGerrit Uitslag     * Request negative revision
35055545bccSGerrit Uitslag     * looks in positive direction, so it catches the oldest revision
35155545bccSGerrit Uitslag     */
35255545bccSGerrit Uitslag    function test_negativerev_posdir() {
35355545bccSGerrit Uitslag        $rev = -10;
35455545bccSGerrit Uitslag        $dir = 1;
35555545bccSGerrit Uitslag        $revexpected = 1360110636;
35655545bccSGerrit Uitslag
357047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
358047bad06SGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir);
35955545bccSGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
36055545bccSGerrit Uitslag    }
36155545bccSGerrit Uitslag
36255545bccSGerrit Uitslag    /**
36355545bccSGerrit Uitslag     * Request negative revision
36455545bccSGerrit Uitslag     * looks in negative direction, but there is nothing
36555545bccSGerrit Uitslag     */
36655545bccSGerrit Uitslag    function test_negativerev_negdir() {
36755545bccSGerrit Uitslag        $rev = -10;
36855545bccSGerrit Uitslag        $dir = -1;
36955545bccSGerrit Uitslag        $revexpected = false;
37055545bccSGerrit Uitslag
371047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
372047bad06SGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir);
37355545bccSGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
37455545bccSGerrit Uitslag    }
37555545bccSGerrit Uitslag
37655545bccSGerrit Uitslag    /**
37755545bccSGerrit Uitslag     * Start at non existing revision somewhere between existing revisions
37855545bccSGerrit Uitslag     */
37955545bccSGerrit Uitslag    function test_startatnotexistingrev_next() {
38055545bccSGerrit Uitslag        $rev = 1362525890;
38155545bccSGerrit Uitslag        $dir = 1;
38255545bccSGerrit Uitslag        $revexpected = 1362525899;
38355545bccSGerrit Uitslag
384047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
385047bad06SGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir);
38655545bccSGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
38755545bccSGerrit Uitslag    }
38855545bccSGerrit Uitslag
38955545bccSGerrit Uitslag    /**
39055545bccSGerrit Uitslag     * Start at non existing revision somewhere between existing revisions
39155545bccSGerrit Uitslag     */
39255545bccSGerrit Uitslag    function test_startatnotexistingrev_prev() {
39355545bccSGerrit Uitslag        $rev = 1362525890;
39455545bccSGerrit Uitslag        $dir = -1;
39555545bccSGerrit Uitslag        $revexpected = 1362525359;
39655545bccSGerrit Uitslag
397047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
398047bad06SGerrit Uitslag        $revfound = $pagelog->getRelativeRevision($rev, $dir);
39955545bccSGerrit Uitslag        $this->assertEquals($revexpected, $revfound);
40055545bccSGerrit Uitslag    }
4010f13c836SGerrit Uitslag
4020f13c836SGerrit Uitslag    function test_iscurrentpagerevision() {
4030f13c836SGerrit Uitslag        $rev = 1385051947;
4040f13c836SGerrit Uitslag        $currentexpected = true;
4050f13c836SGerrit Uitslag
4060f13c836SGerrit Uitslag        //set a known timestamp
4070f13c836SGerrit Uitslag        touch(wikiFN($this->pageid), $rev);
4080f13c836SGerrit Uitslag
409047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
410047bad06SGerrit Uitslag        $current = $pagelog->isCurrentRevision($rev);
4110f13c836SGerrit Uitslag        $this->assertEquals($currentexpected, $current);
4120f13c836SGerrit Uitslag    }
4130f13c836SGerrit Uitslag
4140f13c836SGerrit Uitslag    function test_isnotcurrentpagerevision() {
4150f13c836SGerrit Uitslag        $rev = 1385051947;
4160f13c836SGerrit Uitslag        $not_current_rev = $rev - 1;
4170f13c836SGerrit Uitslag        $currentexpected = false;
4180f13c836SGerrit Uitslag
4190f13c836SGerrit Uitslag        //set a known timestamp
4200f13c836SGerrit Uitslag        touch(wikiFN($this->pageid), $rev);
4210f13c836SGerrit Uitslag
422047bad06SGerrit Uitslag        $pagelog = new PageChangeLog($this->pageid, $chunk_size = 8192);
423047bad06SGerrit Uitslag        $current = $pagelog->isCurrentRevision($not_current_rev);
4240f13c836SGerrit Uitslag        $this->assertEquals($currentexpected, $current);
4250f13c836SGerrit Uitslag    }
4260f13c836SGerrit Uitslag
4270f13c836SGerrit Uitslag    function test_notexistingcurrentpage() {
4280f13c836SGerrit Uitslag        $rev = 1385051947;
4290f13c836SGerrit Uitslag        $currentexpected = false;
4300f13c836SGerrit Uitslag
431047bad06SGerrit Uitslag        $pagelog = new PageChangeLog('nonexistingpage', $chunk_size = 8192);
432047bad06SGerrit Uitslag        $current = $pagelog->isCurrentRevision($rev);
4330f13c836SGerrit Uitslag        $this->assertEquals($currentexpected, $current);
4340f13c836SGerrit Uitslag    }
43555545bccSGerrit Uitslag}
436