@@ -130,6 +130,46 @@ quickcheck_limit! {
130
130
true
131
131
}
132
132
133
+ fn insert_sorted_by( insert: Vec <( u32 , u32 ) >) -> bool {
134
+ let mut hmap = HashMap :: new( ) ;
135
+ let mut map = IndexMap :: new( ) ;
136
+ let mut map2 = IndexMap :: new( ) ;
137
+ for & ( key, value) in & insert {
138
+ hmap. insert( key, value) ;
139
+ map. insert_sorted_by( key, value, |other, _| key. cmp( other) ) ;
140
+ match map2. entry( key) {
141
+ Entry :: Occupied ( e) => * e. into_mut( ) = value,
142
+ Entry :: Vacant ( e) => {
143
+ e. insert_sorted_by( value, |other, _| key. cmp( other) ) ;
144
+ }
145
+ }
146
+ }
147
+ let hsorted = hmap. iter( ) . sorted_by( |( key1, _) , ( key2, _) | key2. cmp( key1) ) ;
148
+ itertools:: assert_equal( hsorted, & map) ;
149
+ itertools:: assert_equal( & map, & map2) ;
150
+ true
151
+ }
152
+
153
+ fn insert_sorted_by_key( insert: Vec <( i32 , u32 ) >) -> bool {
154
+ let mut hmap = HashMap :: new( ) ;
155
+ let mut map = IndexMap :: new( ) ;
156
+ let mut map2 = IndexMap :: new( ) ;
157
+ for & ( key, value) in & insert {
158
+ hmap. insert( key, value) ;
159
+ map. insert_sorted_by_key( key, value, |& k, _| ( k. unsigned_abs( ) , k) ) ;
160
+ match map2. entry( key) {
161
+ Entry :: Occupied ( e) => * e. into_mut( ) = value,
162
+ Entry :: Vacant ( e) => {
163
+ e. insert_sorted_by_key( value, |& k, _| ( k. unsigned_abs( ) , k) ) ;
164
+ }
165
+ }
166
+ }
167
+ let hsorted = hmap. iter( ) . sorted_by_key( |( & k, _) | ( k. unsigned_abs( ) , k) ) ;
168
+ itertools:: assert_equal( hsorted, & map) ;
169
+ itertools:: assert_equal( & map, & map2) ;
170
+ true
171
+ }
172
+
133
173
fn replace_index( insert: Vec <u8 >, index: u8 , new_key: u8 ) -> TestResult {
134
174
if insert. is_empty( ) {
135
175
return TestResult :: discard( ) ;
0 commit comments