< Summary

Class:Itinero.Routing.Flavours.Dijkstra.Bidirectional.DijkstraAlgorithmExtensions
Assembly:Itinero
File(s):/home/runner/work/routing2/routing2/src/Itinero/Routing/Flavours/Dijkstra/Bidirectional/DijkstraAlgorithmExtensions.cs
Covered lines:31
Uncovered lines:0
Coverable lines:31
Total lines:53
Line coverage:100% (31 of 31)
Covered branches:12
Total branches:12
Branch coverage:100% (12 of 12)
Tag:238_19435726042

Metrics

MethodBranch coverage Cyclomatic complexity Line coverage
Push(...)100%10100%
GetPathToVisit(...)100%2100%

File(s)

/home/runner/work/routing2/routing2/src/Itinero/Routing/Flavours/Dijkstra/Bidirectional/DijkstraAlgorithmExtensions.cs

#LineLine coverage
 1using System;
 2using Itinero.Routes.Paths;
 3using Itinero.Routing.Costs;
 4using Itinero.Snapping;
 5
 6namespace Itinero.Routing.Flavours.Dijkstra.Bidirectional;
 7
 8internal static class DijkstraAlgorithmExtensions
 9{
 10    public static void Push(this DijkstraAlgorithm dijkstraAlgorithm, ICostFunction costFunction, SnapPoint snapPoint,
 11        bool asOrigin)
 2812    {
 2813        var enumerator = dijkstraAlgorithm.RoutingNetwork.GetEdgeEnumerator();
 2814        var costEnumerator = new CostEdgeEnumerator(enumerator, costFunction);
 15
 2816        if (asOrigin)
 1417        {
 1418            var (cost, _) = costEnumerator.MoveToAndGetCost(snapPoint.EdgeId, true, true, []);
 2819            if (cost > 0) dijkstraAlgorithm.Push(snapPoint.EdgeId, true, cost * (1 - snapPoint.OffsetFactor()));
 20
 1421            (cost, _) = costEnumerator.MoveToAndGetCost(snapPoint.EdgeId, false, true, []);
 2822            if (cost > 0) dijkstraAlgorithm.Push(snapPoint.EdgeId, false, cost * snapPoint.OffsetFactor());
 1423        }
 24        else
 1425        {
 1426            var (cost, _) = costEnumerator.MoveToAndGetCost(snapPoint.EdgeId, true, false, []);
 2827            if (cost > 0) dijkstraAlgorithm.Push(snapPoint.EdgeId, true, cost * (1 - snapPoint.OffsetFactor()));
 28
 1429            (cost, _) = costEnumerator.MoveToAndGetCost(snapPoint.EdgeId, false, false, []);
 2830            if (cost > 0) dijkstraAlgorithm.Push(snapPoint.EdgeId, false, cost * snapPoint.OffsetFactor());
 1431        }
 2832    }
 33
 34    public static Path GetPathToVisit(this DijkstraAlgorithm dijkstraAlgorithm, uint p)
 635    {
 636        var path = new Path(dijkstraAlgorithm.RoutingNetwork);
 637        var visit = dijkstraAlgorithm.GetVisit(p);
 38
 839        while (true)
 840        {
 841            if (visit.previousPointer == uint.MaxValue)
 642            {
 643                path.Prepend(visit.edge, visit.forward);
 644                break;
 45            }
 46
 247            path.Prepend(visit.edge, visit.forward);
 248            visit = dijkstraAlgorithm.GetVisit(visit.previousPointer);
 249        }
 50
 651        return path;
 652    }
 53}

Methods/Properties

Push(...)
GetPathToVisit(...)