a575963da9
Former-commit-id: da6be194a6b1221998fc28233f2503bd61dd9d14
146 lines
5.0 KiB
C#
146 lines
5.0 KiB
C#
// Copyright (c) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information.
|
|
|
|
using System.Collections.Specialized;
|
|
using System.Globalization;
|
|
using Xunit;
|
|
using Assert = Microsoft.TestCommon.AssertEx;
|
|
|
|
namespace System.Web.Mvc.Test
|
|
{
|
|
public class NameValueCollectionValueProviderTest
|
|
{
|
|
private static readonly NameValueCollection _backingStore = new NameValueCollection()
|
|
{
|
|
{ "foo", "fooValue1" },
|
|
{ "foo", "fooValue2" },
|
|
{ "bar.baz", "someOtherValue" }
|
|
};
|
|
|
|
[Fact]
|
|
public void Constructor_ThrowsIfCollectionIsNull()
|
|
{
|
|
// Act & assert
|
|
Assert.ThrowsArgumentNull(
|
|
delegate { new NameValueCollectionValueProvider(null, CultureInfo.InvariantCulture); }, "collection");
|
|
}
|
|
|
|
[Fact]
|
|
public void ContainsPrefix()
|
|
{
|
|
// Arrange
|
|
NameValueCollectionValueProvider valueProvider = new NameValueCollectionValueProvider(_backingStore, null);
|
|
|
|
// Act
|
|
bool result = valueProvider.ContainsPrefix("bar");
|
|
|
|
// Assert
|
|
Assert.True(result);
|
|
}
|
|
|
|
[Fact]
|
|
public void ContainsPrefix_DoesNotContainEmptyPrefixIfBackingStoreIsEmpty()
|
|
{
|
|
// Arrange
|
|
NameValueCollectionValueProvider valueProvider = new NameValueCollectionValueProvider(new NameValueCollection(), null);
|
|
|
|
// Act
|
|
bool result = valueProvider.ContainsPrefix("");
|
|
|
|
// Assert
|
|
Assert.False(result);
|
|
}
|
|
|
|
[Fact]
|
|
public void ContainsPrefix_ThrowsIfPrefixIsNull()
|
|
{
|
|
// Arrange
|
|
NameValueCollectionValueProvider valueProvider = new NameValueCollectionValueProvider(_backingStore, null);
|
|
|
|
// Act & assert
|
|
Assert.ThrowsArgumentNull(
|
|
delegate { valueProvider.ContainsPrefix(null); }, "prefix");
|
|
}
|
|
|
|
[Fact]
|
|
public void GetValue()
|
|
{
|
|
// Arrange
|
|
CultureInfo culture = CultureInfo.GetCultureInfo("fr-FR");
|
|
NameValueCollectionValueProvider valueProvider = new NameValueCollectionValueProvider(_backingStore, culture);
|
|
|
|
// Act
|
|
ValueProviderResult vpResult = valueProvider.GetValue("foo");
|
|
|
|
// Assert
|
|
Assert.NotNull(vpResult);
|
|
Assert.Equal(_backingStore.GetValues("foo"), (string[])vpResult.RawValue);
|
|
Assert.Equal("fooValue1,fooValue2", vpResult.AttemptedValue);
|
|
Assert.Equal(culture, vpResult.Culture);
|
|
}
|
|
|
|
[Fact]
|
|
public void GetValue_NonValidating()
|
|
{
|
|
// Arrange
|
|
NameValueCollection unvalidatedCollection = new NameValueCollection()
|
|
{
|
|
{ "foo", "fooValue3" },
|
|
{ "foo", "fooValue4" }
|
|
};
|
|
|
|
CultureInfo culture = CultureInfo.GetCultureInfo("fr-FR");
|
|
NameValueCollectionValueProvider valueProvider = new NameValueCollectionValueProvider(_backingStore, unvalidatedCollection, culture);
|
|
|
|
// Act
|
|
ValueProviderResult vpResult = valueProvider.GetValue("foo", skipValidation: true);
|
|
|
|
// Assert
|
|
Assert.NotNull(vpResult);
|
|
Assert.Equal(new[] { "fooValue3", "fooValue4" }, (string[])vpResult.RawValue);
|
|
Assert.Equal("fooValue3,fooValue4", vpResult.AttemptedValue);
|
|
Assert.Equal(culture, vpResult.Culture);
|
|
}
|
|
|
|
[Fact]
|
|
public void GetValue_NonValidating_NoUnvalidatedCollectionSpecified_UsesDefaultCollectionValue()
|
|
{
|
|
// Arrange
|
|
CultureInfo culture = CultureInfo.GetCultureInfo("fr-FR");
|
|
NameValueCollectionValueProvider valueProvider = new NameValueCollectionValueProvider(_backingStore, null, culture);
|
|
|
|
// Act
|
|
ValueProviderResult vpResult = valueProvider.GetValue("foo", skipValidation: true);
|
|
|
|
// Assert
|
|
Assert.NotNull(vpResult);
|
|
Assert.Equal(_backingStore.GetValues("foo"), (string[])vpResult.RawValue);
|
|
Assert.Equal("fooValue1,fooValue2", vpResult.AttemptedValue);
|
|
Assert.Equal(culture, vpResult.Culture);
|
|
}
|
|
|
|
[Fact]
|
|
public void GetValue_ReturnsNullIfKeyNotFound()
|
|
{
|
|
// Arrange
|
|
NameValueCollectionValueProvider valueProvider = new NameValueCollectionValueProvider(_backingStore, null);
|
|
|
|
// Act
|
|
ValueProviderResult vpResult = valueProvider.GetValue("bar");
|
|
|
|
// Assert
|
|
Assert.Null(vpResult);
|
|
}
|
|
|
|
[Fact]
|
|
public void GetValue_ThrowsIfKeyIsNull()
|
|
{
|
|
// Arrange
|
|
NameValueCollectionValueProvider valueProvider = new NameValueCollectionValueProvider(_backingStore, null);
|
|
|
|
// Act & assert
|
|
Assert.ThrowsArgumentNull(
|
|
delegate { valueProvider.GetValue(null); }, "key");
|
|
}
|
|
}
|
|
}
|