Code Duplication    Length = 41-41 lines in 2 locations

phpmetrics/tests/Metric/Class_/Complexity/KanDefectVisitorTest.php 1 location

@@ 14-54 (lines=41) @@
11
 * @group kan
12
 * @group defect
13
 */
14
class KanDefectVisitorTest extends \PHPUnit\Framework\TestCase
15
{
16
    /**
17
     * @dataProvider provideExamples
18
     *
19
     * @param string $example
20
     * @param string $classname
21
     * @param float $expected
22
     */
23
    public function testLackOfCohesionOfMethodsIsWellCalculated($example, $classname, $expected)
24
    {
25
        $metrics = new Metrics();
26
27
        $parser = (new ParserFactory)->create(ParserFactory::PREFER_PHP7);
28
        $traverser = new \PhpParser\NodeTraverser();
29
        $traverser->addVisitor(new \PhpParser\NodeVisitor\NameResolver());
30
        $traverser->addVisitor(new ClassEnumVisitor($metrics));
31
        $traverser->addVisitor(new KanDefectVisitor($metrics));
32
33
        $code = file_get_contents($example);
34
        $this->assertNotFalse($code);
35
36
        $stmts = $parser->parse($code);
37
        $this->assertNotNull($stmts);
38
39
        $traverser->traverse($stmts);
40
41
        $metric =  $metrics->get($classname);
42
        $this->assertNotNull($metric);
43
44
        $this->assertSame($expected, $metric->get('kanDefect'));
45
    }
46
47
    /** @return mixed[]*/
48
    public function provideExamples()
49
    {
50
        return [
51
            [ __DIR__ . '/../../examples/kan1.php', 'A', .89],
52
        ];
53
    }
54
}
55

phpmetrics/tests/Metric/Class_/Structural/LcomVisitorTest.php 1 location

@@ 9-49 (lines=41) @@
6
use Hal\Metric\Metrics;
7
use PhpParser\ParserFactory;
8
9
class LcomVisitorTest extends \PHPUnit\Framework\TestCase
10
{
11
    /**
12
     * @dataProvider provideExamples
13
     *
14
     * @param string $example
15
     * @param string $classname
16
     * @param int $expected
17
     */
18
    public function testLackOfCohesionOfMethodsIsWellCalculated($example, $classname, $expected)
19
    {
20
        $metrics = new Metrics();
21
22
        $parser = (new ParserFactory)->create(ParserFactory::PREFER_PHP7);
23
        $traverser = new \PhpParser\NodeTraverser();
24
        $traverser->addVisitor(new \PhpParser\NodeVisitor\NameResolver());
25
        $traverser->addVisitor(new ClassEnumVisitor($metrics));
26
        $traverser->addVisitor(new LcomVisitor($metrics));
27
28
        $code = file_get_contents($example);
29
        $this->assertNotFalse($code);
30
31
        $stmts = $parser->parse($code);
32
        $this->assertNotNull($stmts);
33
34
        $traverser->traverse($stmts);
35
36
        $metric = $metrics->get($classname);
37
        $this->assertNotNull($metric);
38
39
        $this->assertEquals($expected, $metric->get('lcom'));
40
    }
41
42
    /** @return mixed[] */
43
    public function provideExamples()
44
    {
45
        return [
46
            [ __DIR__ . '/../../examples/lcom1.php', 'MyClassA', 2]
47
        ];
48
    }
49
}
50