< 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:40
Uncovered lines:11
Coverable lines:51
Total lines:88
Line coverage:78.4% (40 of 51)
Covered branches:10
Total branches:12
Branch coverage:83.3% (10 of 12)
Tag:224_14471318300

Metrics

MethodBranch coverage Cyclomatic complexity Line coverage
.ctor(...)100%1100%
Reset()100%10%
System.Collections.IEnumerator.get_Current()100%10%
MoveNext()83.33%1291.17%
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
 3012    public TilesVertexEnumerator(RoutingNetwork routingNetwork, IEnumerable<(uint x, uint y)> tiles)
 3013    {
 3014        _routingNetwork = routingNetwork;
 3015        _tiles = tiles.GetEnumerator();
 3016    }
 17
 18    public void Reset()
 019    {
 020        _tiles.Reset();
 021        _currentTile = uint.MaxValue;
 022    }
 23
 024    object IEnumerator.Current => this.Current;
 25
 3026    private uint _currentTile = uint.MaxValue;
 3027    private uint _currentVertex = uint.MaxValue;
 28    private double _currentLatitude;
 29    private double _currentLongitude;
 30    private float? _currentElevation;
 31
 32    public bool MoveNext()
 8033    {
 8034        if (_currentTile == uint.MaxValue)
 3035        {
 5036            while (_tiles.MoveNext())
 5037            {
 5038                _currentTile = TileStatic.ToLocalId(_tiles.Current.x, _tiles.Current.y, _routingNetwork.Zoom);
 5039                _currentVertex = 0;
 40
 5041                if (_routingNetwork.TryGetVertex(new VertexId(_currentTile, _currentVertex),
 5042                        out _currentLongitude, out _currentLatitude, out _currentElevation))
 3043                {
 3044                    return true;
 45                }
 2046            }
 47
 048            return false;
 49        }
 50
 5351        while (true)
 5352        {
 5353            _currentVertex++;
 5354            if (_routingNetwork.TryGetVertex(new VertexId(_currentTile, _currentVertex),
 5355                    out _currentLongitude, out _currentLatitude, out _currentElevation))
 4056            {
 4057                return true;
 58            }
 59            else
 1360            {
 1361                if (!_tiles.MoveNext())
 1062                {
 1063                    break;
 64                }
 65
 366                _currentTile = TileStatic.ToLocalId(_tiles.Current.x, _tiles.Current.y, _routingNetwork.Zoom);
 367                _currentVertex = 0;
 368                if (_routingNetwork.TryGetVertex(new VertexId(_currentTile, _currentVertex),
 369                        out _currentLongitude, out _currentLatitude, out _currentElevation))
 070                {
 071                    return true;
 72                }
 373            }
 374        }
 75
 1076        return false;
 8077    }
 78
 6379    public VertexId Current => new(_currentTile, _currentVertex);
 80
 81    public (double longitude, double latitude, float? e) Location =>
 7082        (_currentLongitude, _currentLatitude, _currentElevation);
 83
 84    public void Dispose()
 085    {
 086        _tiles.Dispose();
 087    }
 88}