MediaWiki  REL1_24
DifferenceEngineTest.php
Go to the documentation of this file.
00001 <?php
00002 
00014 class DifferenceEngineTest extends MediaWikiTestCase {
00015 
00016     protected $context;
00017 
00018     private static $revisions;
00019 
00020     protected function setUp() {
00021         parent::setUp();
00022 
00023         $title = $this->getTitle();
00024 
00025         $this->context = new RequestContext();
00026         $this->context->setTitle( $title );
00027 
00028         if ( !self::$revisions ) {
00029             self::$revisions = $this->doEdits();
00030         }
00031     }
00032 
00036     protected function getTitle() {
00037         $namespace = $this->getDefaultWikitextNS();
00038         return Title::newFromText( 'Kitten', $namespace );
00039     }
00040 
00044     protected function doEdits() {
00045         $title = $this->getTitle();
00046         $page = WikiPage::factory( $title );
00047 
00048         $strings = array( "it is a kitten", "two kittens", "three kittens", "four kittens" );
00049         $revisions = array();
00050 
00051         foreach ( $strings as $string ) {
00052             $content = ContentHandler::makeContent( $string, $title );
00053             $page->doEditContent( $content, 'edit page' );
00054             $revisions[] = $page->getLatest();
00055         }
00056 
00057         return $revisions;
00058     }
00059 
00060     public function testMapDiffPrevNext() {
00061         $cases = $this->getMapDiffPrevNextCases();
00062 
00063         foreach ( $cases as $case ) {
00064             list( $expected, $old, $new, $message ) = $case;
00065 
00066             $diffEngine = new DifferenceEngine( $this->context, $old, $new, 2, true, false );
00067             $diffMap = $diffEngine->mapDiffPrevNext( $old, $new );
00068             $this->assertEquals( $expected, $diffMap, $message );
00069         }
00070     }
00071 
00072     private function getMapDiffPrevNextCases() {
00073         $revs = self::$revisions;
00074 
00075         return array(
00076             array( array( $revs[1], $revs[2] ), $revs[2], 'prev', 'diff=prev' ),
00077             array( array( $revs[2], $revs[3] ), $revs[2], 'next', 'diff=next' ),
00078             array( array( $revs[1], $revs[3] ), $revs[1], $revs[3], 'diff=' . $revs[3] )
00079         );
00080     }
00081 
00082     public function testLoadRevisionData() {
00083         $cases = $this->getLoadRevisionDataCases();
00084 
00085         foreach ( $cases as $case ) {
00086             list( $expectedOld, $expectedNew, $old, $new, $message ) = $case;
00087 
00088             $diffEngine = new DifferenceEngine( $this->context, $old, $new, 2, true, false );
00089             $diffEngine->loadRevisionData();
00090 
00091             $this->assertEquals( $diffEngine->getOldid(), $expectedOld, $message );
00092             $this->assertEquals( $diffEngine->getNewid(), $expectedNew, $message );
00093         }
00094     }
00095 
00096     private function getLoadRevisionDataCases() {
00097         $revs = self::$revisions;
00098 
00099         return array(
00100             array( $revs[2], $revs[3], $revs[3], 'prev', 'diff=prev' ),
00101             array( $revs[2], $revs[3], $revs[2], 'next', 'diff=next' ),
00102             array( $revs[1], $revs[3], $revs[1], $revs[3], 'diff=' . $revs[3] ),
00103             array( $revs[1], $revs[3], $revs[1], 0, 'diff=0' )
00104         );
00105     }
00106 
00107     public function testGetOldid() {
00108         $revs = self::$revisions;
00109 
00110         $diffEngine = new DifferenceEngine( $this->context, $revs[1], $revs[2], 2, true, false );
00111         $this->assertEquals( $revs[1], $diffEngine->getOldid(), 'diff get old id' );
00112     }
00113 
00114     public function testGetNewid() {
00115         $revs = self::$revisions;
00116 
00117         $diffEngine = new DifferenceEngine( $this->context, $revs[1], $revs[2], 2, true, false );
00118         $this->assertEquals( $revs[2], $diffEngine->getNewid(), 'diff get new id' );
00119     }
00120 
00121 }