21
21
22
22
import android .net .Uri ;
23
23
import androidx .test .ext .junit .runners .AndroidJUnit4 ;
24
+ import com .google .android .exoplayer2 .C ;
24
25
import java .util .HashMap ;
25
26
import java .util .Map ;
26
27
import org .junit .Test ;
31
32
public class DataSpecTest {
32
33
33
34
@ Test
34
- public void createDataSpec_withDefaultValues_setsEmptyHttpRequestParameters () {
35
+ public void createDataSpec_withDefaultValues () {
35
36
Uri uri = Uri .parse ("www.google.com" );
37
+
36
38
DataSpec dataSpec = new DataSpec (uri );
39
+ assertDefaultDataSpec (dataSpec , uri );
40
+
41
+ dataSpec = new DataSpec (uri , /* flags= */ 0 );
42
+ assertDefaultDataSpec (dataSpec , uri );
37
43
38
- assertThat (dataSpec .httpRequestHeaders .isEmpty ()).isTrue ();
44
+ dataSpec = new DataSpec (uri , /* position= */ 0 , C .LENGTH_UNSET , /* key= */ null );
45
+ assertDefaultDataSpec (dataSpec , uri );
39
46
40
- dataSpec = new DataSpec (uri , /*flags= */ 0 );
41
- assertThat (dataSpec .httpRequestHeaders .isEmpty ()).isTrue ();
47
+ dataSpec =
48
+ new DataSpec (uri , /* position= */ 0 , C .LENGTH_UNSET , /* key= */ null , /* flags= */ 0 );
49
+ assertDefaultDataSpec (dataSpec , uri );
50
+
51
+ dataSpec =
52
+ new DataSpec (
53
+ uri ,
54
+ /* position= */ 0 ,
55
+ /* length= */ C .LENGTH_UNSET ,
56
+ /* key= */ null ,
57
+ /* flags= */ 0 ,
58
+ new HashMap <>());
59
+ assertDefaultDataSpec (dataSpec , uri );
42
60
43
61
dataSpec =
44
62
new DataSpec (
45
63
uri ,
46
- /* httpMethod= */ 0 ,
47
- /* httpBody= */ new byte [] {0 , 0 , 0 , 0 },
48
64
/* absoluteStreamPosition= */ 0 ,
49
65
/* position= */ 0 ,
50
- /* length= */ 1 ,
51
- /* key= */ "key" ,
66
+ /* length= */ C . LENGTH_UNSET ,
67
+ null ,
52
68
/* flags= */ 0 );
53
- assertThat (dataSpec .httpRequestHeaders .isEmpty ()).isTrue ();
54
- }
69
+ assertDefaultDataSpec (dataSpec , uri );
55
70
56
- @ Test
57
- public void createDataSpec_setsHttpRequestParameters () {
58
- Map <String , String > httpRequestParameters = new HashMap <>();
59
- httpRequestParameters .put ("key1" , "value1" );
60
- httpRequestParameters .put ("key2" , "value2" );
61
- httpRequestParameters .put ("key3" , "value3" );
71
+ dataSpec =
72
+ new DataSpec (
73
+ uri ,
74
+ DataSpec .HTTP_METHOD_GET ,
75
+ /* httpBody= */ null ,
76
+ /* absoluteStreamPosition= */ 0 ,
77
+ /* position= */ 0 ,
78
+ /* length= */ C .LENGTH_UNSET ,
79
+ /* key= */ null ,
80
+ /* flags= */ 0 );
81
+ assertDefaultDataSpec (dataSpec , uri );
62
82
63
- DataSpec dataSpec =
83
+ dataSpec =
64
84
new DataSpec (
65
- Uri . parse ( "www.google.com" ) ,
66
- /* httpMethod= */ 0 ,
67
- /* httpBody= */ new byte [] { 0 , 0 , 0 , 0 } ,
85
+ uri ,
86
+ DataSpec . HTTP_METHOD_GET ,
87
+ /* httpBody= */ null ,
68
88
/* absoluteStreamPosition= */ 0 ,
69
89
/* position= */ 0 ,
70
- /* length= */ 1 ,
71
- /* key= */ "key" ,
90
+ /* length= */ C . LENGTH_UNSET ,
91
+ /* key= */ null ,
72
92
/* flags= */ 0 ,
73
- httpRequestParameters );
93
+ new HashMap <>());
94
+ assertDefaultDataSpec (dataSpec , uri );
95
+ }
74
96
75
- assertThat (dataSpec .httpRequestHeaders ).isEqualTo (httpRequestParameters );
97
+ @ SuppressWarnings ("deprecation" )
98
+ @ Test
99
+ public void createDataSpec_setsCustomValues () {
100
+ Uri uri = Uri .parse ("www.google.com" );
101
+
102
+ Map <String , String > httpRequestHeaders = createHttpRequestHeaders (3 );
103
+
104
+ byte [] httpBody = new byte [] {0 , 1 , 2 , 3 };
105
+
106
+ DataSpec dataSpec =
107
+ new DataSpec (
108
+ uri ,
109
+ DataSpec .HTTP_METHOD_POST ,
110
+ httpBody ,
111
+ /* absoluteStreamPosition= */ 200 ,
112
+ /* position= */ 150 ,
113
+ /* length= */ 5 ,
114
+ /* key= */ "key" ,
115
+ /* flags= */ DataSpec .FLAG_ALLOW_GZIP ,
116
+ httpRequestHeaders );
117
+
118
+ assertThat (dataSpec .uri ).isEqualTo (uri );
119
+ // uriPositionOffset = absoluteStreamPosition - position
120
+ assertThat (dataSpec .uriPositionOffset ).isEqualTo (50 );
121
+ assertThat (dataSpec .httpMethod ).isEqualTo (DataSpec .HTTP_METHOD_POST );
122
+ assertThat (dataSpec .httpBody ).isEqualTo (httpBody );
123
+ assertThat (dataSpec .httpRequestHeaders ).isEqualTo (httpRequestHeaders );
124
+ assertThat (dataSpec .absoluteStreamPosition ).isEqualTo (200 );
125
+ assertThat (dataSpec .position ).isEqualTo (150 );
126
+ assertThat (dataSpec .length ).isEqualTo (5 );
127
+ assertThat (dataSpec .key ).isEqualTo ("key" );
128
+ assertThat (dataSpec .flags ).isEqualTo (DataSpec .FLAG_ALLOW_GZIP );
129
+ assertHttpRequestHeadersReadOnly (dataSpec );
76
130
}
77
131
78
132
@ Test
79
- public void httpRequestParameters_areReadOnly () {
133
+ public void createDataSpec_setsHttpMethodAndPostBody () {
134
+ Uri uri = Uri .parse ("www.google.com" );
135
+
136
+ byte [] postBody = new byte [] {0 , 1 , 2 , 3 };
80
137
DataSpec dataSpec =
81
138
new DataSpec (
82
- Uri .parse ("www.google.com" ),
83
- /* httpMethod= */ 0 ,
84
- /* httpBody= */ new byte [] {0 , 0 , 0 , 0 },
139
+ uri ,
140
+ postBody ,
85
141
/* absoluteStreamPosition= */ 0 ,
86
142
/* position= */ 0 ,
87
- /* length= */ 1 ,
88
- /* key= */ "key" ,
89
- /* flags= */ 0 ,
90
- /* httpRequestHeaders= */ new HashMap <>());
143
+ /* length= */ C .LENGTH_UNSET ,
144
+ /* key= */ null ,
145
+ /* flags= */ 0 );
146
+ assertThat (dataSpec .httpMethod ).isEqualTo (DataSpec .HTTP_METHOD_POST );
147
+ assertThat (dataSpec .httpBody ).isEqualTo (postBody );
91
148
92
- try {
93
- dataSpec .httpRequestHeaders .put ("key" , "value" );
94
- fail ();
95
- } catch (UnsupportedOperationException expected ) {
96
- // Expected
97
- }
149
+ postBody = new byte [0 ];
150
+ dataSpec =
151
+ new DataSpec (
152
+ uri ,
153
+ postBody ,
154
+ /* absoluteStreamPosition= */ 0 ,
155
+ /* position= */ 0 ,
156
+ /* length= */ C .LENGTH_UNSET ,
157
+ /* key= */ null ,
158
+ /* flags= */ 0 );
159
+ assertThat (dataSpec .httpMethod ).isEqualTo (DataSpec .HTTP_METHOD_POST );
160
+ assertThat (dataSpec .httpBody ).isNull ();
161
+
162
+ postBody = null ;
163
+ dataSpec =
164
+ new DataSpec (
165
+ uri ,
166
+ postBody ,
167
+ /* absoluteStreamPosition= */ 0 ,
168
+ /* position= */ 0 ,
169
+ /* length= */ C .LENGTH_UNSET ,
170
+ /* key= */ null ,
171
+ /* flags= */ 0 );
172
+ assertThat (dataSpec .httpMethod ).isEqualTo (DataSpec .HTTP_METHOD_GET );
173
+ assertThat (dataSpec .httpBody ).isNull ();
98
174
}
99
175
100
176
@ Test
101
177
public void withUri_copiesHttpRequestHeaders () {
102
- Map <String , String > httpRequestProperties = createRequestProperties (5 );
103
- DataSpec dataSpec = createDataSpecWithHeaders (httpRequestProperties );
178
+ Map <String , String > httpRequestHeaders = createHttpRequestHeaders (5 );
179
+ DataSpec dataSpec = createDataSpecWithHeaders (httpRequestHeaders );
104
180
105
181
DataSpec dataSpecCopy = dataSpec .withUri (Uri .parse ("www.new-uri.com" ));
106
182
107
- assertThat (dataSpecCopy .httpRequestHeaders ).isEqualTo (httpRequestProperties );
183
+ assertThat (dataSpecCopy .httpRequestHeaders ).isEqualTo (httpRequestHeaders );
108
184
}
109
185
110
186
@ Test
111
187
public void subrange_copiesHttpRequestHeaders () {
112
- Map <String , String > httpRequestProperties = createRequestProperties (5 );
113
- DataSpec dataSpec = createDataSpecWithHeaders (httpRequestProperties );
188
+ Map <String , String > httpRequestHeaders = createHttpRequestHeaders (5 );
189
+ DataSpec dataSpec = createDataSpecWithHeaders (httpRequestHeaders );
114
190
115
191
DataSpec dataSpecCopy = dataSpec .subrange (2 );
116
192
117
- assertThat (dataSpecCopy .httpRequestHeaders ).isEqualTo (httpRequestProperties );
193
+ assertThat (dataSpecCopy .httpRequestHeaders ).isEqualTo (httpRequestHeaders );
118
194
}
119
195
120
196
@ Test
121
197
public void subrange_withOffsetAndLength_copiesHttpRequestHeaders () {
122
- Map <String , String > httpRequestProperties = createRequestProperties (5 );
123
- DataSpec dataSpec = createDataSpecWithHeaders (httpRequestProperties );
198
+ Map <String , String > httpRequestHeaders = createHttpRequestHeaders (5 );
199
+ DataSpec dataSpec = createDataSpecWithHeaders (httpRequestHeaders );
124
200
125
201
DataSpec dataSpecCopy = dataSpec .subrange (2 , 2 );
126
202
127
- assertThat (dataSpecCopy .httpRequestHeaders ).isEqualTo (httpRequestProperties );
203
+ assertThat (dataSpecCopy .httpRequestHeaders ).isEqualTo (httpRequestHeaders );
128
204
}
129
205
130
206
@ Test
131
207
public void withRequestHeaders_setsCorrectHeaders () {
132
- Map <String , String > httpRequestProperties = createRequestProperties (5 );
133
- DataSpec dataSpec = createDataSpecWithHeaders (httpRequestProperties );
208
+ Map <String , String > httpRequestHeaders = createHttpRequestHeaders (5 );
209
+ DataSpec dataSpec = createDataSpecWithHeaders (httpRequestHeaders );
134
210
135
- Map <String , String > newRequestHeaders = createRequestProperties (5 , 10 );
211
+ Map <String , String > newRequestHeaders = createHttpRequestHeaders (5 , 10 );
136
212
DataSpec dataSpecCopy = dataSpec .withRequestHeaders (newRequestHeaders );
137
213
138
214
assertThat (dataSpecCopy .httpRequestHeaders ).isEqualTo (newRequestHeaders );
139
215
}
140
216
141
217
@ Test
142
218
public void withAdditionalHeaders_setsCorrectHeaders () {
143
- Map <String , String > httpRequestProperties = createRequestProperties (5 );
144
- DataSpec dataSpec = createDataSpecWithHeaders (httpRequestProperties );
145
- Map <String , String > additionalHeaders = createRequestProperties (5 , 10 );
219
+ Map <String , String > httpRequestHeaders = createHttpRequestHeaders (5 );
220
+ DataSpec dataSpec = createDataSpecWithHeaders (httpRequestHeaders );
221
+ Map <String , String > additionalHeaders = createHttpRequestHeaders (5 , 10 );
146
222
// additionalHeaders may overwrite a header key
147
- String existingKey = httpRequestProperties .keySet ().iterator ().next ();
223
+ String existingKey = httpRequestHeaders .keySet ().iterator ().next ();
148
224
additionalHeaders .put (existingKey , "overwritten" );
149
- Map <String , String > expectedHeaders = new HashMap <>(httpRequestProperties );
225
+ Map <String , String > expectedHeaders = new HashMap <>(httpRequestHeaders );
150
226
expectedHeaders .putAll (additionalHeaders );
151
227
152
228
DataSpec dataSpecCopy = dataSpec .withAdditionalHeaders (additionalHeaders );
153
229
154
230
assertThat (dataSpecCopy .httpRequestHeaders ).isEqualTo (expectedHeaders );
155
231
}
156
232
157
- private static Map <String , String > createRequestProperties (int howMany ) {
158
- return createRequestProperties (0 , howMany );
233
+ private static Map <String , String > createHttpRequestHeaders (int howMany ) {
234
+ return createHttpRequestHeaders (0 , howMany );
159
235
}
160
236
161
- private static Map <String , String > createRequestProperties (int from , int to ) {
237
+ private static Map <String , String > createHttpRequestHeaders (int from , int to ) {
162
238
assertThat (from ).isLessThan (to );
163
239
164
240
Map <String , String > httpRequestParameters = new HashMap <>();
@@ -169,7 +245,7 @@ private static Map<String, String> createRequestProperties(int from, int to) {
169
245
return httpRequestParameters ;
170
246
}
171
247
172
- private static DataSpec createDataSpecWithHeaders (Map <String , String > httpRequestProperties ) {
248
+ private static DataSpec createDataSpecWithHeaders (Map <String , String > httpRequestHeaders ) {
173
249
return new DataSpec (
174
250
Uri .parse ("www.google.com" ),
175
251
/* httpMethod= */ 0 ,
@@ -179,6 +255,30 @@ private static DataSpec createDataSpecWithHeaders(Map<String, String> httpReques
179
255
/* length= */ 1 ,
180
256
/* key= */ "key" ,
181
257
/* flags= */ 0 ,
182
- httpRequestProperties );
258
+ httpRequestHeaders );
259
+ }
260
+
261
+ @ SuppressWarnings ("deprecation" )
262
+ private static void assertDefaultDataSpec (DataSpec dataSpec , Uri uri ) {
263
+ assertThat (dataSpec .uri ).isEqualTo (uri );
264
+ assertThat (dataSpec .uriPositionOffset ).isEqualTo (0 );
265
+ assertThat (dataSpec .httpMethod ).isEqualTo (DataSpec .HTTP_METHOD_GET );
266
+ assertThat (dataSpec .httpBody ).isNull ();
267
+ assertThat (dataSpec .httpRequestHeaders ).isEmpty ();
268
+ assertThat (dataSpec .absoluteStreamPosition ).isEqualTo (0 );
269
+ assertThat (dataSpec .position ).isEqualTo (0 );
270
+ assertThat (dataSpec .length ).isEqualTo (C .LENGTH_UNSET );
271
+ assertThat (dataSpec .key ).isNull ();
272
+ assertThat (dataSpec .flags ).isEqualTo (0 );
273
+ assertHttpRequestHeadersReadOnly (dataSpec );
274
+ }
275
+
276
+ private static void assertHttpRequestHeadersReadOnly (DataSpec dataSpec ) {
277
+ try {
278
+ dataSpec .httpRequestHeaders .put ("key" , "value" );
279
+ fail ();
280
+ } catch (UnsupportedOperationException expected ) {
281
+ // Expected
282
+ }
183
283
}
184
284
}
0 commit comments