#177 Enable Copy to return non-read-only.
This commit is contained in:
parent
5fe8037281
commit
40719b37f6
|
|
@ -273,11 +273,6 @@ namespace Microsoft.Net.Http.Headers
|
|||
/// <returns>A deep copy.</returns>
|
||||
public MediaTypeHeaderValue Copy()
|
||||
{
|
||||
if (IsReadOnly)
|
||||
{
|
||||
return this;
|
||||
}
|
||||
|
||||
var other = new MediaTypeHeaderValue();
|
||||
other._mediaType = _mediaType;
|
||||
|
||||
|
|
|
|||
|
|
@ -64,11 +64,6 @@ namespace Microsoft.Net.Http.Headers
|
|||
/// <returns>A copy.</returns>
|
||||
public NameValueHeaderValue Copy()
|
||||
{
|
||||
if (IsReadOnly)
|
||||
{
|
||||
return this;
|
||||
}
|
||||
|
||||
return new NameValueHeaderValue()
|
||||
{
|
||||
_name = _name,
|
||||
|
|
|
|||
|
|
@ -135,6 +135,29 @@ namespace Microsoft.Net.Http.Headers
|
|||
Assert.Same(pair0.Value, pair1.Value);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CopyFromReadOnly_WithParameters_CopiedAsNonReadOnly()
|
||||
{
|
||||
var mediaType0 = new MediaTypeHeaderValue("text/plain");
|
||||
mediaType0.Parameters.Add(new NameValueHeaderValue("name", "value"));
|
||||
var mediaType1 = mediaType0.CopyAsReadOnly();
|
||||
var mediaType2 = mediaType1.Copy();
|
||||
|
||||
Assert.NotSame(mediaType2, mediaType1);
|
||||
Assert.Same(mediaType2.MediaType, mediaType1.MediaType);
|
||||
Assert.True(mediaType1.IsReadOnly);
|
||||
Assert.False(mediaType2.IsReadOnly);
|
||||
Assert.NotSame(mediaType2.Parameters, mediaType1.Parameters);
|
||||
Assert.Equal(mediaType2.Parameters.Count, mediaType1.Parameters.Count);
|
||||
var pair2 = mediaType2.Parameters.First();
|
||||
var pair1 = mediaType1.Parameters.First();
|
||||
Assert.NotSame(pair2, pair1);
|
||||
Assert.True(pair1.IsReadOnly);
|
||||
Assert.False(pair2.IsReadOnly);
|
||||
Assert.Same(pair2.Name, pair1.Name);
|
||||
Assert.Same(pair2.Value, pair1.Value);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void MediaType_SetAndGetMediaType_MatchExpectations()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -127,6 +127,22 @@ namespace Microsoft.Net.Http.Headers
|
|||
Assert.Throws<InvalidOperationException>(() => { pair1.Value = "othervalue"; });
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void CopyFromReadOnly_NameAndValue_CopiedAsNonReadOnly()
|
||||
{
|
||||
var pair0 = new NameValueHeaderValue("name", "value");
|
||||
var pair1 = pair0.CopyAsReadOnly();
|
||||
var pair2 = pair1.Copy();
|
||||
Assert.NotSame(pair0, pair1);
|
||||
Assert.Same(pair0.Name, pair1.Name);
|
||||
Assert.Same(pair0.Value, pair1.Value);
|
||||
|
||||
// Change one value and verify the other is unchanged.
|
||||
pair2.Value = "othervalue";
|
||||
Assert.Equal("othervalue", pair2.Value);
|
||||
Assert.Equal("value", pair1.Value);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Value_CallSetterWithInvalidValues_Throw()
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue