< Summary

Class:Itinero.Routing.IRouterOneToManyExtensions
Assembly:Itinero
File(s):/home/runner/work/routing2/routing2/src/Itinero/Routing/IRouterOneToManyExtensions.cs
Covered lines:0
Uncovered lines:32
Coverable lines:32
Total lines:89
Line coverage:0% (0 of 32)
Covered branches:0
Total branches:12
Branch coverage:0% (0 of 12)
Tag:224_14471318300

Metrics

MethodBranch coverage Cyclomatic complexity Line coverage
Paths()0%120%
Calculate()100%10%
Calculate(...)100%10%

File(s)

/home/runner/work/routing2/routing2/src/Itinero/Routing/IRouterOneToManyExtensions.cs

#LineLine coverage
 1using System;
 2using System.Collections.Generic;
 3using System.Linq;
 4using System.Threading;
 5using System.Threading.Tasks;
 6using Itinero.Routes;
 7using Itinero.Routes.Builders;
 8using Itinero.Routes.Paths;
 9using Itinero.Snapping;
 10
 11namespace Itinero.Routing;
 12
 13/// <summary>
 14/// Contains extensions methods for the one to many router.
 15/// </summary>
 16public static class IRouterOneToManyExtensions
 17{
 18    /// <summary>
 19    /// Calculates the paths.
 20    /// </summary>
 21    /// <param name="routerOneToMany">The router.</param>
 22    /// <param name="cancellationToken"></param>
 23    /// <returns>The paths.</returns>
 24    public static async Task<IReadOnlyList<Result<Path>>> Paths(this IRouterOneToMany routerOneToMany, CancellationToken
 025    {
 026        var source = routerOneToMany.Source;
 027        var targets = routerOneToMany.Targets;
 28
 029        if (source.direction.HasValue ||
 030            !targets.TryToUndirected(out var targetsUndirected))
 031        {
 032            var paths = await routerOneToMany.CalculateAsync(
 033                new (SnapPoint snapPoint, bool? direction)[] { source }, targets);
 34
 035            if (paths == null)
 036            {
 037                throw new Exception("Could not calculate routes.");
 38            }
 39
 040            if (paths.Count < 1)
 041            {
 042                throw new Exception("Could not calculate routes.");
 43            }
 44
 045            return paths[0];
 46        }
 47        else
 048        {
 049            var paths = await routerOneToMany.CalculateAsync(new[] { source.sp }, targetsUndirected, cancellationToken);
 050            if (paths == null)
 051            {
 052                throw new Exception("Could not calculate routes.");
 53            }
 54
 055            if (paths.Count < 1)
 056            {
 057                throw new Exception("Could not calculate routes.");
 58            }
 59
 060            return paths[0];
 61        }
 062    }
 63
 64    /// <summary>
 65    /// Calculates the routes.
 66    /// </summary>
 67    /// <param name="routerOneToMany">The router.</param>
 68    /// <param name="cancellationToken"></param>
 69    /// <returns>The routes.</returns>
 70    public static async Task<IReadOnlyList<Result<Route>>> Calculate(this IRouterOneToMany routerOneToMany, Cancellation
 071    {
 072        return (await routerOneToMany.Paths(cancellationToken)).Select(x => routerOneToMany.Settings.RouteBuilder.Build(
 073            routerOneToMany.Settings.Profile, x)).ToArray();
 074    }
 75
 76    /// <summary>
 77    /// Calculates the weights.
 78    /// </summary>
 79    /// <param name="routerOneToMany">The router.</param>
 80    /// <returns>The weights.</returns>
 81    public static Task<Result<IReadOnlyList<double?>>> Calculate(this IRouterWeights<IRouterOneToMany> routerOneToMany)
 082    {
 083        return Task.FromResult(new Result<IReadOnlyList<double?>>("Not implemented"));
 84
 85        // var profileHandler = routerOneToMany.Router.Network.GetCostFunctionFor(
 86        //     routerOneToMany.Router.Settings.Profile);
 87        // return routerOneToMany.Router.Paths().Select(x => x.Weight(profileHandler.GetForwardWeight)).ToArray();
 088    }
 89}

Methods/Properties

Paths()
Calculate()
Calculate(...)