This is an automated email from the ASF dual-hosted git repository.

jamesbognar pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/juneau.git


The following commit(s) were added to refs/heads/master by this push:
     new ef5be7a  org.apache.juneau.http.header tests.
ef5be7a is described below

commit ef5be7a0e605e010fd7c047805a9a5b28c1d13b0
Author: JamesBognar <[email protected]>
AuthorDate: Sun Jul 19 15:22:03 2020 -0400

    org.apache.juneau.http.header tests.
---
 .../java/org/apache/juneau/http/MediaRanges.java   |  2 +-
 .../java/org/apache/juneau/http/MediaType.java     |  9 ++-
 .../juneau/http/header/BasicMediaTypeHeader.java   |  6 +-
 .../org/apache/juneau/http/MediaType_Test.java     |  2 +-
 ...t.java => BasicMediaRangeArrayHeader_Test.java} | 45 +++++++++++++--
 ...er_Test.java => BasicMediaTypeHeader_Test.java} | 64 ++++++++++++++++++++--
 .../header/BasicStringRangeArrayHeader_Test.java   | 10 ++++
 7 files changed, 118 insertions(+), 20 deletions(-)

diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/MediaRanges.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/MediaRanges.java
index 0094ee4..b6acb07 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/MediaRanges.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/MediaRanges.java
@@ -142,7 +142,7 @@ public class MediaRanges {
         * @return The index into the array of the best match, or <c>-1</c> if 
no suitable matches could be found.
         */
        public int match(List<? extends MediaType> mediaTypes) {
-               if (string.isEmpty())
+               if (string.isEmpty() || mediaTypes == null)
                        return -1;
 
                int matchQuant = 0, matchIndex = -1;
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/MediaType.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/MediaType.java
index 4b81ad8..a9be56b 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/MediaType.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/MediaType.java
@@ -206,11 +206,11 @@ public class MediaType implements Comparable<MediaType>  {
        }
 
        /**
-        * Returns <jk>true</jk> if this media type contains the <js>'*'</js> 
meta character.
+        * Returns <jk>true</jk> if this media type subtype contains the 
<js>'*'</js> meta character.
         *
-        * @return <jk>true</jk> if this media type contains the <js>'*'</js> 
meta character.
+        * @return <jk>true</jk> if this media type subtype contains the 
<js>'*'</js> meta character.
         */
-       public final boolean isMeta() {
+       public final boolean isMetaSubtype() {
                return hasSubtypeMeta;
        }
 
@@ -257,6 +257,9 @@ public class MediaType implements Comparable<MediaType>  {
         */
        public final int match(MediaType o, boolean allowExtraSubTypes) {
 
+               if (o == null)
+                       return -1;
+
                // Perfect match
                if (this == o || (type.equals(o.type) && 
subType.equals(o.subType)))
                        return 100000;
diff --git 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicMediaTypeHeader.java
 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicMediaTypeHeader.java
index 8be92ec..0ecb743 100644
--- 
a/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicMediaTypeHeader.java
+++ 
b/juneau-core/juneau-marshall/src/main/java/org/apache/juneau/http/header/BasicMediaTypeHeader.java
@@ -185,8 +185,8 @@ public class BasicMediaTypeHeader extends BasicStringHeader 
{
         *
         * @return <jk>true</jk> if this media type contains the <js>'*'</js> 
meta character.
         */
-       public final boolean isMeta() {
-               return asMediaType().isMeta();
+       public final boolean isMetaSubtype() {
+               return asMediaType().isMetaSubtype();
        }
 
        /**
@@ -278,6 +278,6 @@ public class BasicMediaTypeHeader extends BasicStringHeader 
{
                        o = "";
                if (o instanceof MediaType)
                        return (MediaType)o;
-               return MediaType.of(o.toString());
+               return new MediaType(o.toString());
        }
 }
diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/MediaType_Test.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/MediaType_Test.java
index 0f8c75c..c482e38 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/MediaType_Test.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/MediaType_Test.java
@@ -37,7 +37,7 @@ public class MediaType_Test {
                assertString(x2.getType()).isEmpty();
                assertString(x2.getSubType()).is("*");
                assertObject(x2.getSubTypes()).json().is("['*']");
-               assertTrue(x2.isMeta());
+               assertTrue(x2.isMetaSubtype());
 
                MediaType x3 = MediaType.of("text/foo+bar");
                assertTrue(x3.hasSubType("bar"));
diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/header/BasicStringRangeArrayHeader_Test.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/header/BasicMediaRangeArrayHeader_Test.java
similarity index 63%
copy from 
juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/header/BasicStringRangeArrayHeader_Test.java
copy to 
juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/header/BasicMediaRangeArrayHeader_Test.java
index 44b140c..637916c 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/header/BasicStringRangeArrayHeader_Test.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/header/BasicMediaRangeArrayHeader_Test.java
@@ -17,18 +17,21 @@ import static org.junit.runners.MethodSorters.*;
 import java.io.*;
 import java.util.function.*;
 
+import org.apache.juneau.collections.*;
+import org.apache.juneau.http.*;
 import org.apache.juneau.http.annotation.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.rest.annotation.*;
 import org.apache.juneau.rest.client2.*;
 import org.apache.juneau.rest.mock2.*;
 
-import static org.apache.juneau.http.header.BasicStringRangeArrayHeader.of;
+import static org.apache.juneau.assertions.Assertions.*;
+import static org.apache.juneau.http.header.BasicMediaRangeArrayHeader.of;
 
 import org.junit.*;
 
 @FixMethodOrder(NAME_ASCENDING)
-public class BasicStringRangeArrayHeader_Test {
+public class BasicMediaRangeArrayHeader_Test {
 
 
        private static final String HEADER = "Foo";
@@ -59,14 +62,44 @@ public class BasicStringRangeArrayHeader_Test {
                
c.get().header(of(null,(Supplier<?>)null)).run().assertBody().isEmpty();
                
c.get().header(of(HEADER,()->null)).run().assertBody().isEmpty();
 
-               c.get().header(new 
BasicStringRangeArrayHeader(HEADER,null)).run().assertBody().isEmpty();
-               c.get().header(new 
BasicStringRangeArrayHeader(HEADER,((Supplier<?>)()->null))).run().assertBody().isEmpty();
+               c.get().header(new 
BasicMediaRangeArrayHeader(HEADER,null)).run().assertBody().isEmpty();
+               c.get().header(new 
BasicMediaRangeArrayHeader(HEADER,((Supplier<?>)()->null))).run().assertBody().isEmpty();
 
-               c.get().header(of(HEADER,"foo")).run().assertBody().is("foo");
-               
c.get().header(of(HEADER,"foo,bar")).run().assertBody().is("foo,bar");
+               
c.get().header(of(HEADER,"foo/bar;x=1")).run().assertBody().is("foo/bar;x=1");
 
+               
c.get().header(of(HEADER,MediaRanges.of("foo/bar;x=1"))).run().assertBody().is("foo/bar;x=1");
        }
 
+       @Test
+       public void a02_match() throws Exception {
+               
assertInteger(Accept.of("text/foo").match(AList.of(MediaType.of("text/foo")))).is(0);
+               
assertInteger(Accept.of("text/foo").match(AList.of(MediaType.of("text/bar")))).is(-1);
+               assertInteger(new 
Accept((String)null).match(AList.of(MediaType.of("text/bar")))).is(-1);
+               
assertInteger(Accept.of("text/foo").match(AList.of(MediaType.of(null)))).is(-1);
+               assertInteger(Accept.of("text/foo").match(null)).is(-1);
+       }
+
+       @Test
+       public void a03_getRange() throws Exception {
+               assertString(Accept.of("text/foo").getRange(0)).is("text/foo");
+               assertString(Accept.of("text/foo").getRange(1)).isNull();
+               assertString(Accept.of("text/foo").getRange(-1)).isNull();
+               assertString(new Accept((String)null).getRange(0)).isNull();
+       }
+
+       @Test
+       public void a04_hasSubtypePart() throws Exception {
+               
assertBoolean(Accept.of("text/foo").hasSubtypePart("foo")).isTrue();
+               
assertBoolean(Accept.of("text/foo").hasSubtypePart("bar")).isFalse();
+               
assertBoolean(Accept.of("text/foo").hasSubtypePart(null)).isFalse();
+               assertBoolean(new 
Accept((String)null).hasSubtypePart("foo")).isFalse();
+       }
+
+       @Test
+       public void a05_getRanges() throws Exception {
+               
assertObject(Accept.of("text/foo,text/bar").getRanges()).json().is("['text/foo','text/bar']");
+               assertObject(new 
Accept((String)null).getRanges()).json().is("[]");
+       }
 
        
//------------------------------------------------------------------------------------------------------------------
        // Helper methods.
diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/header/BasicStringRangeArrayHeader_Test.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/header/BasicMediaTypeHeader_Test.java
similarity index 57%
copy from 
juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/header/BasicStringRangeArrayHeader_Test.java
copy to 
juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/header/BasicMediaTypeHeader_Test.java
index 44b140c..20117cc 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/header/BasicStringRangeArrayHeader_Test.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/header/BasicMediaTypeHeader_Test.java
@@ -17,18 +17,20 @@ import static org.junit.runners.MethodSorters.*;
 import java.io.*;
 import java.util.function.*;
 
+import org.apache.juneau.http.*;
 import org.apache.juneau.http.annotation.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.rest.annotation.*;
 import org.apache.juneau.rest.client2.*;
 import org.apache.juneau.rest.mock2.*;
 
-import static org.apache.juneau.http.header.BasicStringRangeArrayHeader.of;
+import static org.apache.juneau.assertions.Assertions.*;
+import static org.apache.juneau.http.header.BasicMediaTypeHeader.of;
 
 import org.junit.*;
 
 @FixMethodOrder(NAME_ASCENDING)
-public class BasicStringRangeArrayHeader_Test {
+public class BasicMediaTypeHeader_Test {
 
 
        private static final String HEADER = "Foo";
@@ -59,14 +61,64 @@ public class BasicStringRangeArrayHeader_Test {
                
c.get().header(of(null,(Supplier<?>)null)).run().assertBody().isEmpty();
                
c.get().header(of(HEADER,()->null)).run().assertBody().isEmpty();
 
-               c.get().header(new 
BasicStringRangeArrayHeader(HEADER,null)).run().assertBody().isEmpty();
-               c.get().header(new 
BasicStringRangeArrayHeader(HEADER,((Supplier<?>)()->null))).run().assertBody().isEmpty();
+               c.get().header(new 
BasicMediaTypeHeader(HEADER,null)).run().assertBody().isEmpty();
+               c.get().header(new 
BasicMediaTypeHeader(HEADER,((Supplier<?>)()->null))).run().assertBody().isEmpty();
 
-               c.get().header(of(HEADER,"foo")).run().assertBody().is("foo");
-               
c.get().header(of(HEADER,"foo,bar")).run().assertBody().is("foo,bar");
+               
c.get().header(of(HEADER,"foo/bar;x=1")).run().assertBody().is("foo/bar;x=1");
+       }
+
+       @Test
+       public void a02_getType() throws Exception {
+               assertString(ContentType.of("text/foo").getType()).is("text");
+               assertString(new ContentType((String)null).getType()).isEmpty();
+       }
+
+       @Test
+       public void a03_getSubType() throws Exception {
+               assertString(ContentType.of("text/foo").getSubType()).is("foo");
+               assertString(new 
ContentType((String)null).getSubType()).is("*");
+       }
+
+       @Test
+       public void a04_hasSubType() throws Exception {
+               
assertBoolean(ContentType.of("text/foo+bar").hasSubType("bar")).isTrue();
+               
assertBoolean(ContentType.of("text/foo+bar").hasSubType("baz")).isFalse();
+               
assertBoolean(ContentType.of("text/foo+bar").hasSubType(null)).isFalse();
+               assertBoolean(new 
ContentType((String)null).hasSubType("bar")).isFalse();
+       }
+
+       @Test
+       public void a05_getSubTypes() throws Exception {
+               
assertObject(ContentType.of("text/foo+bar").getSubTypes()).json().is("['foo','bar']");
+               assertObject(new 
ContentType((String)null).getSubTypes()).json().is("['*']");
+       }
+
+       @Test
+       public void a06_isMeta() throws Exception {
+               
assertBoolean(ContentType.of("text/foo+bar").isMetaSubtype()).isFalse();
+               
assertBoolean(ContentType.of("text/*").isMetaSubtype()).isTrue();
+               assertBoolean(new 
ContentType((String)null).isMetaSubtype()).isTrue();
+       }
 
+       @Test
+       public void a07_match() throws Exception {
+               
assertInteger(ContentType.of("text/foo").match(MediaType.of("text/foo"),true)).is(100000);
+               assertInteger(new 
ContentType((String)null).match(MediaType.of("text/foo"),true)).is(0);
        }
 
+       @Test
+       public void a08_getParameters() throws Exception {
+               
assertObject(ContentType.of("text/foo;x=1;y=2").getParameters()).json().is("['x=1','y=2']");
+               assertObject(new 
ContentType((String)null).getParameters()).json().is("[]");
+       }
+
+       @Test
+       public void a09_getParameter() throws Exception {
+               
assertString(ContentType.of("text/foo;x=1;y=2").getParameter("x")).is("1");
+               
assertString(ContentType.of("text/foo;x=1;y=2").getParameter("z")).isNull();
+               
assertString(ContentType.of("text/foo;x=1;y=2").getParameter(null)).isNull();
+               assertObject(new 
ContentType((String)null).getParameter("x")).isNull();
+       }
 
        
//------------------------------------------------------------------------------------------------------------------
        // Helper methods.
diff --git 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/header/BasicStringRangeArrayHeader_Test.java
 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/header/BasicStringRangeArrayHeader_Test.java
index 44b140c..61a75d9 100644
--- 
a/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/header/BasicStringRangeArrayHeader_Test.java
+++ 
b/juneau-rest/juneau-rest-client-utest/src/test/java/org/apache/juneau/http/header/BasicStringRangeArrayHeader_Test.java
@@ -23,6 +23,7 @@ import org.apache.juneau.rest.annotation.*;
 import org.apache.juneau.rest.client2.*;
 import org.apache.juneau.rest.mock2.*;
 
+import static org.apache.juneau.assertions.Assertions.*;
 import static org.apache.juneau.http.header.BasicStringRangeArrayHeader.of;
 
 import org.junit.*;
@@ -67,6 +68,15 @@ public class BasicStringRangeArrayHeader_Test {
 
        }
 
+       @Test
+       public void a02_getRange() throws Exception {
+               assertString(of(HEADER,"foo,bar").getRange(0)).is("foo");
+       }
+
+       @Test
+       public void a03_getRanges() throws Exception {
+               
assertObject(of(HEADER,"foo,bar").getRanges()).json().is("['foo','bar']");
+       }
 
        
//------------------------------------------------------------------------------------------------------------------
        // Helper methods.

Reply via email to