@@ -319,6 +319,42 @@ fn test_is_subset() {
319319 assert_eq ! ( is_subset( & [ 99 , 100 ] , & large) , false ) ;
320320}
321321
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+
322358#[ test]
323359fn test_retain ( ) {
324360 let mut set = BTreeSet :: from ( [ 1 , 2 , 3 , 4 , 5 , 6 ] ) ;
@@ -391,6 +427,26 @@ fn test_clear() {
391427 x. clear ( ) ;
392428 assert ! ( x. is_empty( ) ) ;
393429}
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+ }
394450
395451#[ test]
396452fn test_zip ( ) {
0 commit comments