@@ -1141,25 +1141,30 @@ mod test_set {
11411141
11421142 #[ test]
11431143 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( ) ;
11521147
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 ) ) }
11551150
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( ) ) ;
11611157 }
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 ] ) ;
11631168 }
11641169
11651170 #[ test]
0 commit comments