MediaWiki
REL1_24
|
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 }