1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.juneau.http;
18
19 import static org.apache.juneau.TestUtils.*;
20 import static org.apache.juneau.commons.utils.CollectionUtils.*;
21 import static org.apache.juneau.http.HttpHeaders.*;
22 import static org.apache.juneau.http.HttpParts.*;
23 import static org.apache.juneau.junit.bct.BctAssertions.*;
24 import static org.junit.jupiter.api.Assertions.*;
25
26 import java.util.*;
27 import java.util.function.*;
28
29 import org.apache.http.*;
30 import org.apache.juneau.*;
31 import org.apache.juneau.http.header.*;
32 import org.apache.juneau.http.part.*;
33 import org.apache.juneau.marshaller.*;
34 import org.junit.jupiter.api.*;
35
36 class BasicPart_Test extends TestBase {
37
38 @Test void a01_ofPair() {
39 var x = basicPart("Foo:bar");
40 assertEquals("Foo", x.getName());
41 assertEquals("bar", x.getValue());
42
43 x = basicPart(" Foo : bar ");
44 assertEquals("Foo", x.getName());
45 assertEquals("bar", x.getValue());
46
47 x = basicPart(" Foo : bar : baz ");
48 assertEquals("Foo", x.getName());
49 assertEquals("bar : baz", x.getValue());
50
51 x = basicPart("Foo");
52 assertEquals("Foo", x.getName());
53 assertEquals("", x.getValue());
54
55 assertNull(basicPart((String)null));
56 }
57
58 @Test void a02_of() {
59 var x = part("Foo","bar");
60 assertString("Foo=bar", x);
61 x = part("Foo",()->"bar");
62 assertString("Foo=bar", x);
63 }
64
65 @Test void a03_cast() {
66 var x1 = part("X1","1");
67 var x2 = serializedPart("X2","2");
68 var x3 = header("X3","3");
69 var x4 = serializedHeader("X4","4");
70 Map.Entry<String,Object> x5 = m("X5",(Object)"5").entrySet().iterator().next();
71 org.apache.http.message.BasicNameValuePair x6 = new org.apache.http.message.BasicNameValuePair("X6","6");
72 NameValuePairable x7 = () -> part("X7","7");
73 Headerable x8 = () -> header("X8","8");
74
75 assertTypeAndJson(NameValuePair.class, "'X1=1'", BasicPart.cast(x1));
76 assertTypeAndJson(NameValuePair.class, "'X2=2'", BasicPart.cast(x2));
77 assertTypeAndJson(NameValuePair.class, "'X3: 3'", BasicPart.cast(x3));
78 assertTypeAndJson(NameValuePair.class, "'X4: 4'", BasicPart.cast(x4));
79 assertTypeAndJson(NameValuePair.class, "'X5=5'", BasicPart.cast(x5));
80 assertTypeAndJson(NameValuePair.class, "{name:'X6',value:'6'}", BasicPart.cast(x6));
81 assertTypeAndJson(NameValuePair.class, "'X7=7'", BasicPart.cast(x7));
82 assertTypeAndJson(NameValuePair.class, "'X8=8'", BasicPart.cast(x8));
83
84 assertThrowsWithMessage(RuntimeException.class, "Object of type java.lang.String could not be converted to a Part.", ()->BasicPart.cast("X"));
85 assertThrowsWithMessage(RuntimeException.class, "Object of type null could not be converted to a Part.", ()->BasicPart.cast(null));
86
87 assertTrue(BasicPart.canCast(x1));
88 assertTrue(BasicPart.canCast(x2));
89 assertTrue(BasicPart.canCast(x3));
90 assertTrue(BasicPart.canCast(x4));
91 assertTrue(BasicPart.canCast(x5));
92 assertTrue(BasicPart.canCast(x6));
93 assertTrue(BasicPart.canCast(x7));
94
95 assertFalse(BasicPart.canCast("X"));
96 assertFalse(BasicPart.canCast(null));
97 }
98
99 @Test void a04_asHeader() {
100 var x = part("X1","1");
101 assertString("X1: 1", x.asHeader());
102 }
103
104 @Test void a05_assertions() {
105 var x = part("X1","1");
106 x.assertName().is("X1").assertValue().is("1");
107 }
108
109
110
111
112
113 private static BasicHeader header(String name, Object val) {
114 return basicHeader(name, val);
115 }
116
117 private static BasicPart part(String name, Supplier<?> val) {
118 return basicPart(name, val);
119 }
120
121 private static BasicPart part(String name, Object val) {
122 return basicPart(name, val);
123 }
124
125
126
127
128 private static void assertTypeAndJson(Class<?> c, String json, Object value) {
129 assertInstanceOf(c, value);
130 assertEquals(json, Json5.DEFAULT.write(value));
131 }
132 }