< Summary

Information
Class: MyNet.UI.Navigation.Models.NavigationParametersExtensions
Assembly: MyNet.UI
File(s): https://raw.githubusercontent.com/sandre58/MyNet/85372080fe102cd9ee155ceab49ae000e7f66103/src/MyNet.UI/Navigation/Extensions/NavigationParametersExtensions.cs
Tag: 323_28699572109
Line coverage
84%
Covered lines: 11
Uncovered lines: 2
Coverable lines: 13
Total lines: 62
Line coverage: 84.6%
Branch coverage
71%
Covered branches: 10
Total branches: 14
Branch coverage: 71.4%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
ToNavigationParameters(...)70%101087.5%
Get(...)100%22100%
TryGetValue(...)50%2275%

File(s)

https://raw.githubusercontent.com/sandre58/MyNet/85372080fe102cd9ee155ceab49ae000e7f66103/src/MyNet.UI/Navigation/Extensions/NavigationParametersExtensions.cs

#LineLine coverage
 1// -----------------------------------------------------------------------
 2// <copyright file="NavigationParametersExtensions.cs" company="Stéphane ANDRE">
 3// Copyright (c) Stéphane ANDRE. All rights reserved.
 4// </copyright>
 5// -----------------------------------------------------------------------
 6
 7using System.Collections.Generic;
 8
 9#pragma warning disable IDE0130
 10namespace MyNet.UI.Navigation.Models;
 11#pragma warning restore IDE0130
 12
 13/// <summary>
 14/// Provides convenience helpers for working with <see cref="INavigationParameters"/>.
 15/// </summary>
 16public static class NavigationParametersExtensions
 17{
 18    /// <summary>
 19    /// Converts arbitrary values to a <see cref="NavigationParameters"/> bag.
 20    /// </summary>
 21    /// <param name="parameters">Parameter source.</param>
 22    /// <returns>A normalized parameter bag.</returns>
 23    public static NavigationParameters ToNavigationParameters(this object? parameters)
 1224        => parameters switch
 1225        {
 326            null => new(),
 327            NavigationParameters navigationParameters => new(navigationParameters),
 028            INavigationParameters typedParameters => typedParameters as NavigationParameters ?? NavigationParameters.Fro
 329            IEnumerable<KeyValuePair<string, object?>> pairs => new(pairs),
 330            _ => NavigationParameters.From(parameters)
 1231        };
 32
 33    extension(INavigationParameters? parameters)
 34    {
 35        /// <summary>
 36        /// Gets a typed value from a parameter bag when it is backed by <see cref="NavigationParameters"/>.
 37        /// </summary>
 38        /// <typeparam name="T">Expected value type.</typeparam>
 39        /// <param name="key">Parameter key.</param>
 40        /// <param name="defaultValue">Fallback value.</param>
 41        /// <returns>The typed value or <paramref name="defaultValue"/>.</returns>
 42        public T? Get<T>(string key, T? defaultValue = default)
 943            => parameters is NavigationParameters bag ? bag.Get(key, defaultValue) : defaultValue;
 44
 45        /// <summary>
 46        /// Tries to get a typed value from a parameter bag when it is backed by <see cref="NavigationParameters"/>.
 47        /// </summary>
 48        /// <typeparam name="T">Expected value type.</typeparam>
 49        /// <param name="key">Parameter key.</param>
 50        /// <param name="value">Resolved value.</param>
 51        /// <returns><see langword="true"/> when the parameter exists.</returns>
 52        public bool TryGetValue<T>(string key, out T? value)
 53        {
 354            if (parameters is NavigationParameters bag)
 055                return bag.TryGetValue(key, out value);
 56
 357            value = default;
 358            return false;
 59        }
 60    }
 61}
 62