MediaWiki REL1_32
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 e g db for database replication lag or jobqueue for job queue size converted to pseudo seconds It is possible to add more fields and they will be returned to the user in the API response after the basic globals have been set but before ordinary actions take place $output
Definition hooks.txt:2317
if(is_array($mode)) switch( $mode) $input