Code Coverage
 
Classes and Traits
Functions and Methods
Lines
Total
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
2 / 2
CRAP
100.00% covered (success)
100.00%
8 / 8
ByConnection
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
2 / 2
4
100.00% covered (success)
100.00%
8 / 8
 __construct(Graph $g)
100.00% covered (success)
100.00%
1 / 1
1
100.00% covered (success)
100.00%
2 / 2
 collapseEdge(Vertex $src, Vertex $dst, array $path)
100.00% covered (success)
100.00%
1 / 1
3
100.00% covered (success)
100.00%
6 / 6
<?php
/*
 * Mondrian
 */
namespace Trismegiste\Mondrian\Analysis\Strategy;
use Trismegiste\Mondrian\Graph\Vertex;
use Trismegiste\Mondrian\Graph\Edge;
use Trismegiste\Mondrian\Graph\Graph;
use Trismegiste\Mondrian\Transform\Vertex\ImplVertex;
use Trismegiste\Mondrian\Transform\Vertex\MethodVertex;
use Trismegiste\Mondrian\Transform\Vertex\ClassVertex;
/**
 * ByConnection selects shortcut on a path at the first class
 * because connect property is transitive.
 */
class ByConnection implements Search
{
    protected $reducedGraph;
    public function __construct(Graph $g)
    {
        $this->reducedGraph = $g;
    }
    public function collapseEdge(Vertex $src, Vertex $dst, array $path)
    {
        // since I build an arborescence on class
        // vertices, I stop on the first encountered class
        foreach ($path as $step) {
            if ($step->getTarget() instanceof ClassVertex) {
                $this->reducedGraph->addEdge($src, $step->getTarget());
                break;
            }
        }
    }
}