< Summary

Class:Itinero.Network.Search.VertexEdgeEnumerator
Assembly:Itinero
File(s):/home/runner/work/routing2/routing2/src/Itinero/Network/Search/VertexEdgeEnumerator.cs
Covered lines:46
Uncovered lines:26
Coverable lines:72
Total lines:137
Line coverage:63.8% (46 of 72)
Covered branches:14
Total branches:18
Branch coverage:77.7% (14 of 18)
Tag:251_23667616543

Metrics

MethodBranch coverage Cyclomatic complexity Line coverage
.ctor(...)100%1100%
Reset()100%10%
MoveNext()77.77%1884.84%
get_RoutingNetworkEdgeEnumerator()100%1100%
Dispose()100%10%
get_Network()100%10%
get_Forward()100%1100%
get_Tail()100%1100%
get_TailLocation()100%1100%
get_Head()100%1100%
get_HeadLocation()100%1100%
get_EdgeId()100%1100%
get_Shape()100%1100%
get_Attributes()100%1100%
get_EdgeTypeId()100%1100%
get_Length()100%1100%
get_HeadOrder()100%10%
get_TailOrder()100%10%
GetTurnCostToTail(...)100%10%
GetTurnCostFromTail(...)100%10%
GetTurnCostToHead(...)100%10%
GetTurnCostFromHead(...)100%10%

File(s)

/home/runner/work/routing2/routing2/src/Itinero/Network/Search/VertexEdgeEnumerator.cs

#LineLine coverage
 1using System.Collections.Generic;
 2using Itinero.Network;
 3using Itinero.Network.Enumerators.Edges;
 4
 5namespace Itinero.Network.Search;
 6
 7internal class VertexEdgeEnumerator : IEdgeEnumerator<RoutingNetwork>
 8{
 9    private readonly IEnumerator<VertexId> _vertexEnumerator;
 10
 217011    public VertexEdgeEnumerator(RoutingNetwork graph, IEnumerable<VertexId> vertices)
 217012    {
 217013        this.Network = graph;
 217014        _vertexEnumerator = vertices.GetEnumerator();
 217015        this.RoutingNetworkEdgeEnumerator = graph.GetEdgeEnumerator();
 217016    }
 17
 217018    private bool _firstEdge = false;
 19
 20    public void Reset()
 021    {
 022        _firstEdge = false;
 023        this.RoutingNetworkEdgeEnumerator.Reset();
 024        _vertexEnumerator.Reset();
 025    }
 26
 27    public bool MoveNext()
 246242028    {
 246242029        if (!_firstEdge)
 217030        {
 217131            while (_vertexEnumerator.MoveNext())
 216932            {
 216933                while (this.RoutingNetworkEdgeEnumerator.MoveTo(_vertexEnumerator.Current))
 216934                {
 216935                    if (!this.RoutingNetworkEdgeEnumerator.MoveNext())
 136                    {
 137                        break;
 38                    }
 39
 216840                    _firstEdge = true;
 216841                    return true;
 42                }
 143            }
 44
 245            return false;
 46        }
 47
 246025048        while (true)
 246025049        {
 246025050            if (this.RoutingNetworkEdgeEnumerator.MoveNext())
 157614851            {
 157614852                return true;
 53            }
 54
 88410255            if (!_vertexEnumerator.MoveNext())
 213256            {
 213257                return false;
 58            }
 59
 88197060            while (this.RoutingNetworkEdgeEnumerator.MoveTo(_vertexEnumerator.Current))
 88197061            {
 88197062                if (this.RoutingNetworkEdgeEnumerator.MoveNext())
 88197063                {
 88197064                    return true;
 65                }
 66
 067                if (!_vertexEnumerator.MoveNext())
 068                {
 069                    return false;
 70                }
 071            }
 072        }
 246242073    }
 74
 1090060775    internal RoutingNetworkEdgeEnumerator RoutingNetworkEdgeEnumerator { get; }
 76
 077    public void Dispose() { }
 78
 079    public RoutingNetwork Network { get; }
 80
 14693981    public bool Forward => this.RoutingNetworkEdgeEnumerator.Forward;
 1182    public VertexId Tail => this.RoutingNetworkEdgeEnumerator.Tail;
 127380783    public (double longitude, double latitude, float? e) TailLocation => this.RoutingNetworkEdgeEnumerator.TailLocation;
 584    public VertexId Head => this.RoutingNetworkEdgeEnumerator.Head;
 124971785    public (double longitude, double latitude, float? e) HeadLocation => this.RoutingNetworkEdgeEnumerator.HeadLocation;
 251906386    public EdgeId EdgeId => this.RoutingNetworkEdgeEnumerator.EdgeId;
 125110587    public IEnumerable<(double longitude, double latitude, float? e)> Shape => this.RoutingNetworkEdgeEnumerator.Shape;
 106688    public IEnumerable<(string key, string value)> Attributes => this.RoutingNetworkEdgeEnumerator.Attributes;
 11514689    public uint? EdgeTypeId => this.RoutingNetworkEdgeEnumerator.EdgeTypeId;
 11522090    public uint? Length => this.RoutingNetworkEdgeEnumerator.Length;
 091    public byte? HeadOrder => this.RoutingNetworkEdgeEnumerator.HeadOrder;
 092    public byte? TailOrder => this.RoutingNetworkEdgeEnumerator.TailOrder;
 93
 94    /// <summary>
 95    /// Gets the turn cost at the tail turn (source -> [tail -> head]).
 96    /// </summary>
 97    /// <param name="sourceOrder">The order of the source edge.</param>
 98    /// <returns>The turn costs if any.</returns>
 99    public IEnumerable<(uint turnCostType, IEnumerable<(string key, string value)> attributes, uint cost, IEnumerable<Ed
 100        byte sourceOrder)
 0101    {
 0102        return this.RoutingNetworkEdgeEnumerator.GetTurnCostToTail(sourceOrder);
 0103    }
 104
 105    /// <summary>
 106    /// Gets the turn cost at the tail turn ([head -> tail] -> target).
 107    /// </summary>
 108    /// <param name="targetOrder">The order of the target edge.</param>
 109    /// <returns>The turn costs if any.</returns>
 110    public IEnumerable<(uint turnCostType, IEnumerable<(string key, string value)> attributes, uint cost, IEnumerable<Ed
 111        byte targetOrder)
 0112    {
 0113        return this.RoutingNetworkEdgeEnumerator.GetTurnCostFromTail(targetOrder);
 0114    }
 115
 116    /// <summary>
 117    /// Gets the turn cost at the tail turn (source -> [head -> tail]).
 118    /// </summary>
 119    /// <param name="sourceOrder">The order of the source edge.</param>
 120    /// <returns>The turn costs if any.</returns>
 121    public IEnumerable<(uint turnCostType, IEnumerable<(string key, string value)> attributes, uint cost, IEnumerable<Ed
 122        byte sourceOrder)
 0123    {
 0124        return this.RoutingNetworkEdgeEnumerator.GetTurnCostToHead(sourceOrder);
 0125    }
 126
 127    /// <summary>
 128    /// Gets the turn cost at the tail turn ([tail -> head] -> target).
 129    /// </summary>
 130    /// <param name="targetOrder">The order of the target edge.</param>
 131    /// <returns>The turn costs if any.</returns>
 132    public IEnumerable<(uint turnCostType, IEnumerable<(string key, string value)> attributes, uint cost, IEnumerable<Ed
 133        byte targetOrder)
 0134    {
 0135        return this.RoutingNetworkEdgeEnumerator.GetTurnCostFromHead(targetOrder);
 0136    }
 137}