#![cfg(feature = "NSSet")] #![cfg(feature = "NSString")] use crate::{ns_string, NSMutableSet, NSMutableString}; #[test] fn test_insert() { let set = NSMutableSet::new(); assert!(set.is_empty()); set.addObject(ns_string!("one")); set.addObject(ns_string!("one")); assert_eq!(set.count(), 1); set.addObject(ns_string!("two")); assert_eq!(set.count(), 2); } #[test] #[cfg(feature = "NSValue")] fn test_insert_number() { use crate::NSNumber; let set = NSMutableSet::new(); set.addObject(&*NSNumber::new_u32(42)); set.addObject(&*NSNumber::new_u32(42)); assert_eq!(set.count(), 1); } #[test] fn test_remove() { let strs = [ns_string!("one"), ns_string!("two"), ns_string!("three")]; let set = NSMutableSet::from_slice(&strs); assert!(set.containsObject(ns_string!("one"))); set.removeObject(ns_string!("one")); assert!(!set.containsObject(ns_string!("one"))); assert_eq!(set.count(), 2); set.removeObject(ns_string!("one")); assert_eq!(set.count(), 2); } #[test] fn test_clear() { let strs = [ns_string!("one"), ns_string!("two"), ns_string!("three")]; let set = NSMutableSet::from_slice(&strs); assert_eq!(set.len(), 3); set.removeAllObjects(); assert!(set.is_empty()); } #[test] fn test_to_vec() { let strs = [ NSMutableString::from_str("one"), NSMutableString::from_str("two"), NSMutableString::from_str("three"), ]; let set = NSMutableSet::from_retained_slice(&strs); let vec = set.to_vec(); for str in &vec { str.appendString(ns_string!(" times zero is zero")); } assert_eq!(vec.len(), 3); assert!(vec.iter().all(|str| str.hasSuffix(ns_string!("zero")))); } #[test] fn test_extend() { let mut set = NSMutableSet::new(); assert!(set.is_empty()); set.extend([ns_string!("one"), ns_string!("two"), ns_string!("three")]); assert_eq!(set.len(), 3); } #[test] #[cfg(feature = "NSObject")] fn test_mutable_copy() { use crate::{NSMutableCopying, NSSet}; let set1 = NSSet::from_slice(&[ns_string!("one"), ns_string!("two"), ns_string!("three")]); let set2 = set1.mutableCopy(); set2.addObject(ns_string!("four")); assert!(set1.isSubsetOfSet(&set2)); assert_ne!(set1.mutableCopy(), set2); }