< 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:42
Uncovered lines:9
Coverable lines:51
Total lines:88
Line coverage:82.3% (42 of 51)
Covered branches:11
Total branches:12
Branch coverage:91.6% (11 of 12)
Tag:251_23667616543

Metrics

MethodBranch coverage Cyclomatic complexity Line coverage
.ctor(...)100%1100%
Reset()100%10%
System.Collections.IEnumerator.get_Current()100%10%
MoveNext()91.66%1297.05%
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
 217112    public TilesVertexEnumerator(RoutingNetwork routingNetwork, IEnumerable<(uint x, uint y)> tiles)
 217113    {
 217114        _routingNetwork = routingNetwork;
 217115        _tiles = tiles.GetEnumerator();
 217116    }
 17
 18    public void Reset()
 019    {
 020        _tiles.Reset();
 021        _currentTile = uint.MaxValue;
 022    }
 23
 024    object IEnumerator.Current => this.Current;
 25
 217126    private uint _currentTile = uint.MaxValue;
 217127    private uint _currentVertex = uint.MaxValue;
 28    private double _currentLatitude;
 29    private double _currentLongitude;
 30    private float? _currentElevation;
 31
 32    public bool MoveNext()
 280877233    {
 280877234        if (_currentTile == uint.MaxValue)
 217135        {
 224336            while (_tiles.MoveNext())
 224337            {
 224338                _currentTile = TileStatic.ToLocalId(_tiles.Current.x, _tiles.Current.y, _routingNetwork.Zoom);
 224339                _currentVertex = 0;
 40
 224341                if (_routingNetwork.TryGetVertex(new VertexId(_currentTile, _currentVertex),
 224342                        out _currentLongitude, out _currentLatitude, out _currentElevation))
 217143                {
 217144                    return true;
 45                }
 7246            }
 47
 048            return false;
 49        }
 50
 280663251        while (true)
 280663252        {
 280663253            _currentVertex++;
 280663254            if (_routingNetwork.TryGetVertex(new VertexId(_currentTile, _currentVertex),
 280663255                    out _currentLongitude, out _currentLatitude, out _currentElevation))
 280127556            {
 280127557                return true;
 58            }
 59            else
 535760            {
 535761                if (!_tiles.MoveNext())
 213562                {
 213563                    break;
 64                }
 65
 322266                _currentTile = TileStatic.ToLocalId(_tiles.Current.x, _tiles.Current.y, _routingNetwork.Zoom);
 322267                _currentVertex = 0;
 322268                if (_routingNetwork.TryGetVertex(new VertexId(_currentTile, _currentVertex),
 322269                        out _currentLongitude, out _currentLatitude, out _currentElevation))
 319170                {
 319171                    return true;
 72                }
 3173            }
 3174        }
 75
 213576        return false;
 280877277    }
 78
 88414079    public VertexId Current => new(_currentTile, _currentVertex);
 80
 81    public (double longitude, double latitude, float? e) Location =>
 280663782        (_currentLongitude, _currentLatitude, _currentElevation);
 83
 84    public void Dispose()
 085    {
 086        _tiles.Dispose();
 087    }
 88}