< Summary

Class:Itinero.Network.Serialization.RoutingNetworkSerializer
Assembly:Itinero
File(s):/home/runner/work/routing2/routing2/src/Itinero/Network/Serialization/RoutingNetworkSerializer.cs
Covered lines:26
Uncovered lines:2
Coverable lines:28
Total lines:60
Line coverage:92.8% (26 of 28)
Covered branches:7
Total branches:8
Branch coverage:87.5% (7 of 8)
Tag:224_14471318300

Metrics

MethodBranch coverage Cyclomatic complexity Line coverage
WriteTo(...)100%4100%
ReadFrom(...)75%488.23%

File(s)

/home/runner/work/routing2/routing2/src/Itinero/Network/Serialization/RoutingNetworkSerializer.cs

#LineLine coverage
 1using System;
 2using System.IO;
 3using System.Linq;
 4using Itinero.IO;
 5using Itinero.Network.DataStructures;
 6using Itinero.Network.Mutation;
 7using Itinero.Network.Search.Islands;
 8using Itinero.Network.Tiles;
 9
 10namespace Itinero.Network.Serialization;
 11
 12internal static class RoutingNetworkSerializer
 13{
 14    public static void WriteTo(this RoutingNetworkMutator routingNetworkMutator, Stream stream)
 415    {
 16        // write version #.
 417        stream.WriteVarInt32(2);
 18
 19        // write zoom.
 420        stream.WriteVarInt32(routingNetworkMutator.Zoom);
 21
 22        // write max island size.
 423        stream.WriteVarInt32(routingNetworkMutator.IslandManager.MaxIslandSize);
 24
 25        // write tiles.
 426        stream.WriteVarUInt32((uint)routingNetworkMutator.GetTiles().Count());
 1627        foreach (var tileId in routingNetworkMutator.GetTiles())
 228        {
 229            var tile = routingNetworkMutator.GetTile(tileId);
 230            tile?.WriteTo(stream);
 231        }
 432    }
 33
 34    public static RoutingNetwork ReadFrom(this Stream stream, RouterDb routerDb)
 435    {
 36        // check version #.
 437        var version = stream.ReadVarInt32();
 438        if (version != 2)
 039        {
 040            throw new InvalidDataException("Unknown version #.");
 41        }
 42
 43        // read zoom.
 444        var zoom = stream.ReadVarInt32();
 45
 46        // read max island size.
 447        var maxIslandSize = stream.ReadVarInt32();
 48
 449        var tileCount = stream.ReadVarUInt32();
 450        var tiles = new SparseArray<NetworkTile?>(tileCount);
 1251        for (var t = 0; t < tileCount; t++)
 252        {
 253            var tile = NetworkTile.ReadFrom(stream);
 254            tiles.EnsureMinimumSize(tile.TileId);
 255            tiles[tile.TileId] = tile;
 256        }
 57
 458        return new RoutingNetwork(routerDb, tiles, zoom, new RoutingNetworkIslandManager(maxIslandSize));
 459    }
 60}

Methods/Properties

WriteTo(...)
ReadFrom(...)