wiki.techinc.nl/tests/phpunit/includes/diff/DifferenceEngineTest.php
Timo Tijhof b4bac102b6 tests: Clean up file headers
* Remove redundant @licence/@license from test suite files.
  They already have full licence headers. And @licence raises a
  warning in Doxygen.

* Fix weird messes of comments inside comments and other things.

Change-Id: I38da8ca76330f72b8dc22b0ecf1ea69d5ea55ede
2015-04-01 00:17:12 +01:00

120 lines
3.1 KiB
PHP

<?php
/**
* @covers DifferenceEngine
*
* @todo tests for the rest of DifferenceEngine!
*
* @group Database
* @group Diff
*
* @author Katie Filbert < aude.wiki@gmail.com >
*/
class DifferenceEngineTest extends MediaWikiTestCase {
protected $context;
private static $revisions;
protected function setUp() {
parent::setUp();
$title = $this->getTitle();
$this->context = new RequestContext();
$this->context->setTitle( $title );
if ( !self::$revisions ) {
self::$revisions = $this->doEdits();
}
}
/**
* @return Title
*/
protected function getTitle() {
$namespace = $this->getDefaultWikitextNS();
return Title::newFromText( 'Kitten', $namespace );
}
/**
* @return int[] Revision ids
*/
protected function doEdits() {
$title = $this->getTitle();
$page = WikiPage::factory( $title );
$strings = array( "it is a kitten", "two kittens", "three kittens", "four kittens" );
$revisions = array();
foreach ( $strings as $string ) {
$content = ContentHandler::makeContent( $string, $title );
$page->doEditContent( $content, 'edit page' );
$revisions[] = $page->getLatest();
}
return $revisions;
}
public function testMapDiffPrevNext() {
$cases = $this->getMapDiffPrevNextCases();
foreach ( $cases as $case ) {
list( $expected, $old, $new, $message ) = $case;
$diffEngine = new DifferenceEngine( $this->context, $old, $new, 2, true, false );
$diffMap = $diffEngine->mapDiffPrevNext( $old, $new );
$this->assertEquals( $expected, $diffMap, $message );
}
}
private function getMapDiffPrevNextCases() {
$revs = self::$revisions;
return array(
array( array( $revs[1], $revs[2] ), $revs[2], 'prev', 'diff=prev' ),
array( array( $revs[2], $revs[3] ), $revs[2], 'next', 'diff=next' ),
array( array( $revs[1], $revs[3] ), $revs[1], $revs[3], 'diff=' . $revs[3] )
);
}
public function testLoadRevisionData() {
$cases = $this->getLoadRevisionDataCases();
foreach ( $cases as $case ) {
list( $expectedOld, $expectedNew, $old, $new, $message ) = $case;
$diffEngine = new DifferenceEngine( $this->context, $old, $new, 2, true, false );
$diffEngine->loadRevisionData();
$this->assertEquals( $diffEngine->getOldid(), $expectedOld, $message );
$this->assertEquals( $diffEngine->getNewid(), $expectedNew, $message );
}
}
private function getLoadRevisionDataCases() {
$revs = self::$revisions;
return array(
array( $revs[2], $revs[3], $revs[3], 'prev', 'diff=prev' ),
array( $revs[2], $revs[3], $revs[2], 'next', 'diff=next' ),
array( $revs[1], $revs[3], $revs[1], $revs[3], 'diff=' . $revs[3] ),
array( $revs[1], $revs[3], $revs[1], 0, 'diff=0' )
);
}
public function testGetOldid() {
$revs = self::$revisions;
$diffEngine = new DifferenceEngine( $this->context, $revs[1], $revs[2], 2, true, false );
$this->assertEquals( $revs[1], $diffEngine->getOldid(), 'diff get old id' );
}
public function testGetNewid() {
$revs = self::$revisions;
$diffEngine = new DifferenceEngine( $this->context, $revs[1], $revs[2], 2, true, false );
$this->assertEquals( $revs[2], $diffEngine->getNewid(), 'diff get new id' );
}
}