MediaWiki REL1_31
ArrayDiffFormatterTest.php
Go to the documentation of this file.
1<?php
2
9
16 public function testFormat( $input, $expectedOutput ) {
17 $instance = new ArrayDiffFormatter();
18 $output = $instance->format( $input );
19 $this->assertEquals( $expectedOutput, $output );
20 }
21
22 private function getMockDiff( $edits ) {
23 $diff = $this->getMockBuilder( Diff::class )
24 ->disableOriginalConstructor()
25 ->getMock();
26 $diff->expects( $this->any() )
27 ->method( 'getEdits' )
28 ->will( $this->returnValue( $edits ) );
29 return $diff;
30 }
31
32 private function getMockDiffOp( $type = null, $orig = [], $closing = [] ) {
33 $diffOp = $this->getMockBuilder( DiffOp::class )
34 ->disableOriginalConstructor()
35 ->getMock();
36 $diffOp->expects( $this->any() )
37 ->method( 'getType' )
38 ->will( $this->returnValue( $type ) );
39 $diffOp->expects( $this->any() )
40 ->method( 'getOrig' )
41 ->will( $this->returnValue( $orig ) );
42 if ( $type === 'change' ) {
43 $diffOp->expects( $this->any() )
44 ->method( 'getClosing' )
45 ->with( $this->isType( 'integer' ) )
46 ->will( $this->returnCallback( function () {
47 return 'mockLine';
48 } ) );
49 } else {
50 $diffOp->expects( $this->any() )
51 ->method( 'getClosing' )
52 ->will( $this->returnValue( $closing ) );
53 }
54 return $diffOp;
55 }
56
57 public function provideTestFormat() {
58 $emptyArrayTestCases = [
59 $this->getMockDiff( [] ),
60 $this->getMockDiff( [ $this->getMockDiffOp( 'add' ) ] ),
61 $this->getMockDiff( [ $this->getMockDiffOp( 'delete' ) ] ),
62 $this->getMockDiff( [ $this->getMockDiffOp( 'change' ) ] ),
63 $this->getMockDiff( [ $this->getMockDiffOp( 'copy' ) ] ),
64 $this->getMockDiff( [ $this->getMockDiffOp( 'FOOBARBAZ' ) ] ),
65 $this->getMockDiff( [ $this->getMockDiffOp( 'add', 'line' ) ] ),
66 $this->getMockDiff( [ $this->getMockDiffOp( 'delete', [], [ 'line' ] ) ] ),
67 $this->getMockDiff( [ $this->getMockDiffOp( 'copy', [], [ 'line' ] ) ] ),
68 ];
69
70 $otherTestCases = [];
71 $otherTestCases[] = [
72 $this->getMockDiff( [ $this->getMockDiffOp( 'add', [], [ 'a1' ] ) ] ),
73 [ [ 'action' => 'add', 'new' => 'a1', 'newline' => 1 ] ],
74 ];
75 $otherTestCases[] = [
76 $this->getMockDiff( [ $this->getMockDiffOp( 'add', [], [ 'a1', 'a2' ] ) ] ),
77 [
78 [ 'action' => 'add', 'new' => 'a1', 'newline' => 1 ],
79 [ 'action' => 'add', 'new' => 'a2', 'newline' => 2 ],
80 ],
81 ];
82 $otherTestCases[] = [
83 $this->getMockDiff( [ $this->getMockDiffOp( 'delete', [ 'd1' ] ) ] ),
84 [ [ 'action' => 'delete', 'old' => 'd1', 'oldline' => 1 ] ],
85 ];
86 $otherTestCases[] = [
87 $this->getMockDiff( [ $this->getMockDiffOp( 'delete', [ 'd1', 'd2' ] ) ] ),
88 [
89 [ 'action' => 'delete', 'old' => 'd1', 'oldline' => 1 ],
90 [ 'action' => 'delete', 'old' => 'd2', 'oldline' => 2 ],
91 ],
92 ];
93 $otherTestCases[] = [
94 $this->getMockDiff( [ $this->getMockDiffOp( 'change', [ 'd1' ], [ 'a1' ] ) ] ),
95 [ [
96 'action' => 'change',
97 'old' => 'd1',
98 'new' => 'mockLine',
99 'newline' => 1, 'oldline' => 1
100 ] ],
101 ];
102 $otherTestCases[] = [
103 $this->getMockDiff( [ $this->getMockDiffOp(
104 'change',
105 [ 'd1', 'd2' ],
106 [ 'a1', 'a2' ]
107 ) ] ),
108 [
109 [
110 'action' => 'change',
111 'old' => 'd1',
112 'new' => 'mockLine',
113 'newline' => 1, 'oldline' => 1
114 ],
115 [
116 'action' => 'change',
117 'old' => 'd2',
118 'new' => 'mockLine',
119 'newline' => 2, 'oldline' => 2
120 ],
121 ],
122 ];
123
124 $testCases = [];
125 foreach ( $emptyArrayTestCases as $testCase ) {
126 $testCases[] = [ $testCase, [] ];
127 }
128 foreach ( $otherTestCases as $testCase ) {
129 $testCases[] = [ $testCase[0], $testCase[1] ];
130 }
131 return $testCases;
132 }
133
134}
they could even be mouse clicks or menu items whatever suits your program You should also get your if any
Definition COPYING.txt:326
getMockDiffOp( $type=null, $orig=[], $closing=[])
testFormat( $input, $expectedOutput)
A pseudo-formatter that just passes along the Diff::$edits array.
static configuration should be added through ResourceLoaderGetConfigVars instead can be used to get the real title after the basic globals have been set but before ordinary actions take place $output
Definition hooks.txt:2255
if(is_array($mode)) switch( $mode) $input