1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.juneau;
18
19 import static org.apache.juneau.commons.utils.CollectionUtils.*;
20 import static org.junit.jupiter.api.Assertions.*;
21
22 import java.util.*;
23
24 import org.apache.http.*;
25 import org.apache.http.message.*;
26 import org.junit.jupiter.api.*;
27
28
29
30
31 class MediaRange_Test extends TestBase {
32
33 @Test void a01_basic() {
34
35 HeaderElement element = BasicHeaderValueParser.parseHeaderElement("text/html;charset=UTF-8;q=0.9", null);
36
37 var x = new MediaRange(element);
38
39 assertEquals("text", x.getType());
40 assertEquals("html", x.getSubType());
41 assertEquals(0.9f, x.getQValue(), 0.01f);
42 }
43
44 @Test void a02_forEachParameter_fluentChaining() {
45
46 HeaderElement element = BasicHeaderValueParser.parseHeaderElement("text/html;charset=UTF-8;level=1", null);
47
48 var x = new MediaRange(element);
49
50
51 List<String> names = list();
52 MediaRange result = x.forEachParameter(p -> names.add(p.getName()));
53
54
55 assertSame(x, result);
56 assertInstanceOf(MediaRange.class, result);
57
58
59 assertTrue(names.contains("charset"));
60 assertTrue(names.contains("level"));
61 }
62
63 @Test void a03_forEachParameter_withConsumer() {
64
65 HeaderElement element = BasicHeaderValueParser.parseHeaderElement("application/json;charset=UTF-8;version=2", null);
66
67 var x = new MediaRange(element);
68
69
70 var params = new HashMap<String, String>();
71 x.forEachParameter(p -> params.put(p.getName(), p.getValue()));
72
73 assertEquals("UTF-8", params.get("charset"));
74 assertEquals("2", params.get("version"));
75 }
76
77 @Test void a04_forEachParameter_emptyParameters() {
78
79 HeaderElement element = BasicHeaderValueParser.parseHeaderElement("text/plain", null);
80
81 var x = new MediaRange(element);
82
83
84 int[] count = {0};
85 MediaRange result = x.forEachParameter(p -> count[0]++);
86
87 assertSame(x, result);
88 assertEquals(0, count[0]);
89 }
90
91 @Test void a05_fluentChaining_combined() {
92
93 HeaderElement element = BasicHeaderValueParser.parseHeaderElement("text/html;charset=UTF-8;level=1", null);
94
95 var x = new MediaRange(element);
96
97
98 List<String> names1 = list();
99 List<String> names2 = list();
100
101 x.forEachParameter(p -> names1.add(p.getName()))
102 .forEachParameter(p -> names2.add(p.getName()));
103
104
105 assertEquals(names1.size(), names2.size());
106 assertTrue(names1.contains("charset"));
107 assertTrue(names2.contains("charset"));
108 }
109
110 @Test void a06_forEachParameter_withExtensions() {
111
112 HeaderElement element = BasicHeaderValueParser.parseHeaderElement("text/html;q=0.9", null);
113
114 var x = new MediaRange(element);
115
116
117 MediaRange result = x.forEachParameter(p -> {});
118 assertSame(x, result);
119 assertInstanceOf(MediaRange.class, result);
120
121
122 result = x.forEachExtension(e -> {});
123 assertSame(x, result);
124 assertInstanceOf(MediaRange.class, result);
125 }
126 }