< Summary

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

Metrics

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

File(s)

/home/runner/work/routing2/routing2/src/Itinero/Routing/IRouterManyToManyExtensions.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;
 9
 10namespace Itinero.Routing;
 11
 12/// <summary>
 13/// Many to many extensions.
 14/// </summary>
 15public static class IRouterManyToManyExtensions
 16{
 17    /// <summary>
 18    /// Calculates the paths.
 19    /// </summary>
 20    /// <param name="manyToManyRouter">The router.</param>
 21    /// <param name="cancellationToken"></param>
 22    /// <returns>The paths.</returns>
 23    public static async Task<IReadOnlyList<IReadOnlyList<Result<Path>>>> Paths(this IRouterManyToMany manyToManyRouter, 
 024    {
 025        var sources = manyToManyRouter.Sources;
 026        var targets = manyToManyRouter.Targets;
 27
 028        if (!sources.TryToUndirected(out var sourcesUndirected) ||
 029            !targets.TryToUndirected(out var targetsUndirected))
 030        {
 031            return await manyToManyRouter.CalculateAsync(sources, targets);
 32        }
 33        else
 034        {
 035            return await manyToManyRouter.CalculateAsync(sourcesUndirected, targetsUndirected, cancellationToken);
 36        }
 037    }
 38
 39    /// <summary>
 40    /// Calculates the routes.
 41    /// </summary>
 42    /// <param name="manyToManyRouter">The router.</param>
 43    /// <param name="cancellationToken"></param>
 44    /// <returns>The paths.</returns>
 45    public static async Task<IReadOnlyList<IReadOnlyList<Result<Route>>>> Calculate(this IRouterManyToMany manyToManyRou
 046    {
 047        var start = DateTime.Now.Ticks;
 048        var paths = await manyToManyRouter.Paths(cancellationToken);
 049        var end = DateTime.Now.Ticks;
 050        Console.WriteLine(new TimeSpan(end - start));
 051        return paths.Select(x =>
 052        {
 053            return x.Select(y =>
 054            {
 055                if (y.IsError) return y.ConvertError<Route>();
 056
 057                return manyToManyRouter.Settings.RouteBuilder.Build(manyToManyRouter.Network,
 058                    manyToManyRouter.Settings.Profile, y);
 059            }).ToArray();
 060        }).ToArray();
 061    }
 62
 63    /// <summary>
 64    /// Calculates the weights.
 65    /// </summary>
 66    /// <param name="manyToManyWeightRouter">The router.</param>
 67    /// <returns></returns>
 68    /// <exception cref="Exception"></exception>
 69    public static Task<Result<IReadOnlyList<IReadOnlyList<double?>>>> Calculate(
 70        this IRouterWeights<IRouterManyToMany> manyToManyWeightRouter)
 071    {
 072        return Task.FromResult(new Result<IReadOnlyList<IReadOnlyList<double?>>>("Not implemented"));
 73
 74        // var profileHandler = manyToManyWeightRouter.Router.Network.GetCostFunctionFor(
 75        //     manyToManyWeightRouter.Router.Settings.Profile);
 76        // var paths = manyToManyWeightRouter.Router.Paths();
 77        // return paths.Select(x =>
 78        // {
 79        //     return x.Select(y => y.Weight(profileHandler.GetForwardWeight)).ToArray();
 80        // }).ToArray();
 081    }
 82}

Methods/Properties

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