|
| 1 | +use collidea::collidea::{CollideMap, CollideSet}; |
| 2 | + |
| 3 | +#[test] |
| 4 | +fn collide_map_test() { |
| 5 | + let size = 100; |
| 6 | + let mut map: CollideMap<String, i32> = CollideMap::new(); |
| 7 | + |
| 8 | + for i in 0..size { |
| 9 | + let key = i.to_string(); |
| 10 | + map.insert(&key, i); |
| 11 | + } |
| 12 | + |
| 13 | + for i in 0..size { |
| 14 | + let key = i.to_string(); |
| 15 | + assert_eq!(map.get(&key).unwrap(), &i); |
| 16 | + } |
| 17 | + assert_eq!(map.len(), size as usize); |
| 18 | +} |
| 19 | + |
| 20 | +#[test] |
| 21 | +fn collide_set_test() { |
| 22 | + let size = 100; |
| 23 | + let mut set: CollideSet<String> = CollideSet::new(); |
| 24 | + |
| 25 | + for i in 0..size { |
| 26 | + let element = i.to_string(); |
| 27 | + set.insert(element); |
| 28 | + } |
| 29 | + assert_eq!(set.len(), size as usize); |
| 30 | + |
| 31 | + for i in 0..size { |
| 32 | + let element = i.to_string(); |
| 33 | + assert_eq!(set.contains(&element), true); |
| 34 | + assert_eq!(set.contains(&(i + size).to_string()), false); |
| 35 | + assert_eq!(set.remove(&element), true); |
| 36 | + } |
| 37 | + assert_eq!(set.len(), 0); |
| 38 | +} |
| 39 | + |
| 40 | +#[test] |
| 41 | +fn collide_set_operator_test() { |
| 42 | + let size = 30; |
| 43 | + let a_start = 0; |
| 44 | + let b_start = size * 1 / 3; |
| 45 | + let a_end = size * 2 / 3; |
| 46 | + let b_end = size; |
| 47 | + |
| 48 | + let mut set_a: CollideSet<String> = CollideSet::new(); |
| 49 | + let mut set_b: CollideSet<String> = CollideSet::new(); |
| 50 | + |
| 51 | + for i in a_start..a_end { |
| 52 | + let t = i.to_string(); |
| 53 | + set_a.insert(t); |
| 54 | + } |
| 55 | + for i in b_start..b_end { |
| 56 | + let t = i.to_string(); |
| 57 | + set_b.insert(t); |
| 58 | + } |
| 59 | + |
| 60 | + let intersection_a_b = set_a.intersection(&set_b); |
| 61 | + let intersection_b_a = set_b.intersection(&set_a); |
| 62 | + let union_a_b = set_a.union(&set_b); |
| 63 | + let union_b_a = set_b.union(&set_a); |
| 64 | + |
| 65 | + assert_eq!(union_a_b.len(), size); |
| 66 | + assert_eq!(union_b_a.len(), size); |
| 67 | + assert_eq!(intersection_a_b.len(), a_end - b_start); |
| 68 | + assert_eq!(intersection_b_a.len(), a_end - b_start); |
| 69 | + |
| 70 | + for i in a_start..b_end { |
| 71 | + let element = i.to_string(); |
| 72 | + assert_eq!(set_a.contains(&element), i < a_end); |
| 73 | + assert_eq!(set_b.contains(&element), i >= b_start); |
| 74 | + assert_eq!(union_a_b.contains(&element), true); |
| 75 | + assert_eq!(union_b_a.contains(&element), true); |
| 76 | + assert_eq!( |
| 77 | + intersection_a_b.contains(&element), |
| 78 | + i >= b_start && i < a_end |
| 79 | + ); |
| 80 | + assert_eq!( |
| 81 | + intersection_b_a.contains(&element), |
| 82 | + i >= b_start && i < a_end |
| 83 | + ); |
| 84 | + } |
| 85 | +} |
0 commit comments