aspnetcore/test/Microsoft.AspNet.WebUtiliti.../QueryBuilderTests.cs

77 lines
2.4 KiB
C#

// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Collections.Generic;
using Xunit;
namespace Microsoft.AspNet.WebUtilities
{
public class QueryBuilderTests
{
[Fact]
public void EmptyQuery_NoQuestionMark()
{
var builder = new QueryBuilder();
Assert.Equal(string.Empty, builder.ToString());
}
[Fact]
public void AddSimple_NoEncoding()
{
var builder = new QueryBuilder();
builder.Add("key", "value");
Assert.Equal("?key=value", builder.ToString());
}
[Fact]
public void AddSpace_PercentEncoded()
{
var builder = new QueryBuilder();
builder.Add("key", "value 1");
Assert.Equal("?key=value%201", builder.ToString());
}
[Fact]
public void AddReservedCharacters_PercentEncoded()
{
var builder = new QueryBuilder();
builder.Add("key&", "value#");
Assert.Equal("?key%26=value%23", builder.ToString());
}
[Fact]
public void AddMultipleValues_AddedInOrder()
{
var builder = new QueryBuilder();
builder.Add("key1", "value1");
builder.Add("key2", "value2");
builder.Add("key3", "value3");
Assert.Equal("?key1=value1&key2=value2&key3=value3", builder.ToString());
}
[Fact]
public void AddMultipleValuesViaConstructor_AddedInOrder()
{
var builder = new QueryBuilder(new[]
{
new KeyValuePair<string, string>("key1", "value1"),
new KeyValuePair<string, string>("key2", "value2"),
new KeyValuePair<string, string>("key3", "value3"),
});
Assert.Equal("?key1=value1&key2=value2&key3=value3", builder.ToString());
}
[Fact]
public void AddMultipleValuesViaInitializer_AddedInOrder()
{
var builder = new QueryBuilder()
{
{ "key1", "value1" },
{ "key2", "value2" },
{ "key3", "value3" },
};
Assert.Equal("?key1=value1&key2=value2&key3=value3", builder.ToString());
}
}
}