diff options
Diffstat (limited to 'src/Http/Http.Abstractions/test/RouteValueDictionaryTests.cs')
-rw-r--r-- | src/Http/Http.Abstractions/test/RouteValueDictionaryTests.cs | 3249 |
1 files changed, 1624 insertions, 1625 deletions
diff --git a/src/Http/Http.Abstractions/test/RouteValueDictionaryTests.cs b/src/Http/Http.Abstractions/test/RouteValueDictionaryTests.cs index a9cff69dca..9e56c70cab 100644 --- a/src/Http/Http.Abstractions/test/RouteValueDictionaryTests.cs +++ b/src/Http/Http.Abstractions/test/RouteValueDictionaryTests.cs @@ -7,1813 +7,1813 @@ using System.Linq; using Microsoft.AspNetCore.Testing; using Xunit; -namespace Microsoft.AspNetCore.Routing.Tests +namespace Microsoft.AspNetCore.Routing.Tests; + +public class RouteValueDictionaryTests { - public class RouteValueDictionaryTests + [Fact] + public void DefaultCtor_UsesEmptyStorage() { - [Fact] - public void DefaultCtor_UsesEmptyStorage() - { - // Arrange - // Act - var dict = new RouteValueDictionary(); - - // Assert - Assert.Empty(dict); - Assert.Empty(dict._arrayStorage); - Assert.Null(dict._propertyStorage); - } + // Arrange + // Act + var dict = new RouteValueDictionary(); + + // Assert + Assert.Empty(dict); + Assert.Empty(dict._arrayStorage); + Assert.Null(dict._propertyStorage); + } - [Fact] - public void CreateFromNull_UsesEmptyStorage() - { - // Arrange - // Act - var dict = new RouteValueDictionary(null); - - // Assert - Assert.Empty(dict); - Assert.Empty(dict._arrayStorage); - Assert.Null(dict._propertyStorage); - } + [Fact] + public void CreateFromNull_UsesEmptyStorage() + { + // Arrange + // Act + var dict = new RouteValueDictionary(null); + + // Assert + Assert.Empty(dict); + Assert.Empty(dict._arrayStorage); + Assert.Null(dict._propertyStorage); + } - [Fact] - public void CreateFromRouteValueDictionary_WithArrayStorage_CopiesStorage() - { - // Arrange - var other = new RouteValueDictionary() + [Fact] + public void CreateFromRouteValueDictionary_WithArrayStorage_CopiesStorage() + { + // Arrange + var other = new RouteValueDictionary() { { "1", 1 } }; - // Act - var dict = new RouteValueDictionary(other); + // Act + var dict = new RouteValueDictionary(other); - // Assert - Assert.Equal(other, dict); - Assert.Single(dict._arrayStorage); - Assert.Null(dict._propertyStorage); + // Assert + Assert.Equal(other, dict); + Assert.Single(dict._arrayStorage); + Assert.Null(dict._propertyStorage); - var storage = Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - var otherStorage = Assert.IsType<KeyValuePair<string, object?>[]>(other._arrayStorage); - Assert.NotSame(otherStorage, storage); - } + var storage = Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + var otherStorage = Assert.IsType<KeyValuePair<string, object?>[]>(other._arrayStorage); + Assert.NotSame(otherStorage, storage); + } - [Fact] - public void CreateFromRouteValueDictionary_WithPropertyStorage_CopiesStorage() - { - // Arrange - var other = new RouteValueDictionary(new { key = "value" }); + [Fact] + public void CreateFromRouteValueDictionary_WithPropertyStorage_CopiesStorage() + { + // Arrange + var other = new RouteValueDictionary(new { key = "value" }); - // Act - var dict = new RouteValueDictionary(other); + // Act + var dict = new RouteValueDictionary(other); - // Assert - Assert.Equal(other, dict); - AssertEmptyArrayStorage(dict); + // Assert + Assert.Equal(other, dict); + AssertEmptyArrayStorage(dict); - var storage = dict._propertyStorage; - var otherStorage = other._propertyStorage; - Assert.Same(otherStorage, storage); - } + var storage = dict._propertyStorage; + var otherStorage = other._propertyStorage; + Assert.Same(otherStorage, storage); + } - public static IEnumerable<object[]> IEnumerableKeyValuePairData + public static IEnumerable<object[]> IEnumerableKeyValuePairData + { + get { - get + var routeValues = new[] { - var routeValues = new[] - { new KeyValuePair<string, object?>("Name", "James"), new KeyValuePair<string, object?>("Age", 30), new KeyValuePair<string, object?>("Address", new Address() { City = "Redmond", State = "WA" }) }; - yield return new object[] { routeValues.ToDictionary(kvp => kvp.Key, kvp => kvp.Value) }; + yield return new object[] { routeValues.ToDictionary(kvp => kvp.Key, kvp => kvp.Value) }; - yield return new object[] { routeValues.ToList() }; + yield return new object[] { routeValues.ToList() }; - yield return new object[] { routeValues }; - } + yield return new object[] { routeValues }; } + } - public static IEnumerable<object[]> IEnumerableStringValuePairData + public static IEnumerable<object[]> IEnumerableStringValuePairData + { + get { - get + var routeValues = new[] { - var routeValues = new[] - { new KeyValuePair<string, string>("First Name", "James"), new KeyValuePair<string, string>("Last Name", "Henrik"), new KeyValuePair<string, string>("Middle Name", "Bob") }; - yield return new object[] { routeValues.ToDictionary(kvp => kvp.Key, kvp => kvp.Value) }; + yield return new object[] { routeValues.ToDictionary(kvp => kvp.Key, kvp => kvp.Value) }; - yield return new object[] { routeValues.ToList() }; + yield return new object[] { routeValues.ToList() }; - yield return new object[] { routeValues }; - } + yield return new object[] { routeValues }; } + } - [Theory] - [MemberData(nameof(IEnumerableKeyValuePairData))] - public void CreateFromIEnumerableKeyValuePair_CopiesValues(object values) - { - // Arrange & Act - var dict = new RouteValueDictionary(values); - - // Assert - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - Assert.Collection( - dict.OrderBy(kvp => kvp.Key), - kvp => - { - Assert.Equal("Address", kvp.Key); - var address = Assert.IsType<Address>(kvp.Value); - Assert.Equal("Redmond", address.City); - Assert.Equal("WA", address.State); - }, - kvp => { Assert.Equal("Age", kvp.Key); Assert.Equal(30, kvp.Value); }, - kvp => { Assert.Equal("Name", kvp.Key); Assert.Equal("James", kvp.Value); }); - } + [Theory] + [MemberData(nameof(IEnumerableKeyValuePairData))] + public void CreateFromIEnumerableKeyValuePair_CopiesValues(object values) + { + // Arrange & Act + var dict = new RouteValueDictionary(values); + + // Assert + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + Assert.Collection( + dict.OrderBy(kvp => kvp.Key), + kvp => + { + Assert.Equal("Address", kvp.Key); + var address = Assert.IsType<Address>(kvp.Value); + Assert.Equal("Redmond", address.City); + Assert.Equal("WA", address.State); + }, + kvp => { Assert.Equal("Age", kvp.Key); Assert.Equal(30, kvp.Value); }, + kvp => { Assert.Equal("Name", kvp.Key); Assert.Equal("James", kvp.Value); }); + } - [Theory] - [MemberData(nameof(IEnumerableStringValuePairData))] - public void CreateFromIEnumerableStringValuePair_CopiesValues(object values) - { - // Arrange & Act - var dict = new RouteValueDictionary(values); - - // Assert - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - Assert.Collection( - dict.OrderBy(kvp => kvp.Key), - kvp => { Assert.Equal("First Name", kvp.Key); Assert.Equal("James", kvp.Value); }, - kvp => { Assert.Equal("Last Name", kvp.Key); Assert.Equal("Henrik", kvp.Value); }, - kvp => { Assert.Equal("Middle Name", kvp.Key); Assert.Equal("Bob", kvp.Value); }); - } + [Theory] + [MemberData(nameof(IEnumerableStringValuePairData))] + public void CreateFromIEnumerableStringValuePair_CopiesValues(object values) + { + // Arrange & Act + var dict = new RouteValueDictionary(values); + + // Assert + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + Assert.Collection( + dict.OrderBy(kvp => kvp.Key), + kvp => { Assert.Equal("First Name", kvp.Key); Assert.Equal("James", kvp.Value); }, + kvp => { Assert.Equal("Last Name", kvp.Key); Assert.Equal("Henrik", kvp.Value); }, + kvp => { Assert.Equal("Middle Name", kvp.Key); Assert.Equal("Bob", kvp.Value); }); + } - [Fact] - public void CreateFromIEnumerableKeyValuePair_ThrowsExceptionForDuplicateKey() - { - // Arrange - var values = new List<KeyValuePair<string, object?>>() + [Fact] + public void CreateFromIEnumerableKeyValuePair_ThrowsExceptionForDuplicateKey() + { + // Arrange + var values = new List<KeyValuePair<string, object?>>() { new KeyValuePair<string, object?>("name", "Billy"), new KeyValuePair<string, object?>("Name", "Joey"), }; - // Act & Assert - ExceptionAssert.ThrowsArgument( - () => new RouteValueDictionary(values), - "key", - $"An element with the key 'Name' already exists in the {nameof(RouteValueDictionary)}."); - } + // Act & Assert + ExceptionAssert.ThrowsArgument( + () => new RouteValueDictionary(values), + "key", + $"An element with the key 'Name' already exists in the {nameof(RouteValueDictionary)}."); + } - [Fact] - public void CreateFromIEnumerableStringValuePair_ThrowsExceptionForDuplicateKey() - { - // Arrange - var values = new List<KeyValuePair<string, string>>() + [Fact] + public void CreateFromIEnumerableStringValuePair_ThrowsExceptionForDuplicateKey() + { + // Arrange + var values = new List<KeyValuePair<string, string>>() { new KeyValuePair<string, string>("name", "Billy"), new KeyValuePair<string, string>("Name", "Joey"), }; - // Act & Assert - ExceptionAssert.ThrowsArgument( - () => new RouteValueDictionary(values), - "key", - $"An element with the key 'Name' already exists in the {nameof(RouteValueDictionary)}."); - } + // Act & Assert + ExceptionAssert.ThrowsArgument( + () => new RouteValueDictionary(values), + "key", + $"An element with the key 'Name' already exists in the {nameof(RouteValueDictionary)}."); + } - [Fact] - public void CreateFromObject_CopiesPropertiesFromAnonymousType() - { - // Arrange - var obj = new { cool = "beans", awesome = 123 }; - - // Act - var dict = new RouteValueDictionary(obj); - - // Assert - Assert.NotNull(dict._propertyStorage); - Assert.Collection( - dict.OrderBy(kvp => kvp.Key), - kvp => { Assert.Equal("awesome", kvp.Key); Assert.Equal(123, kvp.Value); }, - kvp => { Assert.Equal("cool", kvp.Key); Assert.Equal("beans", kvp.Value); }); - } + [Fact] + public void CreateFromObject_CopiesPropertiesFromAnonymousType() + { + // Arrange + var obj = new { cool = "beans", awesome = 123 }; + + // Act + var dict = new RouteValueDictionary(obj); + + // Assert + Assert.NotNull(dict._propertyStorage); + Assert.Collection( + dict.OrderBy(kvp => kvp.Key), + kvp => { Assert.Equal("awesome", kvp.Key); Assert.Equal(123, kvp.Value); }, + kvp => { Assert.Equal("cool", kvp.Key); Assert.Equal("beans", kvp.Value); }); + } - [Fact] - public void CreateFromObject_CopiesPropertiesFromRegularType() - { - // Arrange - var obj = new RegularType() { CoolnessFactor = 73 }; - - // Act - var dict = new RouteValueDictionary(obj); - - // Assert - Assert.NotNull(dict._propertyStorage); - Assert.Collection( - dict.OrderBy(kvp => kvp.Key), - kvp => - { - Assert.Equal("CoolnessFactor", kvp.Key); - Assert.Equal(73, kvp.Value); - }, - kvp => - { - Assert.Equal("IsAwesome", kvp.Key); - var value = Assert.IsType<bool>(kvp.Value); - Assert.False(value); - }); - } + [Fact] + public void CreateFromObject_CopiesPropertiesFromRegularType() + { + // Arrange + var obj = new RegularType() { CoolnessFactor = 73 }; - [Fact] - public void CreateFromObject_CopiesPropertiesFromRegularType_PublicOnly() - { - // Arrange - var obj = new Visibility() { IsPublic = true, ItsInternalDealWithIt = 5 }; - - // Act - var dict = new RouteValueDictionary(obj); - - // Assert - Assert.NotNull(dict._propertyStorage); - Assert.Collection( - dict.OrderBy(kvp => kvp.Key), - kvp => - { - Assert.Equal("IsPublic", kvp.Key); - var value = Assert.IsType<bool>(kvp.Value); - Assert.True(value); - }); - } + // Act + var dict = new RouteValueDictionary(obj); - [Fact] - public void CreateFromObject_CopiesPropertiesFromRegularType_IgnoresStatic() - { - // Arrange - var obj = new StaticProperty(); + // Assert + Assert.NotNull(dict._propertyStorage); + Assert.Collection( + dict.OrderBy(kvp => kvp.Key), + kvp => + { + Assert.Equal("CoolnessFactor", kvp.Key); + Assert.Equal(73, kvp.Value); + }, + kvp => + { + Assert.Equal("IsAwesome", kvp.Key); + var value = Assert.IsType<bool>(kvp.Value); + Assert.False(value); + }); + } - // Act - var dict = new RouteValueDictionary(obj); + [Fact] + public void CreateFromObject_CopiesPropertiesFromRegularType_PublicOnly() + { + // Arrange + var obj = new Visibility() { IsPublic = true, ItsInternalDealWithIt = 5 }; - // Assert - Assert.NotNull(dict._propertyStorage); - AssertEmptyArrayStorage(dict); - Assert.Empty(dict); - } + // Act + var dict = new RouteValueDictionary(obj); - [Fact] - public void CreateFromObject_CopiesPropertiesFromRegularType_IgnoresSetOnly() - { - // Arrange - var obj = new SetterOnly() { CoolSetOnly = false }; + // Assert + Assert.NotNull(dict._propertyStorage); + Assert.Collection( + dict.OrderBy(kvp => kvp.Key), + kvp => + { + Assert.Equal("IsPublic", kvp.Key); + var value = Assert.IsType<bool>(kvp.Value); + Assert.True(value); + }); + } - // Act - var dict = new RouteValueDictionary(obj); + [Fact] + public void CreateFromObject_CopiesPropertiesFromRegularType_IgnoresStatic() + { + // Arrange + var obj = new StaticProperty(); - // Assert - Assert.NotNull(dict._propertyStorage); - AssertEmptyArrayStorage(dict); - Assert.Empty(dict); - } + // Act + var dict = new RouteValueDictionary(obj); - [Fact] - public void CreateFromObject_CopiesPropertiesFromRegularType_IncludesInherited() - { - // Arrange - var obj = new Derived() { TotallySweetProperty = true, DerivedProperty = false }; - - // Act - var dict = new RouteValueDictionary(obj); - - // Assert - Assert.NotNull(dict._propertyStorage); - AssertEmptyArrayStorage(dict); - Assert.Collection( - dict.OrderBy(kvp => kvp.Key), - kvp => - { - Assert.Equal("DerivedProperty", kvp.Key); - var value = Assert.IsType<bool>(kvp.Value); - Assert.False(value); - }, - kvp => - { - Assert.Equal("TotallySweetProperty", kvp.Key); - var value = Assert.IsType<bool>(kvp.Value); - Assert.True(value); - }); - } + // Assert + Assert.NotNull(dict._propertyStorage); + AssertEmptyArrayStorage(dict); + Assert.Empty(dict); + } - [Fact] - public void CreateFromObject_CopiesPropertiesFromRegularType_WithHiddenProperty() - { - // Arrange - var obj = new DerivedHiddenProperty() { DerivedProperty = 5 }; - - // Act - var dict = new RouteValueDictionary(obj); - - // Assert - Assert.NotNull(dict._propertyStorage); - AssertEmptyArrayStorage(dict); - Assert.Collection( - dict.OrderBy(kvp => kvp.Key), - kvp => { Assert.Equal("DerivedProperty", kvp.Key); Assert.Equal(5, kvp.Value); }); - } + [Fact] + public void CreateFromObject_CopiesPropertiesFromRegularType_IgnoresSetOnly() + { + // Arrange + var obj = new SetterOnly() { CoolSetOnly = false }; - [Fact] - public void CreateFromObject_CopiesPropertiesFromRegularType_WithIndexerProperty() - { - // Arrange - var obj = new IndexerProperty(); + // Act + var dict = new RouteValueDictionary(obj); - // Act - var dict = new RouteValueDictionary(obj); + // Assert + Assert.NotNull(dict._propertyStorage); + AssertEmptyArrayStorage(dict); + Assert.Empty(dict); + } - // Assert - Assert.NotNull(dict._propertyStorage); - AssertEmptyArrayStorage(dict); - Assert.Empty(dict); - } + [Fact] + public void CreateFromObject_CopiesPropertiesFromRegularType_IncludesInherited() + { + // Arrange + var obj = new Derived() { TotallySweetProperty = true, DerivedProperty = false }; + + // Act + var dict = new RouteValueDictionary(obj); + + // Assert + Assert.NotNull(dict._propertyStorage); + AssertEmptyArrayStorage(dict); + Assert.Collection( + dict.OrderBy(kvp => kvp.Key), + kvp => + { + Assert.Equal("DerivedProperty", kvp.Key); + var value = Assert.IsType<bool>(kvp.Value); + Assert.False(value); + }, + kvp => + { + Assert.Equal("TotallySweetProperty", kvp.Key); + var value = Assert.IsType<bool>(kvp.Value); + Assert.True(value); + }); + } - [Fact] - public void CreateFromObject_MixedCaseThrows() - { - // Arrange - var obj = new { controller = "Home", Controller = "Home" }; + [Fact] + public void CreateFromObject_CopiesPropertiesFromRegularType_WithHiddenProperty() + { + // Arrange + var obj = new DerivedHiddenProperty() { DerivedProperty = 5 }; + + // Act + var dict = new RouteValueDictionary(obj); + + // Assert + Assert.NotNull(dict._propertyStorage); + AssertEmptyArrayStorage(dict); + Assert.Collection( + dict.OrderBy(kvp => kvp.Key), + kvp => { Assert.Equal("DerivedProperty", kvp.Key); Assert.Equal(5, kvp.Value); }); + } - var message = - $"The type '{obj.GetType().FullName}' defines properties 'controller' and 'Controller' which differ " + - $"only by casing. This is not supported by {nameof(RouteValueDictionary)} which uses " + - $"case-insensitive comparisons."; + [Fact] + public void CreateFromObject_CopiesPropertiesFromRegularType_WithIndexerProperty() + { + // Arrange + var obj = new IndexerProperty(); - // Act & Assert - var exception = Assert.Throws<InvalidOperationException>(() => - { - var dictionary = new RouteValueDictionary(obj); - }); + // Act + var dict = new RouteValueDictionary(obj); - // Ignoring case to make sure we're not testing reflection's ordering. - Assert.Equal(message, exception.Message, ignoreCase: true); - } + // Assert + Assert.NotNull(dict._propertyStorage); + AssertEmptyArrayStorage(dict); + Assert.Empty(dict); + } - // Our comparer is hardcoded to be OrdinalIgnoreCase no matter what. - [Fact] - public void Comparer_IsOrdinalIgnoreCase() - { - // Arrange - // Act - var dict = new RouteValueDictionary(); + [Fact] + public void CreateFromObject_MixedCaseThrows() + { + // Arrange + var obj = new { controller = "Home", Controller = "Home" }; - // Assert - Assert.Same(StringComparer.OrdinalIgnoreCase, dict.Comparer); - } + var message = + $"The type '{obj.GetType().FullName}' defines properties 'controller' and 'Controller' which differ " + + $"only by casing. This is not supported by {nameof(RouteValueDictionary)} which uses " + + $"case-insensitive comparisons."; - // Our comparer is hardcoded to be IsReadOnly==false no matter what. - [Fact] - public void IsReadOnly_False() + // Act & Assert + var exception = Assert.Throws<InvalidOperationException>(() => { - // Arrange - var dict = new RouteValueDictionary(); + var dictionary = new RouteValueDictionary(obj); + }); - // Act - var result = ((ICollection<KeyValuePair<string, object?>>)dict).IsReadOnly; + // Ignoring case to make sure we're not testing reflection's ordering. + Assert.Equal(message, exception.Message, ignoreCase: true); + } - // Assert - Assert.False(result); - } + // Our comparer is hardcoded to be OrdinalIgnoreCase no matter what. + [Fact] + public void Comparer_IsOrdinalIgnoreCase() + { + // Arrange + // Act + var dict = new RouteValueDictionary(); - [Fact] - public void IndexGet_EmptyStringIsAllowed() - { - // Arrange - var dict = new RouteValueDictionary(); + // Assert + Assert.Same(StringComparer.OrdinalIgnoreCase, dict.Comparer); + } - // Act - var value = dict[""]; + // Our comparer is hardcoded to be IsReadOnly==false no matter what. + [Fact] + public void IsReadOnly_False() + { + // Arrange + var dict = new RouteValueDictionary(); - // Assert - Assert.Null(value); - } + // Act + var result = ((ICollection<KeyValuePair<string, object?>>)dict).IsReadOnly; - [Fact] - public void IndexGet_EmptyStorage_ReturnsNull() - { - // Arrange - var dict = new RouteValueDictionary(); + // Assert + Assert.False(result); + } - // Act - var value = dict["key"]; + [Fact] + public void IndexGet_EmptyStringIsAllowed() + { + // Arrange + var dict = new RouteValueDictionary(); - // Assert - Assert.Null(value); - } + // Act + var value = dict[""]; - [Fact] - public void IndexGet_PropertyStorage_NoMatch_ReturnsNull() - { - // Arrange - var dict = new RouteValueDictionary(new { age = 30 }); + // Assert + Assert.Null(value); + } - // Act - var value = dict["key"]; + [Fact] + public void IndexGet_EmptyStorage_ReturnsNull() + { + // Arrange + var dict = new RouteValueDictionary(); - // Assert - Assert.Null(value); - Assert.NotNull(dict._propertyStorage); - } + // Act + var value = dict["key"]; - [Fact] - public void IndexGet_PropertyStorage_Match_ReturnsValue() - { - // Arrange - var dict = new RouteValueDictionary(new { key = "value" }); + // Assert + Assert.Null(value); + } - // Act - var value = dict["key"]; + [Fact] + public void IndexGet_PropertyStorage_NoMatch_ReturnsNull() + { + // Arrange + var dict = new RouteValueDictionary(new { age = 30 }); - // Assert - Assert.Equal("value", value); - Assert.NotNull(dict._propertyStorage); - } + // Act + var value = dict["key"]; - [Fact] - public void IndexGet_PropertyStorage_MatchIgnoreCase_ReturnsValue() - { - // Arrange - var dict = new RouteValueDictionary(new { key = "value" }); + // Assert + Assert.Null(value); + Assert.NotNull(dict._propertyStorage); + } - // Act - var value = dict["kEy"]; + [Fact] + public void IndexGet_PropertyStorage_Match_ReturnsValue() + { + // Arrange + var dict = new RouteValueDictionary(new { key = "value" }); - // Assert - Assert.Equal("value", value); - Assert.NotNull(dict._propertyStorage); - } + // Act + var value = dict["key"]; - [Fact] - public void IndexGet_ArrayStorage_NoMatch_ReturnsNull() - { - // Arrange - var dict = new RouteValueDictionary() + // Assert + Assert.Equal("value", value); + Assert.NotNull(dict._propertyStorage); + } + + [Fact] + public void IndexGet_PropertyStorage_MatchIgnoreCase_ReturnsValue() + { + // Arrange + var dict = new RouteValueDictionary(new { key = "value" }); + + // Act + var value = dict["kEy"]; + + // Assert + Assert.Equal("value", value); + Assert.NotNull(dict._propertyStorage); + } + + [Fact] + public void IndexGet_ArrayStorage_NoMatch_ReturnsNull() + { + // Arrange + var dict = new RouteValueDictionary() { { "age", 30 }, }; - // Act - var value = dict["key"]; + // Act + var value = dict["key"]; - // Assert - Assert.Null(value); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.Null(value); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void IndexGet_ListStorage_Match_ReturnsValue() - { - // Arrange - var dict = new RouteValueDictionary() + [Fact] + public void IndexGet_ListStorage_Match_ReturnsValue() + { + // Arrange + var dict = new RouteValueDictionary() { { "key", "value" }, }; - // Act - var value = dict["key"]; + // Act + var value = dict["key"]; - // Assert - Assert.Equal("value", value); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.Equal("value", value); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void IndexGet_ListStorage_MatchIgnoreCase_ReturnsValue() - { - // Arrange - var dict = new RouteValueDictionary() + [Fact] + public void IndexGet_ListStorage_MatchIgnoreCase_ReturnsValue() + { + // Arrange + var dict = new RouteValueDictionary() { { "key", "value" }, }; - // Act - var value = dict["kEy"]; + // Act + var value = dict["kEy"]; - // Assert - Assert.Equal("value", value); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.Equal("value", value); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void IndexSet_EmptyStringIsAllowed() - { - // Arrange - var dict = new RouteValueDictionary(); + [Fact] + public void IndexSet_EmptyStringIsAllowed() + { + // Arrange + var dict = new RouteValueDictionary(); - // Act - dict[""] = "foo"; + // Act + dict[""] = "foo"; - // Assert - Assert.Equal("foo", dict[""]); - } + // Assert + Assert.Equal("foo", dict[""]); + } - [Fact] - public void IndexSet_EmptyStorage_UpgradesToList() - { - // Arrange - var dict = new RouteValueDictionary(); + [Fact] + public void IndexSet_EmptyStorage_UpgradesToList() + { + // Arrange + var dict = new RouteValueDictionary(); - // Act - dict["key"] = "value"; + // Act + dict["key"] = "value"; - // Assert - Assert.Collection(dict, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.Collection(dict, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void IndexSet_PropertyStorage_NoMatch_AddsValue() - { - // Arrange - var dict = new RouteValueDictionary(new { age = 30 }); - - // Act - dict["key"] = "value"; - - // Assert - Assert.Collection( - dict.OrderBy(kvp => kvp.Key), - kvp => { Assert.Equal("age", kvp.Key); Assert.Equal(30, kvp.Value); }, - kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + [Fact] + public void IndexSet_PropertyStorage_NoMatch_AddsValue() + { + // Arrange + var dict = new RouteValueDictionary(new { age = 30 }); + + // Act + dict["key"] = "value"; + + // Assert + Assert.Collection( + dict.OrderBy(kvp => kvp.Key), + kvp => { Assert.Equal("age", kvp.Key); Assert.Equal(30, kvp.Value); }, + kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void IndexSet_PropertyStorage_Match_SetsValue() - { - // Arrange - var dict = new RouteValueDictionary(new { key = "value" }); + [Fact] + public void IndexSet_PropertyStorage_Match_SetsValue() + { + // Arrange + var dict = new RouteValueDictionary(new { key = "value" }); - // Act - dict["key"] = "value"; + // Act + dict["key"] = "value"; - // Assert - Assert.Collection(dict, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.Collection(dict, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void IndexSet_PropertyStorage_MatchIgnoreCase_SetsValue() - { - // Arrange - var dict = new RouteValueDictionary(new { key = "value" }); + [Fact] + public void IndexSet_PropertyStorage_MatchIgnoreCase_SetsValue() + { + // Arrange + var dict = new RouteValueDictionary(new { key = "value" }); - // Act - dict["kEy"] = "value"; + // Act + dict["kEy"] = "value"; - // Assert - Assert.Collection(dict, kvp => { Assert.Equal("kEy", kvp.Key); Assert.Equal("value", kvp.Value); }); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.Collection(dict, kvp => { Assert.Equal("kEy", kvp.Key); Assert.Equal("value", kvp.Value); }); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void IndexSet_ListStorage_NoMatch_AddsValue() - { - // Arrange - var dict = new RouteValueDictionary() + [Fact] + public void IndexSet_ListStorage_NoMatch_AddsValue() + { + // Arrange + var dict = new RouteValueDictionary() { { "age", 30 }, }; - // Act - dict["key"] = "value"; + // Act + dict["key"] = "value"; - // Assert - Assert.Collection( - dict.OrderBy(kvp => kvp.Key), - kvp => { Assert.Equal("age", kvp.Key); Assert.Equal(30, kvp.Value); }, - kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.Collection( + dict.OrderBy(kvp => kvp.Key), + kvp => { Assert.Equal("age", kvp.Key); Assert.Equal(30, kvp.Value); }, + kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void IndexSet_ListStorage_Match_SetsValue() - { - // Arrange - var dict = new RouteValueDictionary() + [Fact] + public void IndexSet_ListStorage_Match_SetsValue() + { + // Arrange + var dict = new RouteValueDictionary() { { "key", "value" }, }; - // Act - dict["key"] = "value"; + // Act + dict["key"] = "value"; - // Assert - Assert.Collection(dict, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.Collection(dict, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void IndexSet_ListStorage_MatchIgnoreCase_SetsValue() - { - // Arrange - var dict = new RouteValueDictionary() + [Fact] + public void IndexSet_ListStorage_MatchIgnoreCase_SetsValue() + { + // Arrange + var dict = new RouteValueDictionary() { { "key", "value" }, }; - // Act - dict["key"] = "value"; + // Act + dict["key"] = "value"; - // Assert - Assert.Collection(dict, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.Collection(dict, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void Count_EmptyStorage() - { - // Arrange - var dict = new RouteValueDictionary(); + [Fact] + public void Count_EmptyStorage() + { + // Arrange + var dict = new RouteValueDictionary(); - // Act - var count = dict.Count; + // Act + var count = dict.Count; - // Assert - Assert.Equal(0, count); - } + // Assert + Assert.Equal(0, count); + } - [Fact] - public void Count_PropertyStorage() - { - // Arrange - var dict = new RouteValueDictionary(new { key = "value", }); + [Fact] + public void Count_PropertyStorage() + { + // Arrange + var dict = new RouteValueDictionary(new { key = "value", }); - // Act - var count = dict.Count; + // Act + var count = dict.Count; - // Assert - Assert.Equal(1, count); - Assert.NotNull(dict._propertyStorage); - } + // Assert + Assert.Equal(1, count); + Assert.NotNull(dict._propertyStorage); + } - [Fact] - public void Count_ListStorage() - { - // Arrange - var dict = new RouteValueDictionary() + [Fact] + public void Count_ListStorage() + { + // Arrange + var dict = new RouteValueDictionary() { { "key", "value" }, }; - // Act - var count = dict.Count; + // Act + var count = dict.Count; - // Assert - Assert.Equal(1, count); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.Equal(1, count); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void Keys_EmptyStorage() - { - // Arrange - var dict = new RouteValueDictionary(); + [Fact] + public void Keys_EmptyStorage() + { + // Arrange + var dict = new RouteValueDictionary(); - // Act - var keys = dict.Keys; + // Act + var keys = dict.Keys; - // Assert - Assert.Empty(keys); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.Empty(keys); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void Keys_PropertyStorage() - { - // Arrange - var dict = new RouteValueDictionary(new { key = "value", }); + [Fact] + public void Keys_PropertyStorage() + { + // Arrange + var dict = new RouteValueDictionary(new { key = "value", }); - // Act - var keys = dict.Keys; + // Act + var keys = dict.Keys; - // Assert - Assert.Equal(new[] { "key" }, keys); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.Equal(new[] { "key" }, keys); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void Keys_ListStorage() - { - // Arrange - var dict = new RouteValueDictionary() + [Fact] + public void Keys_ListStorage() + { + // Arrange + var dict = new RouteValueDictionary() { { "key", "value" }, }; - // Act - var keys = dict.Keys; + // Act + var keys = dict.Keys; - // Assert - Assert.Equal(new[] { "key" }, keys); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.Equal(new[] { "key" }, keys); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void Values_EmptyStorage() - { - // Arrange - var dict = new RouteValueDictionary(); + [Fact] + public void Values_EmptyStorage() + { + // Arrange + var dict = new RouteValueDictionary(); - // Act - var values = dict.Values; + // Act + var values = dict.Values; - // Assert - Assert.Empty(values); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.Empty(values); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void Values_PropertyStorage() - { - // Arrange - var dict = new RouteValueDictionary(new { key = "value", }); + [Fact] + public void Values_PropertyStorage() + { + // Arrange + var dict = new RouteValueDictionary(new { key = "value", }); - // Act - var values = dict.Values; + // Act + var values = dict.Values; - // Assert - Assert.Equal(new object[] { "value" }, values); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.Equal(new object[] { "value" }, values); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void Values_ListStorage() - { - // Arrange - var dict = new RouteValueDictionary() + [Fact] + public void Values_ListStorage() + { + // Arrange + var dict = new RouteValueDictionary() { { "key", "value" }, }; - // Act - var values = dict.Values; + // Act + var values = dict.Values; - // Assert - Assert.Equal(new object[] { "value" }, values); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.Equal(new object[] { "value" }, values); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void Add_EmptyStorage() - { - // Arrange - var dict = new RouteValueDictionary(); + [Fact] + public void Add_EmptyStorage() + { + // Arrange + var dict = new RouteValueDictionary(); - // Act - dict.Add("key", "value"); + // Act + dict.Add("key", "value"); - // Assert - Assert.Collection(dict, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.Collection(dict, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void Add_EmptyStringIsAllowed() - { - // Arrange - var dict = new RouteValueDictionary(); + [Fact] + public void Add_EmptyStringIsAllowed() + { + // Arrange + var dict = new RouteValueDictionary(); - // Act - dict.Add("", "foo"); + // Act + dict.Add("", "foo"); - // Assert - Assert.Equal("foo", dict[""]); - } + // Assert + Assert.Equal("foo", dict[""]); + } - [Fact] - public void Add_PropertyStorage() - { - // Arrange - var dict = new RouteValueDictionary(new { age = 30 }); - - // Act - dict.Add("key", "value"); - - // Assert - Assert.Collection( - dict.OrderBy(kvp => kvp.Key), - kvp => { Assert.Equal("age", kvp.Key); Assert.Equal(30, kvp.Value); }, - kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - - // The upgrade from property -> array should make space for at least 4 entries - Assert.Collection( - dict._arrayStorage, - kvp => Assert.Equal(new KeyValuePair<string, object?>("age", 30), kvp), - kvp => Assert.Equal(new KeyValuePair<string, object?>("key", "value"), kvp), - kvp => Assert.Equal(default, kvp), - kvp => Assert.Equal(default, kvp)); - } + [Fact] + public void Add_PropertyStorage() + { + // Arrange + var dict = new RouteValueDictionary(new { age = 30 }); + + // Act + dict.Add("key", "value"); + + // Assert + Assert.Collection( + dict.OrderBy(kvp => kvp.Key), + kvp => { Assert.Equal("age", kvp.Key); Assert.Equal(30, kvp.Value); }, + kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + + // The upgrade from property -> array should make space for at least 4 entries + Assert.Collection( + dict._arrayStorage, + kvp => Assert.Equal(new KeyValuePair<string, object?>("age", 30), kvp), + kvp => Assert.Equal(new KeyValuePair<string, object?>("key", "value"), kvp), + kvp => Assert.Equal(default, kvp), + kvp => Assert.Equal(default, kvp)); + } - [Fact] - public void Add_ListStorage() - { - // Arrange - var dict = new RouteValueDictionary() + [Fact] + public void Add_ListStorage() + { + // Arrange + var dict = new RouteValueDictionary() { { "age", 30 }, }; - // Act - dict.Add("key", "value"); + // Act + dict.Add("key", "value"); - // Assert - Assert.Collection( - dict.OrderBy(kvp => kvp.Key), - kvp => { Assert.Equal("age", kvp.Key); Assert.Equal(30, kvp.Value); }, - kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.Collection( + dict.OrderBy(kvp => kvp.Key), + kvp => { Assert.Equal("age", kvp.Key); Assert.Equal(30, kvp.Value); }, + kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void Add_DuplicateKey() - { - // Arrange - var dict = new RouteValueDictionary() + [Fact] + public void Add_DuplicateKey() + { + // Arrange + var dict = new RouteValueDictionary() { { "key", "value" }, }; - var message = $"An element with the key 'key' already exists in the {nameof(RouteValueDictionary)}"; + var message = $"An element with the key 'key' already exists in the {nameof(RouteValueDictionary)}"; - // Act & Assert - ExceptionAssert.ThrowsArgument(() => dict.Add("key", "value2"), "key", message); + // Act & Assert + ExceptionAssert.ThrowsArgument(() => dict.Add("key", "value2"), "key", message); - // Assert - Assert.Collection( - dict.OrderBy(kvp => kvp.Key), - kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.Collection( + dict.OrderBy(kvp => kvp.Key), + kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void Add_DuplicateKey_CaseInsensitive() - { - // Arrange - var dict = new RouteValueDictionary() + [Fact] + public void Add_DuplicateKey_CaseInsensitive() + { + // Arrange + var dict = new RouteValueDictionary() { { "key", "value" }, }; - var message = $"An element with the key 'kEy' already exists in the {nameof(RouteValueDictionary)}"; + var message = $"An element with the key 'kEy' already exists in the {nameof(RouteValueDictionary)}"; - // Act & Assert - ExceptionAssert.ThrowsArgument(() => dict.Add("kEy", "value2"), "key", message); + // Act & Assert + ExceptionAssert.ThrowsArgument(() => dict.Add("kEy", "value2"), "key", message); - // Assert - Assert.Collection( - dict.OrderBy(kvp => kvp.Key), - kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.Collection( + dict.OrderBy(kvp => kvp.Key), + kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void Add_KeyValuePair() - { - // Arrange - var dict = new RouteValueDictionary() + [Fact] + public void Add_KeyValuePair() + { + // Arrange + var dict = new RouteValueDictionary() { { "age", 30 }, }; - // Act - ((ICollection<KeyValuePair<string, object?>>)dict).Add(new KeyValuePair<string, object?>("key", "value")); + // Act + ((ICollection<KeyValuePair<string, object?>>)dict).Add(new KeyValuePair<string, object?>("key", "value")); - // Assert - Assert.Collection( - dict.OrderBy(kvp => kvp.Key), - kvp => { Assert.Equal("age", kvp.Key); Assert.Equal(30, kvp.Value); }, - kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.Collection( + dict.OrderBy(kvp => kvp.Key), + kvp => { Assert.Equal("age", kvp.Key); Assert.Equal(30, kvp.Value); }, + kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void Clear_EmptyStorage() - { - // Arrange - var dict = new RouteValueDictionary(); + [Fact] + public void Clear_EmptyStorage() + { + // Arrange + var dict = new RouteValueDictionary(); - // Act - dict.Clear(); + // Act + dict.Clear(); - // Assert - Assert.Empty(dict); - } + // Assert + Assert.Empty(dict); + } - [Fact] - public void Clear_PropertyStorage_AlreadyEmpty() - { - // Arrange - var dict = new RouteValueDictionary(new { }); + [Fact] + public void Clear_PropertyStorage_AlreadyEmpty() + { + // Arrange + var dict = new RouteValueDictionary(new { }); - // Act - dict.Clear(); + // Act + dict.Clear(); - // Assert - Assert.Empty(dict); - Assert.NotNull(dict._propertyStorage); - AssertEmptyArrayStorage(dict); - } + // Assert + Assert.Empty(dict); + Assert.NotNull(dict._propertyStorage); + AssertEmptyArrayStorage(dict); + } - [Fact] - public void Clear_PropertyStorage() - { - // Arrange - var dict = new RouteValueDictionary(new { key = "value" }); + [Fact] + public void Clear_PropertyStorage() + { + // Arrange + var dict = new RouteValueDictionary(new { key = "value" }); - // Act - dict.Clear(); + // Act + dict.Clear(); - // Assert - Assert.Empty(dict); - Assert.Null(dict._propertyStorage); - Assert.Empty(dict._arrayStorage); - } + // Assert + Assert.Empty(dict); + Assert.Null(dict._propertyStorage); + Assert.Empty(dict._arrayStorage); + } - [Fact] - public void Clear_ListStorage() - { - // Arrange - var dict = new RouteValueDictionary() + [Fact] + public void Clear_ListStorage() + { + // Arrange + var dict = new RouteValueDictionary() { { "key", "value" }, }; - // Act - dict.Clear(); + // Act + dict.Clear(); - // Assert - Assert.Empty(dict); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - Assert.Null(dict._propertyStorage); - } + // Assert + Assert.Empty(dict); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + Assert.Null(dict._propertyStorage); + } - [Fact] - public void Contains_ListStorage_KeyValuePair_True() - { - // Arrange - var dict = new RouteValueDictionary() + [Fact] + public void Contains_ListStorage_KeyValuePair_True() + { + // Arrange + var dict = new RouteValueDictionary() { { "key", "value" }, }; - var input = new KeyValuePair<string, object?>("key", "value"); + var input = new KeyValuePair<string, object?>("key", "value"); - // Act - var result = ((ICollection<KeyValuePair<string, object?>>)dict).Contains(input); + // Act + var result = ((ICollection<KeyValuePair<string, object?>>)dict).Contains(input); - // Assert - Assert.True(result); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.True(result); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void Contains_ListStory_KeyValuePair_True_CaseInsensitive() - { - // Arrange - var dict = new RouteValueDictionary() + [Fact] + public void Contains_ListStory_KeyValuePair_True_CaseInsensitive() + { + // Arrange + var dict = new RouteValueDictionary() { { "key", "value" }, }; - var input = new KeyValuePair<string, object?>("KEY", "value"); + var input = new KeyValuePair<string, object?>("KEY", "value"); - // Act - var result = ((ICollection<KeyValuePair<string, object?>>)dict).Contains(input); + // Act + var result = ((ICollection<KeyValuePair<string, object?>>)dict).Contains(input); - // Assert - Assert.True(result); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.True(result); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void Contains_ListStorage_KeyValuePair_False() - { - // Arrange - var dict = new RouteValueDictionary() + [Fact] + public void Contains_ListStorage_KeyValuePair_False() + { + // Arrange + var dict = new RouteValueDictionary() { { "key", "value" }, }; - var input = new KeyValuePair<string, object?>("other", "value"); + var input = new KeyValuePair<string, object?>("other", "value"); - // Act - var result = ((ICollection<KeyValuePair<string, object?>>)dict).Contains(input); + // Act + var result = ((ICollection<KeyValuePair<string, object?>>)dict).Contains(input); - // Assert - Assert.False(result); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.False(result); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - // Value comparisons use the default equality comparer. - [Fact] - public void Contains_ListStorage_KeyValuePair_False_ValueComparisonIsDefault() - { - // Arrange - var dict = new RouteValueDictionary() + // Value comparisons use the default equality comparer. + [Fact] + public void Contains_ListStorage_KeyValuePair_False_ValueComparisonIsDefault() + { + // Arrange + var dict = new RouteValueDictionary() { { "key", "value" }, }; - var input = new KeyValuePair<string, object?>("key", "valUE"); + var input = new KeyValuePair<string, object?>("key", "valUE"); - // Act - var result = ((ICollection<KeyValuePair<string, object?>>)dict).Contains(input); + // Act + var result = ((ICollection<KeyValuePair<string, object?>>)dict).Contains(input); - // Assert - Assert.False(result); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.False(result); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void Contains_PropertyStorage_KeyValuePair_True() - { - // Arrange - var dict = new RouteValueDictionary(new { key = "value" }); + [Fact] + public void Contains_PropertyStorage_KeyValuePair_True() + { + // Arrange + var dict = new RouteValueDictionary(new { key = "value" }); - var input = new KeyValuePair<string, object?>("key", "value"); + var input = new KeyValuePair<string, object?>("key", "value"); - // Act - var result = ((ICollection<KeyValuePair<string, object?>>)dict).Contains(input); + // Act + var result = ((ICollection<KeyValuePair<string, object?>>)dict).Contains(input); - // Assert - Assert.True(result); - Assert.NotNull(dict._propertyStorage); - AssertEmptyArrayStorage(dict); - Assert.Collection( - dict, - kvp => Assert.Equal(new KeyValuePair<string, object?>("key", "value"), kvp)); - } + // Assert + Assert.True(result); + Assert.NotNull(dict._propertyStorage); + AssertEmptyArrayStorage(dict); + Assert.Collection( + dict, + kvp => Assert.Equal(new KeyValuePair<string, object?>("key", "value"), kvp)); + } - [Fact] - public void Contains_PropertyStory_KeyValuePair_True_CaseInsensitive() - { - // Arrange - var dict = new RouteValueDictionary(new { key = "value" }); + [Fact] + public void Contains_PropertyStory_KeyValuePair_True_CaseInsensitive() + { + // Arrange + var dict = new RouteValueDictionary(new { key = "value" }); - var input = new KeyValuePair<string, object?>("KEY", "value"); + var input = new KeyValuePair<string, object?>("KEY", "value"); - // Act - var result = ((ICollection<KeyValuePair<string, object?>>)dict).Contains(input); + // Act + var result = ((ICollection<KeyValuePair<string, object?>>)dict).Contains(input); - // Assert - Assert.True(result); - Assert.NotNull(dict._propertyStorage); - AssertEmptyArrayStorage(dict); - Assert.Collection( - dict, - kvp => Assert.Equal(new KeyValuePair<string, object?>("key", "value"), kvp)); - } + // Assert + Assert.True(result); + Assert.NotNull(dict._propertyStorage); + AssertEmptyArrayStorage(dict); + Assert.Collection( + dict, + kvp => Assert.Equal(new KeyValuePair<string, object?>("key", "value"), kvp)); + } - [Fact] - public void Contains_PropertyStorage_KeyValuePair_False() - { - // Arrange - var dict = new RouteValueDictionary(new { key = "value" }); + [Fact] + public void Contains_PropertyStorage_KeyValuePair_False() + { + // Arrange + var dict = new RouteValueDictionary(new { key = "value" }); - var input = new KeyValuePair<string, object?>("other", "value"); + var input = new KeyValuePair<string, object?>("other", "value"); - // Act - var result = ((ICollection<KeyValuePair<string, object?>>)dict).Contains(input); + // Act + var result = ((ICollection<KeyValuePair<string, object?>>)dict).Contains(input); - // Assert - Assert.False(result); - Assert.NotNull(dict._propertyStorage); - AssertEmptyArrayStorage(dict); - Assert.Collection( - dict, - kvp => Assert.Equal(new KeyValuePair<string, object?>("key", "value"), kvp)); - } + // Assert + Assert.False(result); + Assert.NotNull(dict._propertyStorage); + AssertEmptyArrayStorage(dict); + Assert.Collection( + dict, + kvp => Assert.Equal(new KeyValuePair<string, object?>("key", "value"), kvp)); + } - // Value comparisons use the default equality comparer. - [Fact] - public void Contains_PropertyStorage_KeyValuePair_False_ValueComparisonIsDefault() - { - // Arrange - var dict = new RouteValueDictionary(new { key = "value" }); + // Value comparisons use the default equality comparer. + [Fact] + public void Contains_PropertyStorage_KeyValuePair_False_ValueComparisonIsDefault() + { + // Arrange + var dict = new RouteValueDictionary(new { key = "value" }); - var input = new KeyValuePair<string, object?>("key", "valUE"); + var input = new KeyValuePair<string, object?>("key", "valUE"); - // Act - var result = ((ICollection<KeyValuePair<string, object?>>)dict).Contains(input); + // Act + var result = ((ICollection<KeyValuePair<string, object?>>)dict).Contains(input); - // Assert - Assert.False(result); - Assert.NotNull(dict._propertyStorage); - AssertEmptyArrayStorage(dict); - Assert.Collection( - dict, - kvp => Assert.Equal(new KeyValuePair<string, object?>("key", "value"), kvp)); - } + // Assert + Assert.False(result); + Assert.NotNull(dict._propertyStorage); + AssertEmptyArrayStorage(dict); + Assert.Collection( + dict, + kvp => Assert.Equal(new KeyValuePair<string, object?>("key", "value"), kvp)); + } - [Fact] - public void ContainsKey_EmptyStorage() - { - // Arrange - var dict = new RouteValueDictionary(); + [Fact] + public void ContainsKey_EmptyStorage() + { + // Arrange + var dict = new RouteValueDictionary(); - // Act - var result = dict.ContainsKey("key"); + // Act + var result = dict.ContainsKey("key"); - // Assert - Assert.False(result); - } + // Assert + Assert.False(result); + } - [Fact] - public void ContainsKey_EmptyStringIsAllowed() - { - // Arrange - var dict = new RouteValueDictionary(); + [Fact] + public void ContainsKey_EmptyStringIsAllowed() + { + // Arrange + var dict = new RouteValueDictionary(); - // Act - var result = dict.ContainsKey(""); + // Act + var result = dict.ContainsKey(""); - // Assert - Assert.False(result); - } + // Assert + Assert.False(result); + } - [Fact] - public void ContainsKey_PropertyStorage_False() - { - // Arrange - var dict = new RouteValueDictionary(new { key = "value" }); + [Fact] + public void ContainsKey_PropertyStorage_False() + { + // Arrange + var dict = new RouteValueDictionary(new { key = "value" }); - // Act - var result = dict.ContainsKey("other"); + // Act + var result = dict.ContainsKey("other"); - // Assert - Assert.False(result); - Assert.NotNull(dict._propertyStorage); - AssertEmptyArrayStorage(dict); - } + // Assert + Assert.False(result); + Assert.NotNull(dict._propertyStorage); + AssertEmptyArrayStorage(dict); + } - [Fact] - public void ContainsKey_PropertyStorage_True() - { - // Arrange - var dict = new RouteValueDictionary(new { key = "value" }); + [Fact] + public void ContainsKey_PropertyStorage_True() + { + // Arrange + var dict = new RouteValueDictionary(new { key = "value" }); - // Act - var result = dict.ContainsKey("key"); + // Act + var result = dict.ContainsKey("key"); - // Assert - Assert.True(result); - Assert.NotNull(dict._propertyStorage); - AssertEmptyArrayStorage(dict); - } + // Assert + Assert.True(result); + Assert.NotNull(dict._propertyStorage); + AssertEmptyArrayStorage(dict); + } - [Fact] - public void ContainsKey_PropertyStorage_True_CaseInsensitive() - { - // Arrange - var dict = new RouteValueDictionary(new { key = "value" }); + [Fact] + public void ContainsKey_PropertyStorage_True_CaseInsensitive() + { + // Arrange + var dict = new RouteValueDictionary(new { key = "value" }); - // Act - var result = dict.ContainsKey("kEy"); + // Act + var result = dict.ContainsKey("kEy"); - // Assert - Assert.True(result); - Assert.NotNull(dict._propertyStorage); - AssertEmptyArrayStorage(dict); - } + // Assert + Assert.True(result); + Assert.NotNull(dict._propertyStorage); + AssertEmptyArrayStorage(dict); + } - [Fact] - public void ContainsKey_ListStorage_False() - { - // Arrange - var dict = new RouteValueDictionary() + [Fact] + public void ContainsKey_ListStorage_False() + { + // Arrange + var dict = new RouteValueDictionary() { { "key", "value" }, }; - // Act - var result = dict.ContainsKey("other"); + // Act + var result = dict.ContainsKey("other"); - // Assert - Assert.False(result); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.False(result); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void ContainsKey_ListStorage_True() - { - // Arrange - var dict = new RouteValueDictionary() + [Fact] + public void ContainsKey_ListStorage_True() + { + // Arrange + var dict = new RouteValueDictionary() { { "key", "value" }, }; - // Act - var result = dict.ContainsKey("key"); + // Act + var result = dict.ContainsKey("key"); - // Assert - Assert.True(result); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.True(result); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void ContainsKey_ListStorage_True_CaseInsensitive() - { - // Arrange - var dict = new RouteValueDictionary() + [Fact] + public void ContainsKey_ListStorage_True_CaseInsensitive() + { + // Arrange + var dict = new RouteValueDictionary() { { "key", "value" }, }; - // Act - var result = dict.ContainsKey("kEy"); + // Act + var result = dict.ContainsKey("kEy"); - // Assert - Assert.True(result); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.True(result); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void CopyTo() - { - // Arrange - var dict = new RouteValueDictionary() + [Fact] + public void CopyTo() + { + // Arrange + var dict = new RouteValueDictionary() { { "key", "value" }, }; - var array = new KeyValuePair<string, object?>[2]; + var array = new KeyValuePair<string, object?>[2]; - // Act - ((ICollection<KeyValuePair<string, object?>>)dict).CopyTo(array, 1); + // Act + ((ICollection<KeyValuePair<string, object?>>)dict).CopyTo(array, 1); - // Assert - Assert.Equal( - new KeyValuePair<string, object?>[] - { + // Assert + Assert.Equal( + new KeyValuePair<string, object?>[] + { default(KeyValuePair<string, object?>), new KeyValuePair<string, object?>("key", "value") - }, - array); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + }, + array); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void Remove_KeyValuePair_True() - { - // Arrange - var dict = new RouteValueDictionary() + [Fact] + public void Remove_KeyValuePair_True() + { + // Arrange + var dict = new RouteValueDictionary() { { "key", "value" }, }; - var input = new KeyValuePair<string, object?>("key", "value"); + var input = new KeyValuePair<string, object?>("key", "value"); - // Act - var result = ((ICollection<KeyValuePair<string, object?>>)dict).Remove(input); + // Act + var result = ((ICollection<KeyValuePair<string, object?>>)dict).Remove(input); - // Assert - Assert.True(result); - Assert.Empty(dict); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.True(result); + Assert.Empty(dict); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void Remove_KeyValuePair_True_CaseInsensitive() - { - // Arrange - var dict = new RouteValueDictionary() + [Fact] + public void Remove_KeyValuePair_True_CaseInsensitive() + { + // Arrange + var dict = new RouteValueDictionary() { { "key", "value" }, }; - var input = new KeyValuePair<string, object?>("KEY", "value"); + var input = new KeyValuePair<string, object?>("KEY", "value"); - // Act - var result = ((ICollection<KeyValuePair<string, object?>>)dict).Remove(input); + // Act + var result = ((ICollection<KeyValuePair<string, object?>>)dict).Remove(input); - // Assert - Assert.True(result); - Assert.Empty(dict); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.True(result); + Assert.Empty(dict); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void Remove_KeyValuePair_False() - { - // Arrange - var dict = new RouteValueDictionary() + [Fact] + public void Remove_KeyValuePair_False() + { + // Arrange + var dict = new RouteValueDictionary() { { "key", "value" }, }; - var input = new KeyValuePair<string, object?>("other", "value"); + var input = new KeyValuePair<string, object?>("other", "value"); - // Act - var result = ((ICollection<KeyValuePair<string, object?>>)dict).Remove(input); + // Act + var result = ((ICollection<KeyValuePair<string, object?>>)dict).Remove(input); - // Assert - Assert.False(result); - Assert.Collection(dict, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.False(result); + Assert.Collection(dict, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - // Value comparisons use the default equality comparer. - [Fact] - public void Remove_KeyValuePair_False_ValueComparisonIsDefault() - { - // Arrange - var dict = new RouteValueDictionary() + // Value comparisons use the default equality comparer. + [Fact] + public void Remove_KeyValuePair_False_ValueComparisonIsDefault() + { + // Arrange + var dict = new RouteValueDictionary() { { "key", "value" }, }; - var input = new KeyValuePair<string, object?>("key", "valUE"); + var input = new KeyValuePair<string, object?>("key", "valUE"); - // Act - var result = ((ICollection<KeyValuePair<string, object?>>)dict).Remove(input); + // Act + var result = ((ICollection<KeyValuePair<string, object?>>)dict).Remove(input); - // Assert - Assert.False(result); - Assert.Collection(dict, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.False(result); + Assert.Collection(dict, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void Remove_EmptyStorage() - { - // Arrange - var dict = new RouteValueDictionary(); + [Fact] + public void Remove_EmptyStorage() + { + // Arrange + var dict = new RouteValueDictionary(); - // Act - var result = dict.Remove("key"); + // Act + var result = dict.Remove("key"); - // Assert - Assert.False(result); - } + // Assert + Assert.False(result); + } - [Fact] - public void Remove_EmptyStringIsAllowed() - { - // Arrange - var dict = new RouteValueDictionary(); + [Fact] + public void Remove_EmptyStringIsAllowed() + { + // Arrange + var dict = new RouteValueDictionary(); - // Act - var result = dict.Remove(""); + // Act + var result = dict.Remove(""); - // Assert - Assert.False(result); - } + // Assert + Assert.False(result); + } - [Fact] - public void Remove_PropertyStorage_Empty() - { - // Arrange - var dict = new RouteValueDictionary(new { }); + [Fact] + public void Remove_PropertyStorage_Empty() + { + // Arrange + var dict = new RouteValueDictionary(new { }); - // Act - var result = dict.Remove("other"); + // Act + var result = dict.Remove("other"); - // Assert - Assert.False(result); - Assert.Empty(dict); - Assert.NotNull(dict._propertyStorage); - } + // Assert + Assert.False(result); + Assert.Empty(dict); + Assert.NotNull(dict._propertyStorage); + } - [Fact] - public void Remove_PropertyStorage_False() - { - // Arrange - var dict = new RouteValueDictionary(new { key = "value" }); + [Fact] + public void Remove_PropertyStorage_False() + { + // Arrange + var dict = new RouteValueDictionary(new { key = "value" }); - // Act - var result = dict.Remove("other"); + // Act + var result = dict.Remove("other"); - // Assert - Assert.False(result); - Assert.Collection(dict, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.False(result); + Assert.Collection(dict, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void Remove_PropertyStorage_True() - { - // Arrange - var dict = new RouteValueDictionary(new { key = "value" }); + [Fact] + public void Remove_PropertyStorage_True() + { + // Arrange + var dict = new RouteValueDictionary(new { key = "value" }); - // Act - var result = dict.Remove("key"); + // Act + var result = dict.Remove("key"); - // Assert - Assert.True(result); - Assert.Empty(dict); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.True(result); + Assert.Empty(dict); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void Remove_PropertyStorage_True_CaseInsensitive() - { - // Arrange - var dict = new RouteValueDictionary(new { key = "value" }); + [Fact] + public void Remove_PropertyStorage_True_CaseInsensitive() + { + // Arrange + var dict = new RouteValueDictionary(new { key = "value" }); - // Act - var result = dict.Remove("kEy"); + // Act + var result = dict.Remove("kEy"); - // Assert - Assert.True(result); - Assert.Empty(dict); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.True(result); + Assert.Empty(dict); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void Remove_ListStorage_False() - { - // Arrange - var dict = new RouteValueDictionary() + [Fact] + public void Remove_ListStorage_False() + { + // Arrange + var dict = new RouteValueDictionary() { { "key", "value" }, }; - // Act - var result = dict.Remove("other"); + // Act + var result = dict.Remove("other"); - // Assert - Assert.False(result); - Assert.Collection(dict, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.False(result); + Assert.Collection(dict, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void Remove_ListStorage_True() - { - // Arrange - var dict = new RouteValueDictionary() + [Fact] + public void Remove_ListStorage_True() + { + // Arrange + var dict = new RouteValueDictionary() { { "key", "value" }, }; - // Act - var result = dict.Remove("key"); + // Act + var result = dict.Remove("key"); - // Assert - Assert.True(result); - Assert.Empty(dict); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.True(result); + Assert.Empty(dict); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void Remove_ListStorage_True_CaseInsensitive() - { - // Arrange - var dict = new RouteValueDictionary() + [Fact] + public void Remove_ListStorage_True_CaseInsensitive() + { + // Arrange + var dict = new RouteValueDictionary() { { "key", "value" }, }; - // Act - var result = dict.Remove("kEy"); + // Act + var result = dict.Remove("kEy"); - // Assert - Assert.True(result); - Assert.Empty(dict); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.True(result); + Assert.Empty(dict); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void Remove_KeyAndOutValue_EmptyStorage() - { - // Arrange - var dict = new RouteValueDictionary(); + [Fact] + public void Remove_KeyAndOutValue_EmptyStorage() + { + // Arrange + var dict = new RouteValueDictionary(); - // Act - var result = dict.Remove("key", out var removedValue); + // Act + var result = dict.Remove("key", out var removedValue); - // Assert - Assert.False(result); - Assert.Null(removedValue); - } + // Assert + Assert.False(result); + Assert.Null(removedValue); + } - [Fact] - public void Remove_KeyAndOutValue_EmptyStringIsAllowed() - { - // Arrange - var dict = new RouteValueDictionary(); + [Fact] + public void Remove_KeyAndOutValue_EmptyStringIsAllowed() + { + // Arrange + var dict = new RouteValueDictionary(); - // Act - var result = dict.Remove("", out var removedValue); + // Act + var result = dict.Remove("", out var removedValue); - // Assert - Assert.False(result); - Assert.Null(removedValue); - } + // Assert + Assert.False(result); + Assert.Null(removedValue); + } - [Fact] - public void Remove_KeyAndOutValue_PropertyStorage_Empty() - { - // Arrange - var dict = new RouteValueDictionary(new { }); + [Fact] + public void Remove_KeyAndOutValue_PropertyStorage_Empty() + { + // Arrange + var dict = new RouteValueDictionary(new { }); - // Act - var result = dict.Remove("other", out var removedValue); + // Act + var result = dict.Remove("other", out var removedValue); - // Assert - Assert.False(result); - Assert.Null(removedValue); - Assert.Empty(dict); - Assert.NotNull(dict._propertyStorage); - } + // Assert + Assert.False(result); + Assert.Null(removedValue); + Assert.Empty(dict); + Assert.NotNull(dict._propertyStorage); + } - [Fact] - public void Remove_KeyAndOutValue_PropertyStorage_False() - { - // Arrange - var dict = new RouteValueDictionary(new { key = "value" }); + [Fact] + public void Remove_KeyAndOutValue_PropertyStorage_False() + { + // Arrange + var dict = new RouteValueDictionary(new { key = "value" }); - // Act - var result = dict.Remove("other", out var removedValue); + // Act + var result = dict.Remove("other", out var removedValue); - // Assert - Assert.False(result); - Assert.Null(removedValue); - Assert.Collection(dict, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.False(result); + Assert.Null(removedValue); + Assert.Collection(dict, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void Remove_KeyAndOutValue_PropertyStorage_True() - { - // Arrange - object value = "value"; - var dict = new RouteValueDictionary(new { key = value }); - - // Act - var result = dict.Remove("key", out var removedValue); - - // Assert - Assert.True(result); - Assert.Same(value, removedValue); - Assert.Empty(dict); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + [Fact] + public void Remove_KeyAndOutValue_PropertyStorage_True() + { + // Arrange + object value = "value"; + var dict = new RouteValueDictionary(new { key = value }); + + // Act + var result = dict.Remove("key", out var removedValue); + + // Assert + Assert.True(result); + Assert.Same(value, removedValue); + Assert.Empty(dict); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void Remove_KeyAndOutValue_PropertyStorage_True_CaseInsensitive() - { - // Arrange - object value = "value"; - var dict = new RouteValueDictionary(new { key = value }); - - // Act - var result = dict.Remove("kEy", out var removedValue); - - // Assert - Assert.True(result); - Assert.Same(value, removedValue); - Assert.Empty(dict); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + [Fact] + public void Remove_KeyAndOutValue_PropertyStorage_True_CaseInsensitive() + { + // Arrange + object value = "value"; + var dict = new RouteValueDictionary(new { key = value }); + + // Act + var result = dict.Remove("kEy", out var removedValue); + + // Assert + Assert.True(result); + Assert.Same(value, removedValue); + Assert.Empty(dict); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void Remove_KeyAndOutValue_ListStorage_False() - { - // Arrange - var dict = new RouteValueDictionary() + [Fact] + public void Remove_KeyAndOutValue_ListStorage_False() + { + // Arrange + var dict = new RouteValueDictionary() { { "key", "value" }, }; - // Act - var result = dict.Remove("other", out var removedValue); + // Act + var result = dict.Remove("other", out var removedValue); - // Assert - Assert.False(result); - Assert.Null(removedValue); - Assert.Collection(dict, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.False(result); + Assert.Null(removedValue); + Assert.Collection(dict, kvp => { Assert.Equal("key", kvp.Key); Assert.Equal("value", kvp.Value); }); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void Remove_KeyAndOutValue_ListStorage_True() - { - // Arrange - object value = "value"; - var dict = new RouteValueDictionary() + [Fact] + public void Remove_KeyAndOutValue_ListStorage_True() + { + // Arrange + object value = "value"; + var dict = new RouteValueDictionary() { { "key", value } }; - // Act - var result = dict.Remove("key", out var removedValue); + // Act + var result = dict.Remove("key", out var removedValue); - // Assert - Assert.True(result); - Assert.Same(value, removedValue); - Assert.Empty(dict); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.True(result); + Assert.Same(value, removedValue); + Assert.Empty(dict); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void Remove_KeyAndOutValue_ListStorage_True_CaseInsensitive() - { - // Arrange - object value = "value"; - var dict = new RouteValueDictionary() + [Fact] + public void Remove_KeyAndOutValue_ListStorage_True_CaseInsensitive() + { + // Arrange + object value = "value"; + var dict = new RouteValueDictionary() { { "key", value } }; - // Act - var result = dict.Remove("kEy", out var removedValue); + // Act + var result = dict.Remove("kEy", out var removedValue); - // Assert - Assert.True(result); - Assert.Same(value, removedValue); - Assert.Empty(dict); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.True(result); + Assert.Same(value, removedValue); + Assert.Empty(dict); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void Remove_KeyAndOutValue_ListStorage_KeyExists_First() - { - // Arrange - object value = "value"; - var dict = new RouteValueDictionary() + [Fact] + public void Remove_KeyAndOutValue_ListStorage_KeyExists_First() + { + // Arrange + object value = "value"; + var dict = new RouteValueDictionary() { { "key", value }, { "other", 5 }, { "dotnet", "rocks" } }; - // Act - var result = dict.Remove("key", out var removedValue); - - // Assert - Assert.True(result); - Assert.Same(value, removedValue); - Assert.Equal(2, dict.Count); - Assert.False(dict.ContainsKey("key")); - Assert.True(dict.ContainsKey("other")); - Assert.True(dict.ContainsKey("dotnet")); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Act + var result = dict.Remove("key", out var removedValue); + + // Assert + Assert.True(result); + Assert.Same(value, removedValue); + Assert.Equal(2, dict.Count); + Assert.False(dict.ContainsKey("key")); + Assert.True(dict.ContainsKey("other")); + Assert.True(dict.ContainsKey("dotnet")); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void Remove_KeyAndOutValue_ListStorage_KeyExists_Middle() - { - // Arrange - object value = "value"; - var dict = new RouteValueDictionary() + [Fact] + public void Remove_KeyAndOutValue_ListStorage_KeyExists_Middle() + { + // Arrange + object value = "value"; + var dict = new RouteValueDictionary() { { "other", 5 }, { "key", value }, { "dotnet", "rocks" } }; - // Act - var result = dict.Remove("key", out var removedValue); - - // Assert - Assert.True(result); - Assert.Same(value, removedValue); - Assert.Equal(2, dict.Count); - Assert.False(dict.ContainsKey("key")); - Assert.True(dict.ContainsKey("other")); - Assert.True(dict.ContainsKey("dotnet")); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Act + var result = dict.Remove("key", out var removedValue); + + // Assert + Assert.True(result); + Assert.Same(value, removedValue); + Assert.Equal(2, dict.Count); + Assert.False(dict.ContainsKey("key")); + Assert.True(dict.ContainsKey("other")); + Assert.True(dict.ContainsKey("dotnet")); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void Remove_KeyAndOutValue_ListStorage_KeyExists_Last() - { - // Arrange - object value = "value"; - var dict = new RouteValueDictionary() + [Fact] + public void Remove_KeyAndOutValue_ListStorage_KeyExists_Last() + { + // Arrange + object value = "value"; + var dict = new RouteValueDictionary() { { "other", 5 }, { "dotnet", "rocks" }, { "key", value } }; - // Act - var result = dict.Remove("key", out var removedValue); - - // Assert - Assert.True(result); - Assert.Same(value, removedValue); - Assert.Equal(2, dict.Count); - Assert.False(dict.ContainsKey("key")); - Assert.True(dict.ContainsKey("other")); - Assert.True(dict.ContainsKey("dotnet")); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Act + var result = dict.Remove("key", out var removedValue); + + // Assert + Assert.True(result); + Assert.Same(value, removedValue); + Assert.Equal(2, dict.Count); + Assert.False(dict.ContainsKey("key")); + Assert.True(dict.ContainsKey("other")); + Assert.True(dict.ContainsKey("dotnet")); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void TryAdd_EmptyStringIsAllowed() - { - // Arrange - var dict = new RouteValueDictionary(); + [Fact] + public void TryAdd_EmptyStringIsAllowed() + { + // Arrange + var dict = new RouteValueDictionary(); - // Act - var result = dict.TryAdd("", "foo"); + // Act + var result = dict.TryAdd("", "foo"); - // Assert - Assert.True(result); - } + // Assert + Assert.True(result); + } - [Fact] - public void TryAdd_PropertyStorage_KeyDoesNotExist_ConvertsPropertyStorageToArrayStorage() - { - // Arrange - var dict = new RouteValueDictionary(new { key = "value", }); - - // Act - var result = dict.TryAdd("otherKey", "value"); - - // Assert - Assert.True(result); - Assert.Null(dict._propertyStorage); - Assert.Collection( - dict._arrayStorage, - kvp => Assert.Equal(new KeyValuePair<string, object?>("key", "value"), kvp), - kvp => Assert.Equal(new KeyValuePair<string, object?>("otherKey", "value"), kvp), - kvp => Assert.Equal(default, kvp), - kvp => Assert.Equal(default, kvp)); - } + [Fact] + public void TryAdd_PropertyStorage_KeyDoesNotExist_ConvertsPropertyStorageToArrayStorage() + { + // Arrange + var dict = new RouteValueDictionary(new { key = "value", }); + + // Act + var result = dict.TryAdd("otherKey", "value"); + + // Assert + Assert.True(result); + Assert.Null(dict._propertyStorage); + Assert.Collection( + dict._arrayStorage, + kvp => Assert.Equal(new KeyValuePair<string, object?>("key", "value"), kvp), + kvp => Assert.Equal(new KeyValuePair<string, object?>("otherKey", "value"), kvp), + kvp => Assert.Equal(default, kvp), + kvp => Assert.Equal(default, kvp)); + } - [Fact] - public void TryAdd_PropertyStory_KeyExist_DoesNotConvertPropertyStorageToArrayStorage() - { - // Arrange - var dict = new RouteValueDictionary(new { key = "value", }); - - // Act - var result = dict.TryAdd("key", "value"); - - // Assert - Assert.False(result); - AssertEmptyArrayStorage(dict); - Assert.NotNull(dict._propertyStorage); - Assert.Collection( - dict, - kvp => Assert.Equal(new KeyValuePair<string, object?>("key", "value"), kvp)); - } + [Fact] + public void TryAdd_PropertyStory_KeyExist_DoesNotConvertPropertyStorageToArrayStorage() + { + // Arrange + var dict = new RouteValueDictionary(new { key = "value", }); + + // Act + var result = dict.TryAdd("key", "value"); + + // Assert + Assert.False(result); + AssertEmptyArrayStorage(dict); + Assert.NotNull(dict._propertyStorage); + Assert.Collection( + dict, + kvp => Assert.Equal(new KeyValuePair<string, object?>("key", "value"), kvp)); + } - [Fact] - public void TryAdd_EmptyStorage_CanAdd() - { - // Arrange - var dict = new RouteValueDictionary(); - - // Act - var result = dict.TryAdd("key", "value"); - - // Assert - Assert.True(result); - Assert.Collection( - dict._arrayStorage, - kvp => Assert.Equal(new KeyValuePair<string, object?>("key", "value"), kvp), - kvp => Assert.Equal(default, kvp), - kvp => Assert.Equal(default, kvp), - kvp => Assert.Equal(default, kvp)); - } + [Fact] + public void TryAdd_EmptyStorage_CanAdd() + { + // Arrange + var dict = new RouteValueDictionary(); + + // Act + var result = dict.TryAdd("key", "value"); + + // Assert + Assert.True(result); + Assert.Collection( + dict._arrayStorage, + kvp => Assert.Equal(new KeyValuePair<string, object?>("key", "value"), kvp), + kvp => Assert.Equal(default, kvp), + kvp => Assert.Equal(default, kvp), + kvp => Assert.Equal(default, kvp)); + } - [Fact] - public void TryAdd_ArrayStorage_CanAdd() - { - // Arrange - var dict = new RouteValueDictionary() + [Fact] + public void TryAdd_ArrayStorage_CanAdd() + { + // Arrange + var dict = new RouteValueDictionary() { { "key0", "value0" }, }; - // Act - var result = dict.TryAdd("key1", "value1"); - - // Assert - Assert.True(result); - Assert.Collection( - dict._arrayStorage, - kvp => Assert.Equal(new KeyValuePair<string, object?>("key0", "value0"), kvp), - kvp => Assert.Equal(new KeyValuePair<string, object?>("key1", "value1"), kvp), - kvp => Assert.Equal(default, kvp), - kvp => Assert.Equal(default, kvp)); - } + // Act + var result = dict.TryAdd("key1", "value1"); + + // Assert + Assert.True(result); + Assert.Collection( + dict._arrayStorage, + kvp => Assert.Equal(new KeyValuePair<string, object?>("key0", "value0"), kvp), + kvp => Assert.Equal(new KeyValuePair<string, object?>("key1", "value1"), kvp), + kvp => Assert.Equal(default, kvp), + kvp => Assert.Equal(default, kvp)); + } - [Fact] - public void TryAdd_ArrayStorage_CanAddWithResize() - { - // Arrange - var dict = new RouteValueDictionary() + [Fact] + public void TryAdd_ArrayStorage_CanAddWithResize() + { + // Arrange + var dict = new RouteValueDictionary() { { "key0", "value0" }, { "key1", "value1" }, @@ -1821,261 +1821,261 @@ namespace Microsoft.AspNetCore.Routing.Tests { "key3", "value3" }, }; - // Act - var result = dict.TryAdd("key4", "value4"); - - // Assert - Assert.True(result); - Assert.Collection( - dict._arrayStorage, - kvp => Assert.Equal(new KeyValuePair<string, object?>("key0", "value0"), kvp), - kvp => Assert.Equal(new KeyValuePair<string, object?>("key1", "value1"), kvp), - kvp => Assert.Equal(new KeyValuePair<string, object?>("key2", "value2"), kvp), - kvp => Assert.Equal(new KeyValuePair<string, object?>("key3", "value3"), kvp), - kvp => Assert.Equal(new KeyValuePair<string, object?>("key4", "value4"), kvp), - kvp => Assert.Equal(default, kvp), - kvp => Assert.Equal(default, kvp), - kvp => Assert.Equal(default, kvp)); - } + // Act + var result = dict.TryAdd("key4", "value4"); + + // Assert + Assert.True(result); + Assert.Collection( + dict._arrayStorage, + kvp => Assert.Equal(new KeyValuePair<string, object?>("key0", "value0"), kvp), + kvp => Assert.Equal(new KeyValuePair<string, object?>("key1", "value1"), kvp), + kvp => Assert.Equal(new KeyValuePair<string, object?>("key2", "value2"), kvp), + kvp => Assert.Equal(new KeyValuePair<string, object?>("key3", "value3"), kvp), + kvp => Assert.Equal(new KeyValuePair<string, object?>("key4", "value4"), kvp), + kvp => Assert.Equal(default, kvp), + kvp => Assert.Equal(default, kvp), + kvp => Assert.Equal(default, kvp)); + } - [Fact] - public void TryAdd_ArrayStorage_DoesNotAddWhenKeyIsPresent() - { - // Arrange - var dict = new RouteValueDictionary() + [Fact] + public void TryAdd_ArrayStorage_DoesNotAddWhenKeyIsPresent() + { + // Arrange + var dict = new RouteValueDictionary() { { "key0", "value0" }, }; - // Act - var result = dict.TryAdd("key0", "value1"); - - // Assert - Assert.False(result); - Assert.Collection( - dict._arrayStorage, - kvp => Assert.Equal(new KeyValuePair<string, object?>("key0", "value0"), kvp), - kvp => Assert.Equal(default, kvp), - kvp => Assert.Equal(default, kvp), - kvp => Assert.Equal(default, kvp)); - } + // Act + var result = dict.TryAdd("key0", "value1"); + + // Assert + Assert.False(result); + Assert.Collection( + dict._arrayStorage, + kvp => Assert.Equal(new KeyValuePair<string, object?>("key0", "value0"), kvp), + kvp => Assert.Equal(default, kvp), + kvp => Assert.Equal(default, kvp), + kvp => Assert.Equal(default, kvp)); + } - [Fact] - public void TryGetValue_EmptyStorage() - { - // Arrange - var dict = new RouteValueDictionary(); + [Fact] + public void TryGetValue_EmptyStorage() + { + // Arrange + var dict = new RouteValueDictionary(); - // Act - var result = dict.TryGetValue("key", out var value); + // Act + var result = dict.TryGetValue("key", out var value); - // Assert - Assert.False(result); - Assert.Null(value); - } + // Assert + Assert.False(result); + Assert.Null(value); + } - [Fact] - public void TryGetValue_EmptyStringIsAllowed() - { - // Arrange - var dict = new RouteValueDictionary(); + [Fact] + public void TryGetValue_EmptyStringIsAllowed() + { + // Arrange + var dict = new RouteValueDictionary(); - // Act - var result = dict.TryGetValue("", out var value); + // Act + var result = dict.TryGetValue("", out var value); - // Assert - Assert.False(result); - Assert.Null(value); - } + // Assert + Assert.False(result); + Assert.Null(value); + } - [Fact] - public void TryGetValue_PropertyStorage_False() - { - // Arrange - var dict = new RouteValueDictionary(new { key = "value" }); + [Fact] + public void TryGetValue_PropertyStorage_False() + { + // Arrange + var dict = new RouteValueDictionary(new { key = "value" }); - // Act - var result = dict.TryGetValue("other", out var value); + // Act + var result = dict.TryGetValue("other", out var value); - // Assert - Assert.False(result); - Assert.Null(value); - Assert.NotNull(dict._propertyStorage); - } + // Assert + Assert.False(result); + Assert.Null(value); + Assert.NotNull(dict._propertyStorage); + } - [Fact] - public void TryGetValue_PropertyStorage_True() - { - // Arrange - var dict = new RouteValueDictionary(new { key = "value" }); + [Fact] + public void TryGetValue_PropertyStorage_True() + { + // Arrange + var dict = new RouteValueDictionary(new { key = "value" }); - // Act - var result = dict.TryGetValue("key", out var value); + // Act + var result = dict.TryGetValue("key", out var value); - // Assert - Assert.True(result); - Assert.Equal("value", value); - Assert.NotNull(dict._propertyStorage); - } + // Assert + Assert.True(result); + Assert.Equal("value", value); + Assert.NotNull(dict._propertyStorage); + } - [Fact] - public void TryGetValue_PropertyStorage_True_CaseInsensitive() - { - // Arrange - var dict = new RouteValueDictionary(new { key = "value" }); + [Fact] + public void TryGetValue_PropertyStorage_True_CaseInsensitive() + { + // Arrange + var dict = new RouteValueDictionary(new { key = "value" }); - // Act - var result = dict.TryGetValue("kEy", out var value); + // Act + var result = dict.TryGetValue("kEy", out var value); - // Assert - Assert.True(result); - Assert.Equal("value", value); - Assert.NotNull(dict._propertyStorage); - } + // Assert + Assert.True(result); + Assert.Equal("value", value); + Assert.NotNull(dict._propertyStorage); + } - [Fact] - public void TryGetValue_ListStorage_False() - { - // Arrange - var dict = new RouteValueDictionary() + [Fact] + public void TryGetValue_ListStorage_False() + { + // Arrange + var dict = new RouteValueDictionary() { { "key", "value" }, }; - // Act - var result = dict.TryGetValue("other", out var value); + // Act + var result = dict.TryGetValue("other", out var value); - // Assert - Assert.False(result); - Assert.Null(value); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.False(result); + Assert.Null(value); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void TryGetValue_ListStorage_True() - { - // Arrange - var dict = new RouteValueDictionary() + [Fact] + public void TryGetValue_ListStorage_True() + { + // Arrange + var dict = new RouteValueDictionary() { { "key", "value" }, }; - // Act - var result = dict.TryGetValue("key", out var value); + // Act + var result = dict.TryGetValue("key", out var value); - // Assert - Assert.True(result); - Assert.Equal("value", value); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.True(result); + Assert.Equal("value", value); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void TryGetValue_ListStorage_True_CaseInsensitive() - { - // Arrange - var dict = new RouteValueDictionary() + [Fact] + public void TryGetValue_ListStorage_True_CaseInsensitive() + { + // Arrange + var dict = new RouteValueDictionary() { { "key", "value" }, }; - // Act - var result = dict.TryGetValue("kEy", out var value); + // Act + var result = dict.TryGetValue("kEy", out var value); - // Assert - Assert.True(result); - Assert.Equal("value", value); - Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - } + // Assert + Assert.True(result); + Assert.Equal("value", value); + Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + } - [Fact] - public void ListStorage_DynamicallyAdjustsCapacity() - { - // Arrange - var dict = new RouteValueDictionary(); + [Fact] + public void ListStorage_DynamicallyAdjustsCapacity() + { + // Arrange + var dict = new RouteValueDictionary(); - // Act 1 - dict.Add("key", "value"); + // Act 1 + dict.Add("key", "value"); - // Assert 1 - var storage = Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - Assert.Equal(4, storage.Length); + // Assert 1 + var storage = Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + Assert.Equal(4, storage.Length); - // Act 2 - dict.Add("key2", "value2"); - dict.Add("key3", "value3"); - dict.Add("key4", "value4"); - dict.Add("key5", "value5"); + // Act 2 + dict.Add("key2", "value2"); + dict.Add("key3", "value3"); + dict.Add("key4", "value4"); + dict.Add("key5", "value5"); - // Assert 2 - storage = Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - Assert.Equal(8, storage.Length); - } + // Assert 2 + storage = Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + Assert.Equal(8, storage.Length); + } - [Fact] - public void ListStorage_RemoveAt_RearrangesInnerArray() - { - // Arrange - var dict = new RouteValueDictionary(); - dict.Add("key", "value"); - dict.Add("key2", "value2"); - dict.Add("key3", "value3"); - - // Assert 1 - var storage = Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - Assert.Equal(3, dict.Count); - - // Act - dict.Remove("key2"); - - // Assert 2 - storage = Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); - Assert.Equal(2, dict.Count); - Assert.Equal("key", storage[0].Key); - Assert.Equal("value", storage[0].Value); - Assert.Equal("key3", storage[1].Key); - Assert.Equal("value3", storage[1].Value); - } + [Fact] + public void ListStorage_RemoveAt_RearrangesInnerArray() + { + // Arrange + var dict = new RouteValueDictionary(); + dict.Add("key", "value"); + dict.Add("key2", "value2"); + dict.Add("key3", "value3"); + + // Assert 1 + var storage = Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + Assert.Equal(3, dict.Count); + + // Act + dict.Remove("key2"); + + // Assert 2 + storage = Assert.IsType<KeyValuePair<string, object?>[]>(dict._arrayStorage); + Assert.Equal(2, dict.Count); + Assert.Equal("key", storage[0].Key); + Assert.Equal("value", storage[0].Value); + Assert.Equal("key3", storage[1].Key); + Assert.Equal("value3", storage[1].Value); + } - [Fact] - public void FromArray_TakesOwnershipOfArray() + [Fact] + public void FromArray_TakesOwnershipOfArray() + { + // Arrange + var array = new KeyValuePair<string, object?>[] { - // Arrange - var array = new KeyValuePair<string, object?>[] - { new KeyValuePair<string, object?>("a", 0), new KeyValuePair<string, object?>("b", 1), new KeyValuePair<string, object?>("c", 2), - }; + }; - var dictionary = RouteValueDictionary.FromArray(array); + var dictionary = RouteValueDictionary.FromArray(array); - // Act - modifying the array should modify the dictionary - array[0] = new KeyValuePair<string, object?>("aa", 10); + // Act - modifying the array should modify the dictionary + array[0] = new KeyValuePair<string, object?>("aa", 10); - // Assert - Assert.Equal(3, dictionary.Count); - Assert.Equal(10, dictionary["aa"]); - } + // Assert + Assert.Equal(3, dictionary.Count); + Assert.Equal(10, dictionary["aa"]); + } - [Fact] - public void FromArray_EmptyArray() - { - // Arrange - var array = Array.Empty<KeyValuePair<string, object?>>(); + [Fact] + public void FromArray_EmptyArray() + { + // Arrange + var array = Array.Empty<KeyValuePair<string, object?>>(); - // Act - var dictionary = RouteValueDictionary.FromArray(array); + // Act + var dictionary = RouteValueDictionary.FromArray(array); - // Assert - Assert.Empty(dictionary); - } + // Assert + Assert.Empty(dictionary); + } - [Fact] - public void FromArray_RemovesGapsInArray() + [Fact] + public void FromArray_RemovesGapsInArray() + { + // Arrange + var array = new KeyValuePair<string, object?>[] { - // Arrange - var array = new KeyValuePair<string, object?>[] - { new KeyValuePair<string, object?>(null!, null), new KeyValuePair<string, object?>("a", 0), new KeyValuePair<string, object?>(null!, null), @@ -2084,16 +2084,16 @@ namespace Microsoft.AspNetCore.Routing.Tests new KeyValuePair<string, object?>("c", 2), new KeyValuePair<string, object?>("d", 3), new KeyValuePair<string, object?>(null!, null), - }; + }; - // Act - calling From should modify the array - var dictionary = RouteValueDictionary.FromArray(array); + // Act - calling From should modify the array + var dictionary = RouteValueDictionary.FromArray(array); - // Assert - Assert.Equal(4, dictionary.Count); - Assert.Equal( - new KeyValuePair<string, object?>[] - { + // Assert + Assert.Equal(4, dictionary.Count); + Assert.Equal( + new KeyValuePair<string, object?>[] + { new KeyValuePair<string, object?>("d", 3), new KeyValuePair<string, object?>("a", 0), new KeyValuePair<string, object?>("c", 2), @@ -2102,72 +2102,71 @@ namespace Microsoft.AspNetCore.Routing.Tests new KeyValuePair<string, object?>(null!, null), new KeyValuePair<string, object?>(null!, null), new KeyValuePair<string, object?>(null!, null), - }, - array); - } + }, + array); + } - private void AssertEmptyArrayStorage(RouteValueDictionary value) - { - Assert.Same(Array.Empty<KeyValuePair<string, object?>>(), value._arrayStorage); - } + private void AssertEmptyArrayStorage(RouteValueDictionary value) + { + Assert.Same(Array.Empty<KeyValuePair<string, object?>>(), value._arrayStorage); + } - private class RegularType - { - public bool IsAwesome { get; set; } + private class RegularType + { + public bool IsAwesome { get; set; } - public int CoolnessFactor { get; set; } - } + public int CoolnessFactor { get; set; } + } - private class Visibility - { - private string? PrivateYo { get; set; } + private class Visibility + { + private string? PrivateYo { get; set; } - internal int ItsInternalDealWithIt { get; set; } + internal int ItsInternalDealWithIt { get; set; } - public bool IsPublic { get; set; } - } + public bool IsPublic { get; set; } + } - private class StaticProperty - { - public static bool IsStatic { get; set; } - } + private class StaticProperty + { + public static bool IsStatic { get; set; } + } - private class SetterOnly - { - private bool _coolSetOnly; + private class SetterOnly + { + private bool _coolSetOnly; - public bool CoolSetOnly { set { _coolSetOnly = value; } } - } + public bool CoolSetOnly { set { _coolSetOnly = value; } } + } - private class Base - { - public bool DerivedProperty { get; set; } - } + private class Base + { + public bool DerivedProperty { get; set; } + } - private class Derived : Base - { - public bool TotallySweetProperty { get; set; } - } + private class Derived : Base + { + public bool TotallySweetProperty { get; set; } + } - private class DerivedHiddenProperty : Base - { - public new int DerivedProperty { get; set; } - } + private class DerivedHiddenProperty : Base + { + public new int DerivedProperty { get; set; } + } - private class IndexerProperty + private class IndexerProperty + { + public bool this[string key] { - public bool this[string key] - { - get { return false; } - set { } - } + get { return false; } + set { } } + } - private class Address - { - public string? City { get; set; } + private class Address + { + public string? City { get; set; } - public string? State { get; set; } - } + public string? State { get; set; } } } |