testGetPrivateFunctionsList()   A
last analyzed

Complexity

Conditions 1
Paths 1

Size

Total Lines 47
Code Lines 31

Duplication

Lines 0
Ratio 0 %

Importance

Changes 2
Bugs 0 Features 1
Metric Value
cc 1
eloc 31
c 2
b 0
f 1
nc 1
nop 0
dl 0
loc 47
rs 9.0303
1
<?php
2
namespace CodeReview\Tests;
3
4
class CodeReviewGeneralTest extends \PHPUnit_Framework_TestCase {
5
6
	public function setUp() {
7
		$path = dirname(__FILE__) . '/test_files/fake_elgg/';
8
9
		require_once($path . 'engine/start.php');
10
11
		\code_review::initConfig(array(
12
			'path' => $path,
13
			'engine_path' => $path . 'engine/',
14
			'pluginspath' => $path . 'mod/',
15
		));
16
	}
17
18
	/**
19
	 * Should check that code_review::getDeprecatedFunctionsList returns expected results for functions defined in deprecated-*
20
	 */
21
	public function testGetDeprecatedFunctionsList12() {
22
		$functions = \code_review::getDeprecatedFunctionsList('1.2');
23
		$this->assertCount(5, $functions);
24
		$this->assertArrayHasKey('dummy_deprecated_function1', $functions);
25
		$this->assertArrayHasKey('dummy_deprecated_function2', $functions);
26
		$this->assertArrayHasKey('foobardummyclass::deprecatedprivate', $functions);
27
		$this->assertArrayHasKey('foobardummyclass::deprecatedprotected', $functions);
28
		$this->assertArrayHasKey('foobardummyclass::deprecatedpublic', $functions);
29
30
		$deprecatedFunction1 = $functions['dummy_deprecated_function1'];
31
		$this->assertInstanceOf('\CodeReview\Issues\DeprecatedIssue', $deprecatedFunction1);
32
		$this->assertInstanceOf('ArrayAccess', $deprecatedFunction1);
33
		$this->assertFalse(is_array($deprecatedFunction1));
34
		$this->assertArrayHasKey('name', $deprecatedFunction1);
35
		$this->assertArrayHasKey('version', $deprecatedFunction1);
36
		$this->assertArrayHasKey('file', $deprecatedFunction1);
37
		$this->assertArrayHasKey('line', $deprecatedFunction1);
38
		$this->assertArrayHasKey('deprecated', $deprecatedFunction1);
39
		$this->assertArrayHasKey('reason', $deprecatedFunction1);
40
		$this->assertArrayHasKey('fixinfoshort', $deprecatedFunction1);
41
		$this->assertEquals('dummy_deprecated_function1', $deprecatedFunction1['name']);
42
		$this->assertEquals('1.1', $deprecatedFunction1['version']);
43
		$this->assertEquals(true, $deprecatedFunction1['deprecated']);
44
		$this->assertEquals('deprecated', $deprecatedFunction1['reason']);
45
		$this->assertEquals('Remove it', $deprecatedFunction1['fixinfoshort']);
46
		$this->assertEquals("Function call: "
47
			. $deprecatedFunction1['name'] . " (deprecated since 1.1) Remove it",
48
			(string)$deprecatedFunction1);
49
50
		$deprecatedFunction2 = $functions['dummy_deprecated_function2'];
51
		$this->assertInstanceOf('\CodeReview\Issues\DeprecatedIssue', $deprecatedFunction2);
52
		$this->assertInstanceOf('ArrayAccess', $deprecatedFunction2);
53
		$this->assertFalse(is_array($deprecatedFunction2));
54
		$this->assertArrayHasKey('name', $deprecatedFunction2);
55
		$this->assertArrayHasKey('version', $deprecatedFunction2);
56
		$this->assertArrayHasKey('file', $deprecatedFunction2);
57
		$this->assertArrayHasKey('line', $deprecatedFunction2);
58
		$this->assertArrayHasKey('deprecated', $deprecatedFunction2);
59
		$this->assertArrayHasKey('reason', $deprecatedFunction2);
60
		$this->assertArrayHasKey('fixinfoshort', $deprecatedFunction2);
61
		$this->assertEquals('dummy_deprecated_function2', $deprecatedFunction2['name']);
62
		$this->assertEquals('1.2', $deprecatedFunction2['version']);
63
		$this->assertEquals(true, $deprecatedFunction2['deprecated']);
64
		$this->assertEquals('deprecated', $deprecatedFunction2['reason']);
65
		$this->assertEquals(false, $deprecatedFunction2['fixinfoshort']);
66
		$this->assertEquals("Function call: "
67
			. $deprecatedFunction2['name'] . " (deprecated since 1.2)",
68
			(string)$deprecatedFunction2);
69
70
		$deprecatedFunction3 = $functions['foobardummyclass::deprecatedprivate'];
71
		$this->assertInstanceOf('\CodeReview\Issues\DeprecatedIssue', $deprecatedFunction3);
72
		$this->assertInstanceOf('ArrayAccess', $deprecatedFunction3);
73
		$this->assertFalse(is_array($deprecatedFunction3));
74
		$this->assertArrayHasKey('name', $deprecatedFunction3);
75
		$this->assertArrayHasKey('version', $deprecatedFunction3);
76
		$this->assertArrayHasKey('file', $deprecatedFunction3);
77
		$this->assertArrayHasKey('line', $deprecatedFunction3);
78
		$this->assertArrayHasKey('deprecated', $deprecatedFunction3);
79
		$this->assertArrayHasKey('reason', $deprecatedFunction3);
80
		$this->assertArrayHasKey('fixinfoshort', $deprecatedFunction3);
81
		$this->assertEquals('FoobarDummyClass::deprecatedPrivate', $deprecatedFunction3['name']);
82
		$this->assertEquals('1.2', $deprecatedFunction3['version']);
83
		$this->assertEquals(true, $deprecatedFunction3['deprecated']);
84
		$this->assertEquals('deprecated', $deprecatedFunction3['reason']);
85
		$this->assertEquals('Deprecated private class method.', $deprecatedFunction3['fixinfoshort']);
86
		$this->assertEquals("Function call: "
87
			. $deprecatedFunction3['name'] . " (deprecated since 1.2) Deprecated private class method.",
88
			(string)$deprecatedFunction3);
89
90
		$deprecatedFunction4 = $functions['foobardummyclass::deprecatedprotected'];
91
		$this->assertInstanceOf('\CodeReview\Issues\DeprecatedIssue', $deprecatedFunction4);
92
		$this->assertInstanceOf('ArrayAccess', $deprecatedFunction4);
93
		$this->assertFalse(is_array($deprecatedFunction4));
94
		$this->assertArrayHasKey('name', $deprecatedFunction4);
95
		$this->assertArrayHasKey('version', $deprecatedFunction4);
96
		$this->assertArrayHasKey('file', $deprecatedFunction4);
97
		$this->assertArrayHasKey('line', $deprecatedFunction4);
98
		$this->assertArrayHasKey('deprecated', $deprecatedFunction4);
99
		$this->assertArrayHasKey('reason', $deprecatedFunction4);
100
		$this->assertArrayHasKey('fixinfoshort', $deprecatedFunction4);
101
		$this->assertEquals('FoobarDummyClass::deprecatedProtected', $deprecatedFunction4['name']);
102
		$this->assertEquals('1.2', $deprecatedFunction4['version']);
103
		$this->assertEquals(true, $deprecatedFunction4['deprecated']);
104
		$this->assertEquals('deprecated', $deprecatedFunction4['reason']);
105
		$this->assertEquals('Deprecated protected class method.', $deprecatedFunction4['fixinfoshort']);
106
		$this->assertEquals("Function call: "
107
			. $deprecatedFunction4['name'] . " (deprecated since 1.2) Deprecated protected class method.",
108
			(string)$deprecatedFunction4);
109
110
		$deprecatedFunction5 = $functions['foobardummyclass::deprecatedpublic'];
111
		$this->assertInstanceOf('\CodeReview\Issues\DeprecatedIssue', $deprecatedFunction5);
112
		$this->assertInstanceOf('ArrayAccess', $deprecatedFunction5);
113
		$this->assertFalse(is_array($deprecatedFunction5));
114
		$this->assertArrayHasKey('name', $deprecatedFunction5);
115
		$this->assertArrayHasKey('version', $deprecatedFunction5);
116
		$this->assertArrayHasKey('file', $deprecatedFunction5);
117
		$this->assertArrayHasKey('line', $deprecatedFunction5);
118
		$this->assertArrayHasKey('deprecated', $deprecatedFunction5);
119
		$this->assertArrayHasKey('reason', $deprecatedFunction5);
120
		$this->assertArrayHasKey('fixinfoshort', $deprecatedFunction5);
121
		$this->assertEquals('FoobarDummyClass::deprecatedPublic', $deprecatedFunction5['name']);
122
		$this->assertEquals('1.1', $deprecatedFunction5['version']);
123
		$this->assertEquals(true, $deprecatedFunction5['deprecated']);
124
		$this->assertEquals('deprecated', $deprecatedFunction5['reason']);
125
		$this->assertEquals('Deprecated public class method.', $deprecatedFunction5['fixinfoshort']);
126
		$this->assertEquals("Function call: "
127
			. $deprecatedFunction5['name'] . " (deprecated since 1.1) Deprecated public class method.",
128
			(string)$deprecatedFunction5);
129
	}
130
131
	/**
132
	 * Should check that code_review::getDeprecatedFunctionsList returns expected results for functions defined in deprecated-*
133
	 */
134
	public function testGetDeprecatedFunctionsList11() {
135
		$functions = \code_review::getDeprecatedFunctionsList('1.1');
136
		$this->assertCount(1, $functions);
137
		$this->assertArrayNotHasKey('dummy_deprecated_function1', $functions);
138
		$this->assertArrayNotHasKey('dummy_deprecated_function2', $functions);
139
		$this->assertArrayHasKey('foobardummyclass::deprecatedpublic', $functions);
140
141
		$deprecatedFunction1 = $functions['foobardummyclass::deprecatedpublic'];
142
		$this->assertInstanceOf('\CodeReview\Issues\DeprecatedIssue', $deprecatedFunction1);
143
		$this->assertInstanceOf('ArrayAccess', $deprecatedFunction1);
144
		$this->assertFalse(is_array($deprecatedFunction1));
145
		$this->assertArrayHasKey('name', $deprecatedFunction1);
146
		$this->assertArrayHasKey('version', $deprecatedFunction1);
147
		$this->assertArrayHasKey('file', $deprecatedFunction1);
148
		$this->assertArrayHasKey('line', $deprecatedFunction1);
149
		$this->assertArrayHasKey('deprecated', $deprecatedFunction1);
150
		$this->assertArrayHasKey('reason', $deprecatedFunction1);
151
		$this->assertArrayHasKey('fixinfoshort', $deprecatedFunction1);
152
		$this->assertEquals('FoobarDummyClass::deprecatedPublic', $deprecatedFunction1['name']);
153
		$this->assertEquals('1.1', $deprecatedFunction1['version']);
154
		$this->assertEquals(true, $deprecatedFunction1['deprecated']);
155
		$this->assertEquals('deprecated', $deprecatedFunction1['reason']);
156
		$this->assertEquals('Deprecated public class method.', $deprecatedFunction1['fixinfoshort']);
157
		$this->assertEquals("Function call: "
158
			. $deprecatedFunction1['name'] . " (deprecated since 1.1) Deprecated public class method.",
159
			(string)$deprecatedFunction1);
160
	}
161
162
	public function testGetPrivateFunctionsList() {
163
164
		$functions = \code_review::getPrivateFunctionsList();
165
		$this->assertArrayNotHasKey('dummy_deprecated_function1', $functions);
166
167
		/*
168
		 * foobar_private_api
169
		 */
170
		$this->assertArrayHasKey('foobar_private_api', $functions);
171
		$privateFunction = $functions['foobar_private_api'];
172
		$this->assertInstanceOf('\CodeReview\Issues\PrivateIssue', $privateFunction);
173
		$this->assertInstanceOf('ArrayAccess', $privateFunction);
174
		$this->assertFalse(is_array($privateFunction));
175
176
		$this->assertArrayHasKey('name', $privateFunction);
177
		$this->assertArrayHasKey('file', $privateFunction);
178
		$this->assertArrayHasKey('line', $privateFunction);
179
		$this->assertArrayHasKey('reason', $privateFunction);
180
181
		$this->assertEquals('foobar_private_api', $privateFunction['name']);
182
		$this->assertEquals('private', $privateFunction['reason']);
183
184
		$this->assertEquals("Function call: "
185
			. $privateFunction['name'] . " (use of function marked private is unsafe)",
186
			(string)$privateFunction);
187
188
		/*
189
		 * foobar_undocumented
190
		 */
191
		$this->assertArrayHasKey('foobar_undocumented', $functions);
192
		$undocumentedFunction = $functions['foobar_undocumented'];
193
		$this->assertInstanceOf('\CodeReview\Issues\NotDocumentedIssue', $undocumentedFunction);
194
		$this->assertInstanceOf('ArrayAccess', $undocumentedFunction);
195
		$this->assertFalse(is_array($undocumentedFunction));
196
197
		$this->assertArrayHasKey('name', $undocumentedFunction);
198
		$this->assertArrayHasKey('file', $undocumentedFunction);
199
		$this->assertArrayHasKey('line', $undocumentedFunction);
200
		$this->assertArrayHasKey('reason', $undocumentedFunction);
201
202
		$this->assertEquals('foobar_undocumented', $undocumentedFunction['name']);
203
		$this->assertEquals('not_documented', $undocumentedFunction['reason']);
204
205
		$this->assertEquals("Function call: "
206
			. $undocumentedFunction['name'] . " (use of undocumented core function is unsafe)",
207
			(string)$undocumentedFunction);
208
	}
209
210
	public function testGetVersionsList() {
211
		$versions = \code_review::getVersionsList();
212
213
		$this->assertEquals(array('1.0', '1.2'), $versions);
214
	}
215
}
216