@@ -1141,25 +1141,30 @@ mod test_set {
1141
1141
1142
1142
#[ test]
1143
1143
fn test_difference( ) {
1144
- let mut a = TreeSet :: new( ) ;
1145
- let mut b = TreeSet :: new( ) ;
1146
-
1147
- fail_unless!( a. insert( 1 ) ) ;
1148
- fail_unless!( a. insert( 3 ) ) ;
1149
- fail_unless!( a. insert( 5 ) ) ;
1150
- fail_unless!( a. insert( 9 ) ) ;
1151
- fail_unless!( a. insert( 11 ) ) ;
1144
+ fn check_difference( a: & [ int] , b: & [ int] , expected: & [ int] ) {
1145
+ let mut set_a = TreeSet :: new( ) ;
1146
+ let mut set_b = TreeSet :: new( ) ;
1152
1147
1153
- fail_unless!( b . insert( 3 ) ) ;
1154
- fail_unless!( b . insert( 9 ) ) ;
1148
+ for a . each |x| { fail_unless!( set_a . insert( * x ) ) }
1149
+ for b . each |y| { fail_unless!( set_b . insert( * y ) ) }
1155
1150
1156
- let mut i = 0 ;
1157
- let expected = [ 1 , 5 , 11 ] ;
1158
- for a. difference( & b) |x| {
1159
- fail_unless!( * x == expected[ i] ) ;
1160
- i += 1
1151
+ let mut i = 0 ;
1152
+ for set_a. difference( & set_b) |x| {
1153
+ fail_unless!( * x == expected[ i] ) ;
1154
+ i += 1 ;
1155
+ }
1156
+ fail_unless!( i == expected. len( ) ) ;
1161
1157
}
1162
- fail_unless!( i == expected. len( ) ) ;
1158
+
1159
+ check_difference( [ ] , [ ] , [ ] ) ;
1160
+ check_difference( [ 1 , 12 ] , [ ] , [ 1 , 12 ] ) ;
1161
+ check_difference( [ ] , [ 1 , 2 , 3 , 9 ] , [ ] ) ;
1162
+ check_difference( [ 1 , 3 , 5 , 9 , 11 ] ,
1163
+ [ 3 , 9 ] ,
1164
+ [ 1 , 5 , 11 ] ) ;
1165
+ check_difference( [ -5 , 11 , 22 , 33 , 40 , 42 ] ,
1166
+ [ -12 , -5 , 14 , 23 , 34 , 38 , 39 , 50 ] ,
1167
+ [ 11 , 22 , 33 , 40 , 42 ] ) ;
1163
1168
}
1164
1169
1165
1170
#[ test]
0 commit comments