< Summary

Class:Itinero.Network.Enumerators.Vertices.TilesVertexEnumerator
Assembly:Itinero
File(s):/home/runner/work/routing2/routing2/src/Itinero/Network/Enumerators/Vertices/TilesVertexEnumerator.cs
Covered lines:33
Uncovered lines:18
Coverable lines:51
Total lines:88
Line coverage:64.7% (33 of 51)
Covered branches:7
Total branches:12
Branch coverage:58.3% (7 of 12)
Tag:263_26948838820

Metrics

MethodBranch coverage Cyclomatic complexity Line coverage
.ctor(...)100%1100%
Reset()100%10%
System.Collections.IEnumerator.get_Current()100%10%
MoveNext()58.33%1270.58%
get_Current()100%1100%
get_Location()100%1100%
Dispose()100%10%

File(s)

/home/runner/work/routing2/routing2/src/Itinero/Network/Enumerators/Vertices/TilesVertexEnumerator.cs

#LineLine coverage
 1using System.Collections;
 2using System.Collections.Generic;
 3using Itinero.Network.Tiles;
 4
 5namespace Itinero.Network.Enumerators.Vertices;
 6
 7internal class TilesVertexEnumerator : IEnumerator<VertexId>
 8{
 9    private readonly RoutingNetwork _routingNetwork;
 10    private readonly IEnumerator<(uint x, uint y)> _tiles;
 11
 412    public TilesVertexEnumerator(RoutingNetwork routingNetwork, IEnumerable<(uint x, uint y)> tiles)
 413    {
 414        _routingNetwork = routingNetwork;
 415        _tiles = tiles.GetEnumerator();
 416    }
 17
 18    public void Reset()
 019    {
 020        _tiles.Reset();
 021        _currentTile = uint.MaxValue;
 022    }
 23
 024    object IEnumerator.Current => this.Current;
 25
 426    private uint _currentTile = uint.MaxValue;
 427    private uint _currentVertex = uint.MaxValue;
 28    private double _currentLatitude;
 29    private double _currentLongitude;
 30    private float? _currentElevation;
 31
 32    public bool MoveNext()
 1233    {
 1234        if (_currentTile == uint.MaxValue)
 435        {
 436            while (_tiles.MoveNext())
 437            {
 438                _currentTile = TileStatic.ToLocalId(_tiles.Current.x, _tiles.Current.y, _routingNetwork.Zoom);
 439                _currentVertex = 0;
 40
 441                if (_routingNetwork.TryGetVertex(new VertexId(_currentTile, _currentVertex),
 442                        out _currentLongitude, out _currentLatitude, out _currentElevation))
 443                {
 444                    return true;
 45                }
 046            }
 47
 048            return false;
 49        }
 50
 851        while (true)
 852        {
 853            _currentVertex++;
 854            if (_routingNetwork.TryGetVertex(new VertexId(_currentTile, _currentVertex),
 855                    out _currentLongitude, out _currentLatitude, out _currentElevation))
 456            {
 457                return true;
 58            }
 59            else
 460            {
 461                if (!_tiles.MoveNext())
 462                {
 463                    break;
 64                }
 65
 066                _currentTile = TileStatic.ToLocalId(_tiles.Current.x, _tiles.Current.y, _routingNetwork.Zoom);
 067                _currentVertex = 0;
 068                if (_routingNetwork.TryGetVertex(new VertexId(_currentTile, _currentVertex),
 069                        out _currentLongitude, out _currentLatitude, out _currentElevation))
 070                {
 071                    return true;
 72                }
 073            }
 074        }
 75
 476        return false;
 1277    }
 78
 579    public VertexId Current => new(_currentTile, _currentVertex);
 80
 81    public (double longitude, double latitude, float? e) Location =>
 882        (_currentLongitude, _currentLatitude, _currentElevation);
 83
 84    public void Dispose()
 085    {
 086        _tiles.Dispose();
 087    }
 88}