public void EqualsReturnsTrueIfMediaTypesDifferOnlyByQuality(MediaTypeWithQualityHeaderValue mediaType1)
        {
            MediaTypeHeaderValueEqualityComparer comparer = MediaTypeHeaderValueEqualityComparer.EqualityComparer;
            MediaTypeHeaderValue mediaType2 = new MediaTypeHeaderValue(mediaType1.MediaType);

            Assert.Equal(mediaType2, mediaType1, comparer);
        }
        public void Equals1ReturnsTrueIfMediaTypesDifferOnlyByCase()
        {
            MediaTypeHeaderValueEqualityComparer comparer = MediaTypeHeaderValueEqualityComparer.EqualityComparer;

            MediaTypeHeaderValue mediaType1 = new MediaTypeHeaderValue("text/xml");
            MediaTypeHeaderValue mediaType2 = new MediaTypeHeaderValue("TEXT/xml");

            Assert.Equal(mediaType1, mediaType2, comparer);

            mediaType1 = new MediaTypeHeaderValue("text/*");
            mediaType2 = new MediaTypeHeaderValue("TEXT/*");
            Assert.Equal(mediaType1, mediaType2, comparer);

            mediaType1 = new MediaTypeHeaderValue("*/*");
            mediaType2 = new MediaTypeHeaderValue("*/*");
            Assert.Equal(mediaType1, mediaType2, comparer);

            mediaType1         = new MediaTypeHeaderValue("text/*");
            mediaType1.CharSet = "someCharset";
            mediaType2         = new MediaTypeHeaderValue("TEXT/*");
            mediaType2.CharSet = "SOMECHARSET";
            Assert.Equal(mediaType1, mediaType2, comparer);

            mediaType1         = new MediaTypeHeaderValue("application/*");
            mediaType1.CharSet = "";
            mediaType2         = new MediaTypeHeaderValue("application/*");
            mediaType2.CharSet = null;
            Assert.Equal(mediaType1, mediaType2, comparer);
        }
        public void EqualsReturnsFalseIfMediaType1IsSuperset()
        {
            string[] parameters = new string[]
            {
                ";name=value",
                ";q=1.0",
                ";version=1",
            };

            MediaTypeHeaderValueEqualityComparer comparer = MediaTypeHeaderValueEqualityComparer.EqualityComparer;

            foreach (string parameter in parameters)
            {
                MediaTypeHeaderValue mediaType1 = MediaTypeHeaderValue.Parse("text/xml" + parameter);
                MediaTypeHeaderValue mediaType2 = new MediaTypeHeaderValue("TEXT/xml");
                Assert.NotEqual(mediaType1, mediaType2, comparer);

                mediaType1 = MediaTypeHeaderValue.Parse("text/*" + parameter);
                mediaType2 = new MediaTypeHeaderValue("TEXT/*");
                Assert.NotEqual(mediaType1, mediaType2, comparer);

                mediaType1 = MediaTypeHeaderValue.Parse("*/*" + parameter);
                mediaType2 = new MediaTypeHeaderValue("*/*");
                Assert.NotEqual(mediaType1, mediaType2, comparer);
            }
        }
        public void EqualityComparerReturnsMediaTypeHeadeValueEqualityComparer()
        {
            MediaTypeHeaderValueEqualityComparer comparer1 = MediaTypeHeaderValueEqualityComparer.EqualityComparer;
            MediaTypeHeaderValueEqualityComparer comparer2 = MediaTypeHeaderValueEqualityComparer.EqualityComparer;

            Assert.NotNull(comparer1);
            Assert.Same(comparer1, comparer2);
        }
        public void EqualsReturnsFalseIfMediaTypesDifferByMoreThanCase()
        {
            MediaTypeHeaderValueEqualityComparer comparer = MediaTypeHeaderValueEqualityComparer.EqualityComparer;

            MediaTypeHeaderValue mediaType1 = new MediaTypeHeaderValue("text/xml");
            MediaTypeHeaderValue mediaType2 = new MediaTypeHeaderValue("TEST/xml");

            Assert.NotEqual(mediaType1, mediaType2, comparer);

            mediaType1         = new MediaTypeHeaderValue("text/*");
            mediaType1.CharSet = "someCharset";
            mediaType2         = new MediaTypeHeaderValue("TEXT/*");
            mediaType2.CharSet = "SOMEOTHERCHARSET";
            Assert.NotEqual(mediaType1, mediaType2, comparer);
        }
        public void GetHashCodeReturnsDifferentHashCodeForDifferentMediaType()
        {
            MediaTypeHeaderValueEqualityComparer comparer = MediaTypeHeaderValueEqualityComparer.EqualityComparer;

            MediaTypeHeaderValue mediaType1 = new MediaTypeHeaderValue("text/*");
            MediaTypeHeaderValue mediaType2 = new MediaTypeHeaderValue("TEXT/xml");

            Assert.NotEqual(comparer.GetHashCode(mediaType1), comparer.GetHashCode(mediaType2));

            mediaType1 = new MediaTypeHeaderValue("application/*");
            mediaType2 = new MediaTypeHeaderValue("TEXT/*");
            Assert.NotEqual(comparer.GetHashCode(mediaType1), comparer.GetHashCode(mediaType2));

            mediaType1 = new MediaTypeHeaderValue("application/*");
            mediaType2 = new MediaTypeHeaderValue("*/*");
            Assert.NotEqual(comparer.GetHashCode(mediaType1), comparer.GetHashCode(mediaType2));
        }
        public void GetHashCodeReturnsSameHashCodeRegardlessOfCase()
        {
            MediaTypeHeaderValueEqualityComparer comparer = MediaTypeHeaderValueEqualityComparer.EqualityComparer;

            MediaTypeHeaderValue mediaType1 = new MediaTypeHeaderValue("text/xml");
            MediaTypeHeaderValue mediaType2 = new MediaTypeHeaderValue("TEXT/xml");

            Assert.Equal(comparer.GetHashCode(mediaType1), comparer.GetHashCode(mediaType2));

            mediaType1 = new MediaTypeHeaderValue("text/*");
            mediaType2 = new MediaTypeHeaderValue("TEXT/*");
            Assert.Equal(comparer.GetHashCode(mediaType1), comparer.GetHashCode(mediaType2));

            mediaType1 = new MediaTypeHeaderValue("*/*");
            mediaType2 = new MediaTypeHeaderValue("*/*");
            Assert.Equal(comparer.GetHashCode(mediaType1), comparer.GetHashCode(mediaType2));
        }
        public void EqualsReturnsTrueIfMediaType1IsSubset()
        {
            string[] parameters = new string[]
            {
                ";name=value",
                ";q=1.0",
                ";version=1",
            };

            MediaTypeHeaderValueEqualityComparer comparer = MediaTypeHeaderValueEqualityComparer.EqualityComparer;

            MediaTypeHeaderValue mediaType1 = new MediaTypeHeaderValue("text/*");

            mediaType1.CharSet = "someCharset";
            MediaTypeHeaderValue mediaType2 = new MediaTypeHeaderValue("TEXT/*");

            mediaType2.CharSet = "SOMECHARSET";
            Assert.Equal(mediaType1, mediaType2, comparer);

            mediaType1         = new MediaTypeHeaderValue("application/*");
            mediaType1.CharSet = "";
            mediaType2         = new MediaTypeHeaderValue("application/*");
            mediaType2.CharSet = null;
            Assert.Equal(mediaType1, mediaType2, comparer);

            foreach (string parameter in parameters)
            {
                mediaType1 = new MediaTypeHeaderValue("text/xml");
                mediaType2 = MediaTypeHeaderValue.Parse("TEXT/xml" + parameter);
                Assert.Equal(mediaType1, mediaType2, comparer);

                mediaType1 = new MediaTypeHeaderValue("text/*");
                mediaType2 = MediaTypeHeaderValue.Parse("TEXT/*" + parameter);
                Assert.Equal(mediaType1, mediaType2, comparer);

                mediaType1 = new MediaTypeHeaderValue("*/*");
                mediaType2 = MediaTypeHeaderValue.Parse("*/*" + parameter);
                Assert.Equal(mediaType1, mediaType2, comparer);
            }
        }