summaryrefslogtreecommitdiffstats
path: root/simple/simple-http/src/test/java/org/simpleframework/http/parse/ListParserTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'simple/simple-http/src/test/java/org/simpleframework/http/parse/ListParserTest.java')
-rw-r--r--simple/simple-http/src/test/java/org/simpleframework/http/parse/ListParserTest.java97
1 files changed, 97 insertions, 0 deletions
diff --git a/simple/simple-http/src/test/java/org/simpleframework/http/parse/ListParserTest.java b/simple/simple-http/src/test/java/org/simpleframework/http/parse/ListParserTest.java
new file mode 100644
index 0000000..100bf27
--- /dev/null
+++ b/simple/simple-http/src/test/java/org/simpleframework/http/parse/ListParserTest.java
@@ -0,0 +1,97 @@
+package org.simpleframework.http.parse;
+
+import junit.framework.TestCase;
+
+public class ListParserTest extends TestCase {
+
+ private ValueParser list;
+
+ protected void setUp() {
+ list = new ValueParser();
+ }
+
+ public void testEmpty() {
+ assertEquals(0, list.list().size());
+ }
+
+ public void testQvalue() {
+ list.parse("ISO-8859-1,utf-8;q=0.7,*;q=0.7");
+ assertEquals(list.list().get(0), "ISO-8859-1");
+ assertEquals(list.list().get(1), "utf-8");
+ assertEquals(list.list().get(2), "*");
+ }
+
+ public void testPlain() {
+ list.parse("en-gb");
+ assertEquals("en-gb", list.list().get(0));
+
+ list.parse("en");
+ assertEquals("en", list.list().get(0));
+ }
+
+ public void testList() {
+ list.parse("en-gb, en-us");
+ assertEquals(2, list.list().size());
+ assertEquals("en-gb", list.list().get(0));
+ assertEquals("en-us", list.list().get(1));
+ }
+
+ public void testOrder() {
+ list.parse("en-gb, en-us");
+ assertEquals(2, list.list().size());
+ assertEquals("en-gb", list.list().get(0));
+ assertEquals("en-us", list.list().get(1));
+
+ list.parse("da, en-gb;q=0.8, en;q=0.7");
+ assertEquals("da", list.list().get(0));
+ assertEquals("en-gb", list.list().get(1));
+ assertEquals("en", list.list().get(2));
+
+ list.parse("fr;q=0.1, en-us;q=0.4, en-gb; q=0.8, en;q=0.7");
+ assertEquals("en-gb", list.list().get(0));
+ assertEquals("en", list.list().get(1));
+ assertEquals("en-us", list.list().get(2));
+ assertEquals("fr", list.list().get(3));
+
+ list.parse("en;q=0.2, en-us;q=1.0, en-gb");
+ assertEquals("en-gb", list.list().get(0));
+ assertEquals("en-us", list.list().get(1));
+ assertEquals("en", list.list().get(2));
+ }
+
+ public void testRange() {
+ list.parse("image/gif, image/jpeg, text/html");
+ assertEquals(3, list.list().size());
+ assertEquals("image/gif", list.list().get(0));
+ assertEquals("text/html", list.list().get(2));
+
+ list.parse("image/gif;q=1.0, image/jpeg;q=0.8, image/png; q=1.0,*;q=0.1");
+ assertEquals("image/gif", list.list().get(0));
+ assertEquals("image/png", list.list().get(1));
+ assertEquals("image/jpeg", list.list().get(2));
+
+ list.parse("gzip;q=1.0, identity; q=0.5, *;q=0");
+ assertEquals("gzip", list.list().get(0));
+ assertEquals("identity", list.list().get(1));
+ }
+
+ public void testFlexibility() {
+ list.parse("last; quantity=1;q=0.001, first; text=\"a, b, c, d\";q=0.4");
+ assertEquals(2, list.list().size());
+ assertEquals("first; text=\"a, b, c, d\"", list.list().get(0));
+ assertEquals("last; quantity=1", list.list().get(1));
+
+ list.parse("image/gif, , image/jpeg, image/png;q=0.8, *");
+ assertEquals(4, list.list().size());
+ assertEquals("image/gif", list.list().get(0));
+ assertEquals("image/jpeg", list.list().get(1));
+ assertEquals("*", list.list().get(2));
+ assertEquals("image/png", list.list().get(3));
+
+ list.parse("first=\"\\\"a, b, c, d\\\", a, b, c, d\", third=\"a\";q=0.9,,second=2");
+ assertEquals(3, list.list().size());
+ assertEquals("first=\"\\\"a, b, c, d\\\", a, b, c, d\"", list.list().get(0));
+ assertEquals("second=2", list.list().get(1));
+ assertEquals("third=\"a\"", list.list().get(2));
+ }
+}