Skip to content

Commit 245b901

Browse files
committed
test(decompression-plz): dstruct methods
1 parent 91b4ed7 commit 245b901

File tree

1 file changed

+158
-2
lines changed

1 file changed

+158
-2
lines changed

decompression-plz/src/dstruct.rs

Lines changed: 158 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -75,8 +75,7 @@ impl<'a> DecompressionStruct<'a> {
7575
}
7676

7777
pub fn is_extra_compressed(&self) -> bool {
78-
let last_encoding = self.last_encoding();
79-
is_compressed(self.extra(), last_encoding)
78+
is_compressed(self.extra(), self.last_encoding())
8079
}
8180

8281
pub fn try_decompress_extra(
@@ -137,3 +136,160 @@ impl<'a> DecompressionStruct<'a> {
137136
}
138137
}
139138
}
139+
140+
#[cfg(test)]
141+
mod tests {
142+
use crate::tests::{
143+
all_encoding_info_multi_header, all_encoding_info_single_header,
144+
};
145+
146+
use super::*;
147+
148+
#[test]
149+
fn test_decompression_struct_last_encoding_single_value() {
150+
let mut encoding_info =
151+
vec![EncodingInfo::new(0, vec![ContentEncoding::Gzip])];
152+
let mut buf = BytesMut::new();
153+
let decompression_struct = DecompressionStruct::new(
154+
&[],
155+
None,
156+
&mut encoding_info,
157+
(&mut buf).writer(),
158+
);
159+
assert_eq!(
160+
decompression_struct.last_encoding(),
161+
&ContentEncoding::Gzip
162+
);
163+
}
164+
165+
#[test]
166+
fn test_decompression_struct_last_encoding_single_header() {
167+
let mut encoding_info = all_encoding_info_single_header();
168+
let mut buf = BytesMut::new();
169+
let decompression_struct = DecompressionStruct::new(
170+
&[],
171+
None,
172+
&mut encoding_info,
173+
(&mut buf).writer(),
174+
);
175+
assert_eq!(
176+
decompression_struct.last_encoding(),
177+
&ContentEncoding::Identity
178+
);
179+
}
180+
181+
#[test]
182+
fn test_decompression_struct_last_encoding_multi_header() {
183+
let mut encoding_info = all_encoding_info_multi_header();
184+
let mut buf = BytesMut::new();
185+
let decompression_struct = DecompressionStruct::new(
186+
&[],
187+
None,
188+
&mut encoding_info,
189+
(&mut buf).writer(),
190+
);
191+
assert_eq!(
192+
decompression_struct.last_encoding(),
193+
&ContentEncoding::Identity
194+
);
195+
}
196+
197+
#[test]
198+
fn test_push_last_encoding_single_value() {
199+
let mut encoding_info =
200+
vec![EncodingInfo::new(0, vec![ContentEncoding::Gzip])];
201+
202+
let mut buf = BytesMut::new();
203+
let mut decompression_struct = DecompressionStruct::new(
204+
&[],
205+
None,
206+
&mut encoding_info,
207+
(&mut buf).writer(),
208+
);
209+
decompression_struct.push_last_encoding(ContentEncoding::Brotli);
210+
let to_verify = vec![EncodingInfo::new(
211+
0,
212+
vec![ContentEncoding::Gzip, ContentEncoding::Brotli],
213+
)];
214+
215+
assert_eq!(decompression_struct.encoding_info, to_verify);
216+
}
217+
218+
#[test]
219+
fn test_push_last_encoding_single_header() {
220+
let mut encoding_info = all_encoding_info_single_header();
221+
let mut buf = BytesMut::new();
222+
let mut decompression_struct = DecompressionStruct::new(
223+
&[],
224+
None,
225+
&mut encoding_info,
226+
(&mut buf).writer(),
227+
);
228+
decompression_struct.push_last_encoding(ContentEncoding::Brotli);
229+
let to_verify = vec![EncodingInfo::new(
230+
0,
231+
vec![
232+
ContentEncoding::Brotli,
233+
ContentEncoding::Deflate,
234+
ContentEncoding::Gzip,
235+
ContentEncoding::Zstd,
236+
ContentEncoding::Identity,
237+
ContentEncoding::Brotli,
238+
],
239+
)];
240+
241+
assert_eq!(decompression_struct.encoding_info, to_verify);
242+
}
243+
244+
#[test]
245+
fn test_push_last_encoding_multi_header() {
246+
let mut encoding_info = all_encoding_info_multi_header();
247+
let mut buf = BytesMut::new();
248+
let mut decompression_struct = DecompressionStruct::new(
249+
&[],
250+
None,
251+
&mut encoding_info,
252+
(&mut buf).writer(),
253+
);
254+
decompression_struct.push_last_encoding(ContentEncoding::Brotli);
255+
let to_verify = vec![
256+
EncodingInfo::new(0, vec![ContentEncoding::Brotli]),
257+
EncodingInfo::new(1, vec![ContentEncoding::Deflate]),
258+
EncodingInfo::new(2, vec![ContentEncoding::Gzip]),
259+
EncodingInfo::new(3, vec![ContentEncoding::Zstd]),
260+
EncodingInfo::new(
261+
4,
262+
vec![ContentEncoding::Identity, ContentEncoding::Brotli],
263+
),
264+
];
265+
266+
assert_eq!(decompression_struct.encoding_info, to_verify);
267+
}
268+
269+
#[test]
270+
fn test_dstruct_is_encodings_empty_true() {
271+
let mut encoding_info = vec![EncodingInfo::new(0, vec![])];
272+
let mut buf = BytesMut::new();
273+
let decompression_struct = DecompressionStruct::new(
274+
&[],
275+
None,
276+
&mut encoding_info,
277+
(&mut buf).writer(),
278+
);
279+
assert!(decompression_struct.is_encodings_empty());
280+
}
281+
282+
#[test]
283+
fn test_dstruct_is_encodings_empty_false() {
284+
let mut encoding_info =
285+
vec![EncodingInfo::new(0, vec![ContentEncoding::Gzip])];
286+
let mut buf = BytesMut::new();
287+
let decompression_struct = DecompressionStruct::new(
288+
&[],
289+
None,
290+
&mut encoding_info,
291+
(&mut buf).writer(),
292+
);
293+
assert!(!decompression_struct.is_encodings_empty());
294+
}
295+
}

0 commit comments

Comments
 (0)