Arbit - project tracking

PHP Depend

History

Diff

1100 1101 /tests/PHP/Depend/Log/Jdepend/ChartTest.php
71 71 class PHP_Depend_Log_Jdepend_ChartTest extends PHP_Depend_AbstractTest
72 72 {
73 73 /**
74 + * Temporary output file.
75 + *
76 + * @var string
77 + */
78 + private $_outputFile = null;
79 +
80 + /**
81 + * setUp()
82 + *
83 + * @return void
84 + */
85 + protected function setUp()
86 + {
87 + parent::setUp();
88 +
89 + $this->_outputFile = self::createRunResourceURI('jdepend-test-out.svg');
90 + if (file_exists($this->_outputFile)) {
91 + unlink($this->_outputFile);
92 + }
93 + }
94 +
95 + /**
96 + * tearDown()
97 + *
98 + * @return void
99 + */
100 + protected function tearDown()
101 + {
102 + if (file_exists($this->_outputFile)) {
103 + unlink($this->_outputFile);
104 + }
105 + parent::tearDown();
106 + }
107 +
108 +
109 + /**
74 110 * Tests that the logger returns the expected set of analyzers.
75 111 *
76 112 * @return void
113 + * @covers PHP_Depend_Log_Jdepend_Chart
114 + * @group pdepend
115 + * @group pdepend::log
116 + * @group pdepend::log::jdepend
117 + * @group unittest
77 118 */
78 119 public function testReturnsExceptedAnalyzers()
79 120 {
89 130 * configured.
90 131 *
91 132 * @return void
133 + * @covers PHP_Depend_Log_Jdepend_Chart
134 + * @group pdepend
135 + * @group pdepend::log
136 + * @group pdepend::log::jdepend
137 + * @group unittest
138 + * @expectedException PHP_Depend_Log_NoLogOutputException
92 139 */
93 140 public function testThrowsExceptionForInvalidLogTarget()
94 141 {
95 - $this->setExpectedException(
96 - 'PHP_Depend_Log_NoLogOutputException',
97 - "The log target is not configured for 'PHP_Depend_Log_Jdepend_Chart'."
98 - );
99 -
100 142 $logger = new PHP_Depend_Log_Jdepend_Chart();
101 143 $logger->close();
102 144 }
103 145
146 + /**
147 + * testChartLogAcceptsOnlyTheCorrectAnalyzer
148 + *
149 + * @return void
150 + * @covers PHP_Depend_Log_Jdepend_Chart
151 + * @group pdepend
152 + * @group pdepend::log
153 + * @group pdepend::log::jdepend
154 + * @group unittest
155 + */
104 156 public function testChartLogAcceptsOnlyTheCorrectAnalyzer()
105 157 {
106 158 $logger = new PHP_Depend_Log_Jdepend_Chart();
113 165 * Tests that the logger generates an image file.
114 166 *
115 167 * @return void
168 + * @covers PHP_Depend_Log_Jdepend_Chart
169 + * @group pdepend
170 + * @group pdepend::log
171 + * @group pdepend::log::jdepend
172 + * @group unittest
116 173 */
117 174 public function testGeneratesCorrectSVGImageFile()
118 175 {
119 - $fileName = self::createRunResourceURI('jdepend-test-out.svg');
120 - if (file_exists($fileName)) {
121 - @unlink($fileName);
122 - }
176 + $nodes = new PHP_Depend_Code_NodeIterator($this->_createPackages(true, true));
123 177
124 - $nodes = new PHP_Depend_Code_NodeIterator(array(
125 - new PHP_Depend_Code_Package('packageA'),
126 - new PHP_Depend_Code_Package('packageB')
127 - ));
178 + $analyzer = new PHP_Depend_Metrics_Dependency_Analyzer();
179 + $analyzer->analyze($nodes);
128 180
181 + $logger = new PHP_Depend_Log_Jdepend_Chart();
182 + $logger->setLogFile($this->_outputFile);
183 + $logger->setCode($nodes);
184 + $logger->log($analyzer);
185 + $logger->close();
186 +
187 + $this->assertFileExists($this->_outputFile);
188 + }
189 +
190 + /**
191 + * testGeneratedSvgImageContainsExpectedPackages
192 + *
193 + * @return void
194 + * @covers PHP_Depend_Log_Jdepend_Chart
195 + * @group pdepend
196 + * @group pdepend::log
197 + * @group pdepend::log::jdepend
198 + * @group unittest
199 + */
200 + public function testGeneratedSvgImageContainsExpectedPackages()
201 + {
202 + $nodes = new PHP_Depend_Code_NodeIterator($this->_createPackages(true, true));
203 +
129 204 $analyzer = new PHP_Depend_Metrics_Dependency_Analyzer();
130 205 $analyzer->analyze($nodes);
131 206
132 207 $logger = new PHP_Depend_Log_Jdepend_Chart();
133 - $logger->setLogFile($fileName);
208 + $logger->setLogFile($this->_outputFile);
134 209 $logger->setCode($nodes);
135 210 $logger->log($analyzer);
211 + $logger->close();
136 212
137 - $this->assertFileNotExists($fileName);
213 + $svg = new DOMDocument();
214 + $svg->load($this->_outputFile);
215 +
216 + $xpath = new DOMXPath($svg);
217 + $xpath->registerNamespace('s', 'http://www.w3.org/2000/svg');
218 +
219 + $this->assertEquals(1, $xpath->query("//s:ellipse[@title='package0']")->length);
220 + $this->assertEquals(1, $xpath->query("//s:ellipse[@title='package1']")->length);
221 + }
222 +
223 + /**
224 + * testGeneratesSVGImageDoesNotContainNoneUserDefinedPackages
225 + *
226 + * @return void
227 + * @covers PHP_Depend_Log_Jdepend_Chart
228 + * @group pdepend
229 + * @group pdepend::log
230 + * @group pdepend::log::jdepend
231 + * @group unittest
232 + */
233 + public function testGeneratesSVGImageDoesNotContainNoneUserDefinedPackages()
234 + {
235 + $nodes = new PHP_Depend_Code_NodeIterator($this->_createPackages(true, false, true));
236 +
237 + $analyzer = new PHP_Depend_Metrics_Dependency_Analyzer();
238 + $analyzer->analyze($nodes);
239 +
240 + $logger = new PHP_Depend_Log_Jdepend_Chart();
241 + $logger->setLogFile($this->_outputFile);
242 + $logger->setCode($nodes);
243 + $logger->log($analyzer);
138 244 $logger->close();
139 - $this->assertFileExists($fileName);
140 245
141 246 $svg = new DOMDocument();
142 - $svg->load($fileName);
247 + $svg->load($this->_outputFile);
143 248
144 249 $xpath = new DOMXPath($svg);
145 250 $xpath->registerNamespace('s', 'http://www.w3.org/2000/svg');
146 251
147 - $this->assertEquals(1, $xpath->query("//s:ellipse[@title='packageA']")->length);
148 - $this->assertEquals(1, $xpath->query("//s:ellipse[@title='packageB']")->length);
149 -
150 - unlink($fileName);
252 + $this->assertEquals(0, $xpath->query("//s:ellipse[@title='package1']")->length);
151 253 }
152 254
255 + /**
256 + * testCalculateCorrectEllipseSize
257 + *
258 + * @return void
259 + * @covers PHP_Depend_Log_Jdepend_Chart
260 + * @group pdepend
261 + * @group pdepend::log
262 + * @group pdepend::log::jdepend
263 + * @group unittest
264 + */
153 265 public function testCalculateCorrectEllipseSize()
154 266 {
155 - $fileName = self::createRunResourceURI('jdepend-test-out.svg');
156 - if (file_exists($fileName)) {
157 - @unlink($fileName);
158 - }
267 + $nodes = $this->_createPackages(true, true);
159 268
160 - $nodes = array(
161 - new PHP_Depend_Code_Package('packageA'),
162 - new PHP_Depend_Code_Package('packageB')
163 - );
164 -
165 269 $analyzer = new PHP_Depend_Log_Jdepend_DependencyAnalyzer();
166 270 $analyzer->stats = array(
167 271 $nodes[0]->getUUID() => array(
183 287 $nodes = new PHP_Depend_Code_NodeIterator($nodes);
184 288
185 289 $logger = new PHP_Depend_Log_Jdepend_Chart();
186 - $logger->setLogFile($fileName);
290 + $logger->setLogFile($this->_outputFile);
187 291 $logger->setCode($nodes);
188 292 $logger->log($analyzer);
189 293
190 - $this->assertFileNotExists($fileName);
191 294 $logger->close();
192 - $this->assertFileExists($fileName);
193 295
194 296 $svg = new DOMDocument();
195 - $svg->load($fileName);
297 + $svg->load($this->_outputFile);
196 298
197 299 $xpath = new DOMXPath($svg);
198 300 $xpath->registerNamespace('s', 'http://www.w3.org/2000/svg');
199 301
200 - $ellipseA = $xpath->query("//s:ellipse[@title='packageA']")->item(0);
302 + $ellipseA = $xpath->query("//s:ellipse[@title='package0']")->item(0);
201 303 $matrixA = $ellipseA->getAttribute('transform');
202 304 preg_match('/matrix\(([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+)\)/', $matrixA, $matches);
203 305 $this->assertEquals(1, $matches[1]);
204 306 $this->assertEquals(1, $matches[4]);
205 307
206 - $ellipseB = $xpath->query("//s:ellipse[@title='packageB']")->item(0);
308 + $ellipseB = $xpath->query("//s:ellipse[@title='package1']")->item(0);
207 309 $matrixB = $ellipseB->getAttribute('transform');
208 310 preg_match('/matrix\(([^,]+),([^,]+),([^,]+),([^,]+),([^,]+),([^,]+)\)/', $matrixB, $matches);
209 311 $this->assertEquals(0.3333333, $matches[1], null, 0.000001);
210 312 $this->assertEquals(0.3333333, $matches[4], null, 0.000001);
211 -
212 - unlink($fileName);
213 313 }
214 314
215 315 /**
216 316 * Tests that the logger generates an image file.
217 317 *
218 318 * @return void
319 + * @covers PHP_Depend_Log_Jdepend_Chart
320 + * @group pdepend
321 + * @group pdepend::log
322 + * @group pdepend::log::jdepend
323 + * @group unittest
219 324 */
220 325 public function testGeneratesImageFile()
221 326 {
228 333 unlink($fileName);
229 334 }
230 335
231 - $nodes = new PHP_Depend_Code_NodeIterator(array(
232 - new PHP_Depend_Code_Package('packageA'),
233 - new PHP_Depend_Code_Package('packageB')
234 - ));
336 + $nodes = new PHP_Depend_Code_NodeIterator($this->_createPackages(true, true));
235 337
236 338 $analyzer = new PHP_Depend_Metrics_Dependency_Analyzer();
237 339 $analyzer->analyze($nodes);
253 355
254 356 unlink($fileName);
255 357 }
358 +
359 + private function _createPackages()
360 + {
361 + $packages = array();
362 + foreach (func_get_args() as $i => $userDefined) {
363 + $packages[] = $this->_createPackage(
364 + $userDefined,
365 + 'package' . $i
366 + );
367 + }
368 + return $packages;
369 + }
370 +
371 + private function _createPackage($userDefined, $packageName)
372 + {
373 + $packageA = $this->getMock(
374 + 'PHP_Depend_Code_Package',
375 + array('isUserDefined'),
376 + array($packageName),
377 + 'package_' . md5(microtime())
378 + );
379 + $packageA->expects($this->atLeastOnce())
380 + ->method('isUserDefined')
381 + ->will($this->returnValue($userDefined));
382 +
383 + return $packageA;
384 + }
256 385 }
1100 1101 /PHP/Depend/Log/Jdepend/Chart.php
175 175
176 176 $items = array();
177 177 foreach ($this->_code as $package) {
178 +
179 + if (!$package->isUserDefined()) {
180 + continue;
181 + }
182 +
178 183 $metrics = $this->_analyzer->getStats($package);
179 184
180 185 if (count($metrics) === 0) {