QueryBuilder Add overload for IEnumerable.

This commit is contained in:
Chris Ross 2014-07-24 16:24:44 -07:00
parent af279f6d2b
commit 7be9cefc4c
2 changed files with 32 additions and 3 deletions

View File

@ -14,16 +14,24 @@ namespace Microsoft.AspNet.WebUtilities
{
private IList<KeyValuePair<string, string>> _params;
public QueryBuilder()
{
public QueryBuilder()
{
_params = new List<KeyValuePair<string, string>>();
}
}
public QueryBuilder(IEnumerable<KeyValuePair<string, string>> parameters)
{
_params = new List<KeyValuePair<string, string>>(parameters);
}
public void Add(string key, IEnumerable<string> values)
{
foreach (var value in values)
{
_params.Add(new KeyValuePair<string, string>(key, value));
}
}
public void Add(string key, string value)
{
_params.Add(new KeyValuePair<string, string>(key, value));

View File

@ -50,6 +50,14 @@ namespace Microsoft.AspNet.WebUtilities
Assert.Equal("?key1=value1&key2=value2&key3=value3", builder.ToString());
}
[Fact]
public void AddIEnumerableValues_AddedInOrder()
{
var builder = new QueryBuilder();
builder.Add("key", new[] { "value1", "value2", "value3" });
Assert.Equal("?key=value1&key=value2&key=value3", builder.ToString());
}
[Fact]
public void AddMultipleValuesViaConstructor_AddedInOrder()
{
@ -73,5 +81,18 @@ namespace Microsoft.AspNet.WebUtilities
};
Assert.Equal("?key1=value1&key2=value2&key3=value3", builder.ToString());
}
[Fact]
public void CopyViaConstructor_AddedInOrder()
{
var builder = new QueryBuilder()
{
{ "key1", "value1" },
{ "key2", "value2" },
{ "key3", "value3" },
};
var builder1 = new QueryBuilder(builder);
Assert.Equal("?key1=value1&key2=value2&key3=value3", builder1.ToString());
}
}
}