/
githubmirror
/
aspnetcore
Обзор
Документация
Войти
/
githubmirror
/
aspnetcore
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Testing/test/LogValuesAssertTest.cs
220 строк
8 KB
Alexander Köplinger
Upgrade xunit version to 2.9.0 (#57303)
23 авг 2024, 20:27
Не верифицирован
23 авг 2024, 20:27
9209724
Код
Авторство
О чём код?
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Collections.Generic; using System.Linq; using Xunit; using Xunit.Sdk; namespace Microsoft.Extensions.Logging.Testing.Tests; public class LogValuesAssertTest { public static TheoryData< IEnumerable<KeyValuePair<string, object>>, IEnumerable<KeyValuePair<string, object>>> ExpectedValues_SubsetOf_ActualValuesData { get { return new TheoryData< IEnumerable<KeyValuePair<string, object>>, IEnumerable<KeyValuePair<string, object>>>() { { new KeyValuePair<string,object>[] { }, new KeyValuePair<string,object>[] { } }, { // subset new KeyValuePair<string,object>[] { }, new[] { new KeyValuePair<string, object>("RouteValue", "Failure"), new KeyValuePair<string, object>("RouteKey", "id") } }, { // subset new[] { new KeyValuePair<string, object>("RouteValue", "Failure"), new KeyValuePair<string, object>("RouteKey", "id") }, new[] { new KeyValuePair<string, object>("RouteValue", "Failure"), new KeyValuePair<string, object>("RouteKey", "id"), new KeyValuePair<string, object>("RouteConstraint", "Something") } }, { // equal number of values new[] { new KeyValuePair<string, object>("RouteValue", "Failure"), new KeyValuePair<string, object>("RouteKey", "id") }, new[] { new KeyValuePair<string, object>("RouteValue", "Failure"), new KeyValuePair<string, object>("RouteKey", "id"), } } }; } } [Theory] [MemberData(nameof(ExpectedValues_SubsetOf_ActualValuesData))] public void Asserts_Success_ExpectedValues_SubsetOf_ActualValues( IEnumerable<KeyValuePair<string, object>> expectedValues, IEnumerable<KeyValuePair<string, object>> actualValues) { // Act && Assert LogValuesAssert.Contains(expectedValues, actualValues); } public static TheoryData< IEnumerable<KeyValuePair<string, object>>, IEnumerable<KeyValuePair<string, object>>> ExpectedValues_MoreThan_ActualValuesData { get { return new TheoryData< IEnumerable<KeyValuePair<string, object>>, IEnumerable<KeyValuePair<string, object>>>() { { new[] { new KeyValuePair<string, object>("RouteValue", "Failure"), new KeyValuePair<string, object>("RouteKey", "id") }, new KeyValuePair<string,object>[] { } }, { new[] { new KeyValuePair<string, object>("RouteValue", "Failure"), new KeyValuePair<string, object>("RouteKey", "id"), new KeyValuePair<string, object>("RouteConstraint", "Something") }, new[] { new KeyValuePair<string, object>("RouteValue", "Failure"), new KeyValuePair<string, object>("RouteKey", "id") } } }; } } [Theory] [MemberData(nameof(ExpectedValues_MoreThan_ActualValuesData))] public void Asserts_Failure_ExpectedValues_MoreThan_ActualValues( IEnumerable<KeyValuePair<string, object>> expectedValues, IEnumerable<KeyValuePair<string, object>> actualValues) { // Act && Assert var equalException = Assert.Throws<EqualException>( () => LogValuesAssert.Contains(expectedValues, actualValues)); Assert.Contains(GetString(expectedValues), equalException.Message); Assert.Contains(GetString(actualValues), equalException.Message); } [Fact] public void Asserts_Success_IgnoringOrderOfItems() { // Arrange var expectedLogValues = new[] { new KeyValuePair<string, object>("RouteConstraint", "Something"), new KeyValuePair<string, object>("RouteValue", "Failure"), new KeyValuePair<string, object>("RouteKey", "id") }; var actualLogValues = new[] { new KeyValuePair<string, object>("RouteKey", "id"), new KeyValuePair<string, object>("RouteConstraint", "Something"), new KeyValuePair<string, object>("RouteValue", "Failure"), }; // Act && Assert LogValuesAssert.Contains(expectedLogValues, actualLogValues); } [Fact] public void Asserts_Success_OnSpecifiedKeyAndValue() { // Arrange var actualLogValues = new[] { new KeyValuePair<string, object>("RouteConstraint", "Something"), new KeyValuePair<string, object>("RouteKey", "id"), new KeyValuePair<string, object>("RouteValue", "Failure"), }; // Act && Assert LogValuesAssert.Contains("RouteKey", "id", actualLogValues); } public static TheoryData< IEnumerable<KeyValuePair<string, object>>, IEnumerable<KeyValuePair<string, object>>> CaseSensitivityComparisionData { get { return new TheoryData< IEnumerable<KeyValuePair<string, object>>, IEnumerable<KeyValuePair<string, object>>>() { { new[] { new KeyValuePair<string, object>("RouteKey", "id"), new KeyValuePair<string, object>("RouteValue", "Failure"), }, new[] { new KeyValuePair<string, object>("ROUTEKEY", "id"), new KeyValuePair<string, object>("RouteValue", "Failure"), } }, { new[] { new KeyValuePair<string, object>("RouteKey", "id"), new KeyValuePair<string, object>("RouteValue", "Failure"), }, new[] { new KeyValuePair<string, object>("RouteKey", "id"), new KeyValuePair<string, object>("RouteValue", "FAILURE"), } } }; } } [Theory] [MemberData(nameof(CaseSensitivityComparisionData))] public void DefaultComparer_Performs_CaseSensitiveComparision( IEnumerable<KeyValuePair<string, object>> expectedValues, IEnumerable<KeyValuePair<string, object>> actualValues) { // Act && Assert var equalException = Assert.Throws<EqualException>( () => LogValuesAssert.Contains(expectedValues, actualValues)); Assert.Contains(GetString(expectedValues), equalException.Message); Assert.Contains(GetString(actualValues), equalException.Message); } private string GetString(IEnumerable<KeyValuePair<string, object>> logValues) { return logValues == null ? "Null" : string.Join(",", logValues.Select(kvp => $"[{kvp.Key} {kvp.Value}]")); } }