public void CopyAsReadOnly_WithParameters_CopiedAndReadOnly()
        {
            var mediaType0 = new MediaTypeHeaderValue("text/plain");

            mediaType0.Parameters.Add(new NameValueHeaderValue("name", "value"));
            var mediaType1 = mediaType0.CopyAsReadOnly();

            Assert.NotSame(mediaType0, mediaType1);
            Assert.False(mediaType0.IsReadOnly);
            Assert.True(mediaType1.IsReadOnly);
            Assert.Same(mediaType0.MediaType, mediaType1.MediaType);

            Assert.NotSame(mediaType0.Parameters, mediaType1.Parameters);
            Assert.False(mediaType0.Parameters.IsReadOnly);
            Assert.True(mediaType1.Parameters.IsReadOnly);
            Assert.Equal(mediaType0.Parameters.Count, mediaType1.Parameters.Count);
            Assert.Throws <NotSupportedException>(() => mediaType1.Parameters.Add(new NameValueHeaderValue("name")));
            Assert.Throws <NotSupportedException>(() => mediaType1.Parameters.Remove(new NameValueHeaderValue("name")));
            Assert.Throws <NotSupportedException>(() => mediaType1.Parameters.Clear());

            var pair0 = mediaType0.Parameters.First();
            var pair1 = mediaType1.Parameters.First();

            Assert.NotSame(pair0, pair1);
            Assert.False(pair0.IsReadOnly);
            Assert.True(pair1.IsReadOnly);
            Assert.Same(pair0.Name, pair1.Name);
            Assert.Same(pair0.Value, pair1.Value);
        }
        public void CopyAsReadOnly_SimpleMediaType_CopiedAndReadOnly()
        {
            var mediaType0 = new MediaTypeHeaderValue("text/plain");
            var mediaType1 = mediaType0.CopyAsReadOnly();
            Assert.NotSame(mediaType0, mediaType1);
            Assert.Same(mediaType0.MediaType, mediaType1.MediaType);
            Assert.NotSame(mediaType0.Parameters, mediaType1.Parameters);
            Assert.Equal(mediaType0.Parameters.Count, mediaType1.Parameters.Count);

            Assert.False(mediaType0.IsReadOnly);
            Assert.True(mediaType1.IsReadOnly);
            Assert.Throws<InvalidOperationException>(() => { mediaType1.MediaType = "some/value"; });
        }
        public void CopyAsReadOnly_SimpleMediaType_CopiedAndReadOnly()
        {
            var mediaType0 = new MediaTypeHeaderValue("text/plain");
            var mediaType1 = mediaType0.CopyAsReadOnly();

            Assert.NotSame(mediaType0, mediaType1);
            Assert.Same(mediaType0.MediaType, mediaType1.MediaType);
            Assert.NotSame(mediaType0.Parameters, mediaType1.Parameters);
            Assert.Equal(mediaType0.Parameters.Count, mediaType1.Parameters.Count);

            Assert.False(mediaType0.IsReadOnly);
            Assert.True(mediaType1.IsReadOnly);
            Assert.Throws <InvalidOperationException>(() => { mediaType1.MediaType = "some/value"; });
        }
Пример #4
0
        /// <summary>
        /// Sets mapping for the format to specified <see cref="MediaTypeHeaderValue"/>. 
        /// If the format already exists, the <see cref="MediaTypeHeaderValue"/> will be overwritten with the new value.
        /// </summary>
        /// <param name="format">The format value.</param>
        /// <param name="contentType">The <see cref="MediaTypeHeaderValue"/> for the format value.</param>
        public void SetMediaTypeMappingForFormat(string format, MediaTypeHeaderValue contentType)
        {
            if (format == null)
            {
                throw new ArgumentNullException(nameof(format));
            }

            if (contentType == null)
            {
                throw new ArgumentNullException(nameof(contentType));
            }

            ValidateContentType(contentType);
            format = RemovePeriodIfPresent(format);
            _map[format] = contentType.CopyAsReadOnly();
        }
        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);
        }
        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);
        }
        public void CopyAsReadOnly_WithParameters_CopiedAndReadOnly()
        {
            var mediaType0 = new MediaTypeHeaderValue("text/plain");
            mediaType0.Parameters.Add(new NameValueHeaderValue("name", "value"));
            var mediaType1 = mediaType0.CopyAsReadOnly();
            Assert.NotSame(mediaType0, mediaType1);
            Assert.False(mediaType0.IsReadOnly);
            Assert.True(mediaType1.IsReadOnly);
            Assert.Same(mediaType0.MediaType, mediaType1.MediaType);

            Assert.NotSame(mediaType0.Parameters, mediaType1.Parameters);
            Assert.False(mediaType0.Parameters.IsReadOnly);
            Assert.True(mediaType1.Parameters.IsReadOnly);
            Assert.Equal(mediaType0.Parameters.Count, mediaType1.Parameters.Count);
            Assert.Throws<NotSupportedException>(() => mediaType1.Parameters.Add(new NameValueHeaderValue("name")));
            Assert.Throws<NotSupportedException>(() => mediaType1.Parameters.Remove(new NameValueHeaderValue("name")));
            Assert.Throws<NotSupportedException>(() => mediaType1.Parameters.Clear());

            var pair0 = mediaType0.Parameters.First();
            var pair1 = mediaType1.Parameters.First();
            Assert.NotSame(pair0, pair1);
            Assert.False(pair0.IsReadOnly);
            Assert.True(pair1.IsReadOnly);
            Assert.Same(pair0.Name, pair1.Name);
            Assert.Same(pair0.Value, pair1.Value);
        }