Skip to content
This repository was archived by the owner on Nov 20, 2018. It is now read-only.

Commit 9dd0e4a

Browse files
committed
Add ToArray to avoid casting.
1 parent 09004cd commit 9dd0e4a

File tree

3 files changed

+29
-20
lines changed

3 files changed

+29
-20
lines changed

src/Microsoft.Framework.Primitives/StringValues.cs

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -47,15 +47,7 @@ public static implicit operator string (StringValues values)
4747

4848
public static implicit operator string[] (StringValues value)
4949
{
50-
if (value._values != null)
51-
{
52-
return value._values;
53-
}
54-
if (value._value != null)
55-
{
56-
return new string[1] { value._value };
57-
}
58-
return EmptyArray;
50+
return value.GetArrayValue();
5951
}
6052

6153
public int Count => _values?.Length ?? (_value != null ? 1 : 0);
@@ -106,6 +98,20 @@ private string GetStringValue()
10698
}
10799
}
108100

101+
public string[] ToArray()
102+
{
103+
return GetArrayValue() ?? EmptyArray;
104+
}
105+
106+
private string[] GetArrayValue()
107+
{
108+
if (_value != null)
109+
{
110+
return new[] { _value };
111+
}
112+
return _values;
113+
}
114+
109115
int IList<string>.IndexOf(string item)
110116
{
111117
var index = 0;

test/Microsoft.AspNet.Http.Tests/HeaderDictionaryTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public void PropertiesAreAccessible()
2424
Assert.True(headers.ContainsKey("header1"));
2525
Assert.False(headers.ContainsKey("header2"));
2626
Assert.Equal("Value1", headers["header1"]);
27-
Assert.Equal(new[] { "Value1" }, (string[])headers["header1"]);
27+
Assert.Equal(new[] { "Value1" }, headers["header1"].ToArray());
2828
}
2929
}
3030
}

test/Microsoft.Framework.Primitives.Tests/StringValuesTests.cs

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ public void DefaultConstructor_ExpectedValues()
2929
var stringValues = new StringValues();
3030
Assert.Equal(0, stringValues.Count);
3131
Assert.Equal((string)null, stringValues);
32-
Assert.Equal<string[]>(new string[0], stringValues);
32+
Assert.Equal(new string[0], stringValues.ToArray());
3333

3434
Assert.True(StringValues.IsNullOrEmpty(stringValues));
3535
Assert.Throws<IndexOutOfRangeException>(() => stringValues[0]);
@@ -43,12 +43,13 @@ public void Constructor_NullStringValue_ExpectedValues()
4343
{
4444
var stringValues = new StringValues((string)null);
4545
Assert.Equal(0, stringValues.Count);
46-
Assert.Equal((string)null, stringValues);
47-
Assert.Equal<string[]>(new string[0], stringValues);
46+
Assert.Null((string)stringValues);
47+
Assert.Equal(string.Empty, stringValues.ToString());
48+
Assert.Null((string[])stringValues);
49+
Assert.Equal(new string[0], stringValues.ToArray());
4850

4951
Assert.True(StringValues.IsNullOrEmpty(stringValues));
5052
Assert.Throws<IndexOutOfRangeException>(() => stringValues[0]);
51-
Assert.Equal(string.Empty, stringValues.ToString());
5253
Assert.Equal(-1, ((IList<string>)stringValues).IndexOf(string.Empty));
5354
Assert.Equal(0, stringValues.Count());
5455
}
@@ -58,8 +59,10 @@ public void Constructor_NullStringArray_ExpectedValues()
5859
{
5960
var stringValues = new StringValues((string[])null);
6061
Assert.Equal(0, stringValues.Count);
61-
Assert.Equal((string)null, stringValues);
62-
Assert.Equal<string[]>(new string[0], stringValues);
62+
Assert.Null((string)stringValues);
63+
Assert.Equal(string.Empty, stringValues.ToString());
64+
Assert.Null((string[])stringValues);
65+
Assert.Equal(new string[0], stringValues.ToArray());
6366

6467
Assert.True(StringValues.IsNullOrEmpty(stringValues));
6568
Assert.Throws<IndexOutOfRangeException>(() => stringValues[0]);
@@ -74,8 +77,8 @@ public void ImplicitStringConverter_Works()
7477
string nullString = null;
7578
StringValues stringValues = nullString;
7679
Assert.Equal(0, stringValues.Count);
77-
Assert.Equal((string)null, stringValues);
78-
Assert.Equal<string[]>(new string[0], stringValues);
80+
Assert.Null((string)stringValues);
81+
Assert.Null((string[])stringValues);
7982

8083
string aString = "abc";
8184
stringValues = aString;
@@ -91,8 +94,8 @@ public void ImplicitStringArrayConverter_Works()
9194
string[] nullStringArray = null;
9295
StringValues stringValues = nullStringArray;
9396
Assert.Equal(0, stringValues.Count);
94-
Assert.Equal((string)null, stringValues);
95-
Assert.Equal<string[]>(new string[0], stringValues);
97+
Assert.Null((string)stringValues);
98+
Assert.Null((string[])stringValues);
9699

97100
string aString = "abc";
98101
string[] aStringArray = new[] { aString };

0 commit comments

Comments
 (0)