@@ -319,6 +319,42 @@ fn test_is_subset() {
319
319
assert_eq ! ( is_subset( & [ 99 , 100 ] , & large) , false ) ;
320
320
}
321
321
322
+ #[ test]
323
+ fn test_is_superset ( ) {
324
+ fn is_superset ( a : & [ i32 ] , b : & [ i32 ] ) -> bool {
325
+ let set_a = BTreeSet :: from_iter ( a. iter ( ) ) ;
326
+ let set_b = BTreeSet :: from_iter ( b. iter ( ) ) ;
327
+ set_a. is_superset ( & set_b)
328
+ }
329
+
330
+ assert_eq ! ( is_superset( & [ ] , & [ ] ) , true ) ;
331
+ assert_eq ! ( is_superset( & [ ] , & [ 1 , 2 ] ) , false ) ;
332
+ assert_eq ! ( is_superset( & [ 0 ] , & [ 1 , 2 ] ) , false ) ;
333
+ assert_eq ! ( is_superset( & [ 1 ] , & [ 1 , 2 ] ) , false ) ;
334
+ assert_eq ! ( is_superset( & [ 4 ] , & [ 1 , 2 ] ) , false ) ;
335
+ assert_eq ! ( is_superset( & [ 1 , 4 ] , & [ 1 , 2 ] ) , false ) ;
336
+ assert_eq ! ( is_superset( & [ 1 , 2 ] , & [ 1 , 2 ] ) , true ) ;
337
+ assert_eq ! ( is_superset( & [ 1 , 2 , 3 ] , & [ 1 , 3 ] ) , true ) ;
338
+ assert_eq ! ( is_superset( & [ 1 , 2 , 3 ] , & [ ] ) , true ) ;
339
+ assert_eq ! ( is_superset( & [ -1 , 1 , 2 , 3 ] , & [ -1 , 3 ] ) , true ) ;
340
+
341
+ if cfg ! ( miri) {
342
+ // Miri is too slow
343
+ return ;
344
+ }
345
+
346
+ let large = Vec :: from_iter ( 0 ..100 ) ;
347
+ assert_eq ! ( is_superset( & [ ] , & large) , false ) ;
348
+ assert_eq ! ( is_superset( & large, & [ ] ) , true ) ;
349
+ assert_eq ! ( is_superset( & large, & [ 1 ] ) , true ) ;
350
+ assert_eq ! ( is_superset( & large, & [ 50 , 99 ] ) , true ) ;
351
+ assert_eq ! ( is_superset( & large, & [ 100 ] ) , false ) ;
352
+ assert_eq ! ( is_superset( & large, & [ 0 , 99 ] ) , true ) ;
353
+ assert_eq ! ( is_superset( & [ -1 ] , & large) , false ) ;
354
+ assert_eq ! ( is_superset( & [ 0 ] , & large) , false ) ;
355
+ assert_eq ! ( is_superset( & [ 99 , 100 ] , & large) , false ) ;
356
+ }
357
+
322
358
#[ test]
323
359
fn test_retain ( ) {
324
360
let mut set = BTreeSet :: from ( [ 1 , 2 , 3 , 4 , 5 , 6 ] ) ;
@@ -391,6 +427,26 @@ fn test_clear() {
391
427
x. clear ( ) ;
392
428
assert ! ( x. is_empty( ) ) ;
393
429
}
430
+ #[ test]
431
+ fn test_remove ( ) {
432
+ let mut x = BTreeSet :: new ( ) ;
433
+ assert ! ( x. is_empty( ) ) ;
434
+
435
+ x. insert ( 1 ) ;
436
+ x. insert ( 2 ) ;
437
+ x. insert ( 3 ) ;
438
+ x. insert ( 4 ) ;
439
+
440
+ assert_eq ! ( x. remove( & 2 ) , true ) ;
441
+ assert_eq ! ( x. remove( & 0 ) , false ) ;
442
+ assert_eq ! ( x. remove( & 5 ) , false ) ;
443
+ assert_eq ! ( x. remove( & 1 ) , true ) ;
444
+ assert_eq ! ( x. remove( & 2 ) , false ) ;
445
+ assert_eq ! ( x. remove( & 3 ) , true ) ;
446
+ assert_eq ! ( x. remove( & 4 ) , true ) ;
447
+ assert_eq ! ( x. remove( & 4 ) , false ) ;
448
+ assert ! ( x. is_empty( ) ) ;
449
+ }
394
450
395
451
#[ test]
396
452
fn test_zip ( ) {
0 commit comments