@@ -245,6 +245,42 @@ let overlap_3 () =
245
245
| Some (s , _ ) -> Alcotest. (check string " data is good" " CCCCCCCCCCBBBBBBAAAAAAAA"
246
246
(Cstruct. to_string s))
247
247
248
+ let overlap_4 () =
249
+ let r = insert_seg empty (Sequence. of_int32 16l , false , Cstruct. of_string " AAAAAAAA" ) in
250
+ let r = insert_seg r (Sequence. of_int32 8l , false , Cstruct. of_string " BBBBBB" ) in
251
+ let r = insert_seg r (Sequence. of_int32 6l , false , Cstruct. of_string " CCCCCCCCCCCCCCCC" ) in
252
+ let r = insert_seg r (Sequence. of_int32 0l , false , Cstruct. of_string " DDDDDDDD" ) in
253
+ let r', s = maybe_take r Sequence. zero in
254
+ Alcotest. (check int " reassembly queue is now empty" 0 (length r'));
255
+ match s with
256
+ | None -> Alcotest. fail " should be some data"
257
+ | Some (s , _ ) -> Alcotest. (check string " data is good" " DDDDDDDDCCCCCCCCCCCCCCAA"
258
+ (Cstruct. to_string s))
259
+
260
+ let overlap_5 () =
261
+ let r = insert_seg empty (Sequence. of_int32 0l , false , Cstruct. of_string " AAAAAAAAAAAAAAAA" ) in
262
+ let r = insert_seg r (Sequence. of_int32 4l , false , Cstruct. of_string " BBBBBB" ) in
263
+ let r = insert_seg r (Sequence. of_int32 10l , false , Cstruct. of_string " CCCCCC" ) in
264
+ let r = insert_seg r (Sequence. of_int32 12l , false , Cstruct. of_string " DDDDDD" ) in
265
+ let r = insert_seg r (Sequence. of_int32 14l , false , Cstruct. of_string " EE" ) in
266
+ let r', s = maybe_take r Sequence. zero in
267
+ Alcotest. (check int " reassembly queue is now empty" 0 (length r'));
268
+ match s with
269
+ | None -> Alcotest. fail " should be some data"
270
+ | Some (s , _ ) -> Alcotest. (check string " data is good" " AAAABBBBBBCCDDEEDD"
271
+ (Cstruct. to_string s))
272
+
273
+ let overlap_6 () =
274
+ let r = insert_seg empty (Sequence. of_int32 0l , false , Cstruct. of_string " AAAAAAAA" ) in
275
+ let r = insert_seg r (Sequence. of_int32 10l , false , Cstruct. of_string " BBBBBB" ) in
276
+ let r = insert_seg r (Sequence. of_int32 8l , false , Cstruct. of_string " DDDD" ) in
277
+ let r', s = maybe_take r Sequence. zero in
278
+ Alcotest. (check int " reassembly queue is now empty" 0 (length r'));
279
+ match s with
280
+ | None -> Alcotest. fail " should be some data"
281
+ | Some (s , _ ) -> Alcotest. (check string " data is good" " AAAAAAAADDDDBBBB"
282
+ (Cstruct. to_string s))
283
+
248
284
let regr_187 () =
249
285
let r = insert_seg empty (Sequence. of_int32 16l , false , Cstruct. of_string " 000002om" ) in
250
286
let r = insert_seg r (Sequence. of_int32 8l , false , Cstruct. of_string " 001001nn001002nm001003nl" ) in
@@ -286,6 +322,9 @@ let tests = [
286
322
" overlap 1" , `Quick , overlap_1 ;
287
323
" overlap 2" , `Quick , overlap_2 ;
288
324
" overlap 3" , `Quick , overlap_3 ;
325
+ " overlap 4" , `Quick , overlap_4 ;
326
+ " overlap 5" , `Quick , overlap_5 ;
327
+ " overlap 6" , `Quick , overlap_6 ;
289
328
" regression 187" , `Quick , regr_187 ;
290
329
" regression 188" , `Quick , regr_188 ;
291
330
]
0 commit comments