예제 #1
0
        public void TryParse_AllowCustomQualifiedComparison_ForDomainSpecificSorting()
        {
            string languages = "text/*, text/plain";

            Predicate <Qualified> isSubtype = q => q.Value.EndsWith("*");

            Comparison <Qualified> subtypesComeLater = (q1, q2) =>
            {
                var quality = q1.Quality.CompareTo(q2.Quality);
                if (quality == 0)
                {
                    if (isSubtype(q1) && !isSubtype(q2))
                    {
                        return(-1);
                    }
                    if (!isSubtype(q1) && isSubtype(q2))
                    {
                        return(1);
                    }
                    return(StringComparer.Ordinal.Compare(q1.Value, q2.Value));
                }
                return(quality);
            };

            var subject = QualifiedCollection.TryParse(languages, Cmp <Qualified> .By(subtypesComeLater));

            Assert.That(subject, Is.EqualTo(new[]
            {
                new Qualified("text/plain", Quality.Default),
                new Qualified("text/*", Quality.Default)
            }).Using(_equalizer));
        }
예제 #2
0
        public void Ctor_OrderByQualityDescending()
        {
            Qualified pointThree = new Qualified("pointThree", new Quality(.3f)),
                      pointSeven = new Qualified("pointSeven", new Quality(.7f));

            var subject = new QualifiedCollection(new[] { pointThree, pointSeven });

            Assert.That(subject, Is.EqualTo(new[] { pointSeven, pointThree }));
        }
예제 #3
0
        public void Ctor_SomeNulls_Skipped()
        {
            Qualified one = new Qualified("one", Quality.Default),
                      two = new Qualified("two", Quality.Default);

            var subject = new QualifiedCollection(new[] { one, null, two });

            Assert.That(subject, Is.EquivalentTo(new[] { one, two }));
        }
예제 #4
0
        public void TryParse_Encodings_QualityOrderedCollection()
        {
            string languages = "gzip;q=1.0, identity; q=0.5, *;q=0";

            var subject = QualifiedCollection.TryParse(languages);

            Assert.That(subject, Is.EqualTo(new[]
            {
                new Qualified("gzip", Quality.Default),
                new Qualified("identity", new Quality(.5f)),
                new Qualified("*", Quality.Min)
            }).Using(_equalizer));
        }
예제 #5
0
        public void TryParse_Languages_QualityOrderedCollection()
        {
            string languages = "da, en-gb;q=0.8, en;q=0.7";

            var subject = QualifiedCollection.TryParse(languages);

            Assert.That(subject, Is.EqualTo(new[]
            {
                new Qualified("da", Quality.Default),
                new Qualified("en-gb", new Quality(.8f)),
                new Qualified("en", new Quality(.7f))
            }).Using(_equalizer));
        }
예제 #6
0
        public void TryParse_ContentTypes_QualityOrderedCollection()
        {
            string languages = "text/plain; q=0.5, text/html,text/x-dvi; q=0.8, text/x-c";

            var subject = QualifiedCollection.TryParse(languages);

            Assert.That(subject, Is.EqualTo(new[]
            {
                new Qualified("text/html", Quality.Default),
                new Qualified("text/x-c", Quality.Default),
                new Qualified("text/x-dvi", new Quality(.8f)),
                new Qualified("text/plain", new Quality(.5f))
            }).Using(_equalizer));
        }
예제 #7
0
        public void TryParse_Empty_EmptyCollection(string empty)
        {
            var subject = QualifiedCollection.TryParse(empty);

            Assert.That(subject, Is.Empty);
        }