@@ -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 ] ) ;
0 commit comments