3
3
//!
4
4
//! In particular we test the tedious size_hint and exact size correctness.
5
5
6
+ #[ path = "../wrappers.rs" ]
7
+ mod wrappers;
8
+
6
9
use quickcheck as qc;
7
10
use std:: default:: Default ;
8
11
use std:: num:: Wrapping ;
@@ -24,14 +27,17 @@ use itertools::free::{
24
27
put_back,
25
28
put_back_n,
26
29
rciter,
27
- zip,
28
30
zip_eq,
29
31
} ;
30
32
33
+ use wrappers:: free:: zip;
34
+
31
35
use rand:: Rng ;
32
36
use rand:: seq:: SliceRandom ;
33
37
use quickcheck:: TestResult ;
34
38
39
+ use crate :: wrappers:: Ext ;
40
+
35
41
/// Trait for size hint modifier types
36
42
trait HintKind : Copy + Send + qc:: Arbitrary {
37
43
fn loosen_bounds ( & self , org_hint : ( usize , Option < usize > ) ) -> ( usize , Option < usize > ) ;
@@ -635,12 +641,12 @@ quickcheck! {
635
641
exact_size_for_this( a. iter( ) . interleave_shortest( & b) )
636
642
}
637
643
fn size_intersperse( a: Iter <i16 >, x: i16 ) -> bool {
638
- correct_size_hint( a. intersperse ( x) )
644
+ correct_size_hint( a. intersperse_wrap ( x) )
639
645
}
640
646
fn equal_intersperse( a: Vec <i32 >, x: i32 ) -> bool {
641
647
let mut inter = false ;
642
648
let mut i = 0 ;
643
- for elt in a. iter( ) . cloned( ) . intersperse ( x) {
649
+ for elt in a. iter( ) . cloned( ) . intersperse_wrap ( x) {
644
650
if inter {
645
651
if elt != x { return false }
646
652
} else {
@@ -1243,8 +1249,8 @@ quickcheck! {
1243
1249
return TestResult :: discard( ) ;
1244
1250
}
1245
1251
1246
- let min = cloned( & a) . fold1 ( f64 :: min) ;
1247
- let max = cloned( & a) . fold1 ( f64 :: max) ;
1252
+ let min = cloned( & a) . fold1_wrap ( f64 :: min) ;
1253
+ let max = cloned( & a) . fold1_wrap ( f64 :: max) ;
1248
1254
1249
1255
let minmax = cloned( & a) . minmax( ) ;
1250
1256
let expected = match a. len( ) {
@@ -1405,7 +1411,7 @@ quickcheck! {
1405
1411
. map( |i| ( i % modulo, i) )
1406
1412
. into_group_map( )
1407
1413
. into_iter( )
1408
- . map( |( key, vals) | ( key, vals. into_iter( ) . fold1 ( |acc, val| acc + val) . unwrap( ) ) )
1414
+ . map( |( key, vals) | ( key, vals. into_iter( ) . fold1_wrap ( |acc, val| acc + val) . unwrap( ) ) )
1409
1415
. collect:: <HashMap <_, _>>( ) ;
1410
1416
assert_eq!( lookup, group_map_lookup) ;
1411
1417
0 commit comments