135 lines
4.1 KiB
C#
Raw Normal View History

// Copyright (c) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information.
using System.Collections.Specialized;
using Xunit;
using Xunit.Extensions;
using Assert = Microsoft.TestCommon.AssertEx;
using Microsoft.TestCommon;
namespace System.Net.Http.Headers
{
class CookieStateTest
{
[Fact]
public void CookieState_CtorThrowsOnNullName()
{
Assert.ThrowsArgumentNull(() => new CookieState(null, "value"), "name");
}
[Theory]
[InlineData("<acb>")]
[InlineData("{acb}")]
[InlineData("[acb]")]
public void CookieState_CtorThrowsOnInvalidName(string name)
{
Assert.ThrowsArgument(() => new CookieState(name, "value"), "name");
}
[Theory]
[InlineData("\"acb\"")]
[InlineData("a,b")]
[InlineData("a;b")]
[InlineData("a\\b")]
public void CookieState_CtorThrowsOnInvalidValue(string value)
{
Assert.ThrowsArgument(() => new CookieState("name", value), "value");
}
[Fact]
public void CookieState_CtorThrowsOnNullNameValueCollection()
{
Assert.ThrowsArgumentNull(() => new CookieState("name", (NameValueCollection)null), "values");
}
[Theory]
[InlineData("name", "")]
[InlineData("name", "value")]
public void CookieState_Ctor1InitializesCorrectly(string name, string value)
{
CookieState cookie = new CookieState(name, value);
Assert.Equal(name, cookie.Name);
Assert.Equal(value, cookie.Values.AllKeys[0]);
Assert.Equal(value, cookie.Value);
}
[Fact]
public void CookieState_Ctor2InitializesCorrectly()
{
// Arrange
NameValueCollection nvc = new NameValueCollection();
nvc.Add("n1", "v1");
// Act
CookieState cookie = new CookieState("name", nvc);
// Assert
Assert.Equal("name", cookie.Name);
Assert.Equal(1, cookie.Values.Count);
Assert.Equal("n1", cookie.Values.AllKeys[0]);
Assert.Equal("v1", cookie.Values["n1"]);
Assert.Equal("n1=v1", cookie.Value);
}
[Fact]
public void CookieState_Value()
{
CookieState cookie = new CookieState("name");
Assert.Equal(String.Empty, cookie.Value);
cookie.Value = "value1";
Assert.Equal("value1", cookie.Value);
cookie.Values.AllKeys[0] = "value2";
Assert.Equal("value2", cookie.Value);
}
[Fact]
public void CookieState_Clone()
{
// Arrange
NameValueCollection nvc = new NameValueCollection();
nvc.Add("n1", "v1");
CookieState expectedValue = new CookieState("name", nvc);
// Act
CookieState actualValue = expectedValue.Clone() as CookieState;
// Assert
Assert.Equal("name", actualValue.Name);
Assert.Equal(1, actualValue.Values.Count);
Assert.Equal("n1", actualValue.Values.AllKeys[0]);
Assert.Equal("v1", actualValue.Values["n1"]);
}
[Fact]
public void CookieState_ToStringWithSingleValue()
{
// Arrange
CookieState cookie = new CookieState("name", "value");
// Act
string actualValue = cookie.ToString();
// Assert
Assert.Equal("name=value", actualValue);
}
[Fact]
public void CookieState_ToStringWithNameValueCollection()
{
// Arrange
NameValueCollection nvc = new NameValueCollection();
nvc.Add("n1", "v1");
nvc.Add("n2", "v2");
nvc.Add("n3", "v3");
CookieState cookie = new CookieState("name", nvc);
// Act
string actualValue = cookie.ToString();
// Assert
Assert.Equal("name=n1=v1&n2=v2&n3=v3", actualValue);
}
}
}