Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/dotnet/aspnetcore.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/Http/Routing/test/UnitTests/Matching/TreeRouterMatcherBuilder.cs')
-rw-r--r--src/Http/Routing/test/UnitTests/Matching/TreeRouterMatcherBuilder.cs139
1 files changed, 69 insertions, 70 deletions
diff --git a/src/Http/Routing/test/UnitTests/Matching/TreeRouterMatcherBuilder.cs b/src/Http/Routing/test/UnitTests/Matching/TreeRouterMatcherBuilder.cs
index 00c239a634..c9eece1d44 100644
--- a/src/Http/Routing/test/UnitTests/Matching/TreeRouterMatcherBuilder.cs
+++ b/src/Http/Routing/test/UnitTests/Matching/TreeRouterMatcherBuilder.cs
@@ -14,97 +14,96 @@ using Microsoft.Extensions.Logging.Abstractions;
using Microsoft.Extensions.ObjectPool;
using Microsoft.Extensions.Options;
-namespace Microsoft.AspNetCore.Routing.Matching
+namespace Microsoft.AspNetCore.Routing.Matching;
+
+internal class TreeRouterMatcherBuilder : MatcherBuilder
{
- internal class TreeRouterMatcherBuilder : MatcherBuilder
- {
- private readonly List<RouteEndpoint> _endpoints;
+ private readonly List<RouteEndpoint> _endpoints;
- public TreeRouterMatcherBuilder()
- {
- _endpoints = new List<RouteEndpoint>();
- }
+ public TreeRouterMatcherBuilder()
+ {
+ _endpoints = new List<RouteEndpoint>();
+ }
- public override void AddEndpoint(RouteEndpoint endpoint)
- {
- _endpoints.Add(endpoint);
- }
+ public override void AddEndpoint(RouteEndpoint endpoint)
+ {
+ _endpoints.Add(endpoint);
+ }
- public override Matcher Build()
- {
- var builder = new TreeRouteBuilder(
- NullLoggerFactory.Instance,
- new DefaultObjectPool<UriBuildingContext>(new UriBuilderContextPooledObjectPolicy()),
- new DefaultInlineConstraintResolver(Options.Create(new RouteOptions()), new TestServiceProvider()));
+ public override Matcher Build()
+ {
+ var builder = new TreeRouteBuilder(
+ NullLoggerFactory.Instance,
+ new DefaultObjectPool<UriBuildingContext>(new UriBuilderContextPooledObjectPolicy()),
+ new DefaultInlineConstraintResolver(Options.Create(new RouteOptions()), new TestServiceProvider()));
- var selector = new DefaultEndpointSelector();
+ var selector = new DefaultEndpointSelector();
- var groups = _endpoints
- .GroupBy(e => (e.Order, e.RoutePattern.InboundPrecedence, e.RoutePattern.RawText))
- .OrderBy(g => g.Key.Order)
- .ThenBy(g => g.Key.InboundPrecedence);
+ var groups = _endpoints
+ .GroupBy(e => (e.Order, e.RoutePattern.InboundPrecedence, e.RoutePattern.RawText))
+ .OrderBy(g => g.Key.Order)
+ .ThenBy(g => g.Key.InboundPrecedence);
- var routes = new RouteCollection();
+ var routes = new RouteCollection();
- foreach (var group in groups)
+ foreach (var group in groups)
+ {
+ var candidates = group.ToArray();
+
+ // RouteEndpoint.Values contains the default values parsed from the template
+ // as well as those specified with a literal. We need to separate those
+ // for legacy cases.
+ var endpoint = group.First();
+ var defaults = new RouteValueDictionary(endpoint.RoutePattern.Defaults);
+ for (var i = 0; i < endpoint.RoutePattern.Parameters.Count; i++)
{
- var candidates = group.ToArray();
-
- // RouteEndpoint.Values contains the default values parsed from the template
- // as well as those specified with a literal. We need to separate those
- // for legacy cases.
- var endpoint = group.First();
- var defaults = new RouteValueDictionary(endpoint.RoutePattern.Defaults);
- for (var i = 0; i < endpoint.RoutePattern.Parameters.Count; i++)
+ var parameter = endpoint.RoutePattern.Parameters[i];
+ if (parameter.Default != null)
{
- var parameter = endpoint.RoutePattern.Parameters[i];
- if (parameter.Default != null)
- {
- defaults.Remove(parameter.Name);
- }
+ defaults.Remove(parameter.Name);
}
-
- builder.MapInbound(
- new SelectorRouter(selector, candidates),
- new RouteTemplate(endpoint.RoutePattern),
- routeName: null,
- order: endpoint.Order);
}
- return new TreeRouterMatcher(builder.Build());
+ builder.MapInbound(
+ new SelectorRouter(selector, candidates),
+ new RouteTemplate(endpoint.RoutePattern),
+ routeName: null,
+ order: endpoint.Order);
}
- private class SelectorRouter : IRouter
+ return new TreeRouterMatcher(builder.Build());
+ }
+
+ private class SelectorRouter : IRouter
+ {
+ private readonly EndpointSelector _selector;
+ private readonly RouteEndpoint[] _candidates;
+ private readonly RouteValueDictionary[] _values;
+ private readonly int[] _scores;
+
+ public SelectorRouter(EndpointSelector selector, RouteEndpoint[] candidates)
{
- private readonly EndpointSelector _selector;
- private readonly RouteEndpoint[] _candidates;
- private readonly RouteValueDictionary[] _values;
- private readonly int[] _scores;
+ _selector = selector;
+ _candidates = candidates;
- public SelectorRouter(EndpointSelector selector, RouteEndpoint[] candidates)
- {
- _selector = selector;
- _candidates = candidates;
+ _values = new RouteValueDictionary[_candidates.Length];
+ _scores = new int[_candidates.Length];
+ }
- _values = new RouteValueDictionary[_candidates.Length];
- _scores = new int[_candidates.Length];
- }
+ public VirtualPathData GetVirtualPath(VirtualPathContext context)
+ {
+ throw new NotImplementedException();
+ }
- public VirtualPathData GetVirtualPath(VirtualPathContext context)
- {
- throw new NotImplementedException();
- }
+ public async Task RouteAsync(RouteContext routeContext)
+ {
+ // This is needed due to a quirk of our tests - they reuse the endpoint feature.
+ routeContext.HttpContext.SetEndpoint(null);
- public async Task RouteAsync(RouteContext routeContext)
+ await _selector.SelectAsync(routeContext.HttpContext, new CandidateSet(_candidates, _values, _scores));
+ if (routeContext.HttpContext.GetEndpoint() != null)
{
- // This is needed due to a quirk of our tests - they reuse the endpoint feature.
- routeContext.HttpContext.SetEndpoint(null);
-
- await _selector.SelectAsync(routeContext.HttpContext, new CandidateSet(_candidates, _values, _scores));
- if (routeContext.HttpContext.GetEndpoint() != null)
- {
- routeContext.Handler = (_) => Task.CompletedTask;
- }
+ routeContext.Handler = (_) => Task.CompletedTask;
}
}
}