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