4 * @covers DifferenceEngine
6 * @todo tests for the rest of DifferenceEngine!
11 * @licence GNU GPL v2+
12 * @author Katie Filbert < aude.wiki@gmail.com >
14 class DifferenceEngineTest
extends MediaWikiTestCase
{
18 private static $revisions;
20 protected function setUp() {
23 $title = $this->getTitle();
25 $this->context
= new RequestContext();
26 $this->context
->setTitle( $title );
28 if ( !self
::$revisions ) {
29 self
::$revisions = $this->doEdits();
36 protected function getTitle() {
37 $namespace = $this->getDefaultWikitextNS();
38 return Title
::newFromText( 'Kitten', $namespace );
42 * @return int[] Revision ids
44 protected function doEdits() {
45 $title = $this->getTitle();
46 $page = WikiPage
::factory( $title );
48 $strings = array( "it is a kitten", "two kittens", "three kittens", "four kittens" );
51 foreach ( $strings as $string ) {
52 $content = ContentHandler
::makeContent( $string, $title );
53 $page->doEditContent( $content, 'edit page' );
54 $revisions[] = $page->getLatest();
60 public function testMapDiffPrevNext() {
61 $cases = $this->getMapDiffPrevNextCases();
63 foreach ( $cases as $case ) {
64 list( $expected, $old, $new, $message ) = $case;
66 $diffEngine = new DifferenceEngine( $this->context
, $old, $new, 2, true, false );
67 $diffMap = $diffEngine->mapDiffPrevNext( $old, $new );
68 $this->assertEquals( $expected, $diffMap, $message );
72 private function getMapDiffPrevNextCases() {
73 $revs = self
::$revisions;
76 array( array( $revs[1], $revs[2] ), $revs[2], 'prev', 'diff=prev' ),
77 array( array( $revs[2], $revs[3] ), $revs[2], 'next', 'diff=next' ),
78 array( array( $revs[1], $revs[3] ), $revs[1], $revs[3], 'diff=' . $revs[3] )
82 public function testLoadRevisionData() {
83 $cases = $this->getLoadRevisionDataCases();
85 foreach ( $cases as $case ) {
86 list( $expectedOld, $expectedNew, $old, $new, $message ) = $case;
88 $diffEngine = new DifferenceEngine( $this->context
, $old, $new, 2, true, false );
89 $diffEngine->loadRevisionData();
91 $this->assertEquals( $diffEngine->getOldid(), $expectedOld, $message );
92 $this->assertEquals( $diffEngine->getNewid(), $expectedNew, $message );
96 private function getLoadRevisionDataCases() {
97 $revs = self
::$revisions;
100 array( $revs[2], $revs[3], $revs[3], 'prev', 'diff=prev' ),
101 array( $revs[2], $revs[3], $revs[2], 'next', 'diff=next' ),
102 array( $revs[1], $revs[3], $revs[1], $revs[3], 'diff=' . $revs[3] ),
103 array( $revs[1], $revs[3], $revs[1], 0, 'diff=0' )
107 public function testGetOldid() {
108 $revs = self
::$revisions;
110 $diffEngine = new DifferenceEngine( $this->context
, $revs[1], $revs[2], 2, true, false );
111 $this->assertEquals( $revs[1], $diffEngine->getOldid(), 'diff get old id' );
114 public function testGetNewid() {
115 $revs = self
::$revisions;
117 $diffEngine = new DifferenceEngine( $this->context
, $revs[1], $revs[2], 2, true, false );
118 $this->assertEquals( $revs[2], $diffEngine->getNewid(), 'diff get new id' );