| use super::UnionFind; | |
| #[test] | |
| fn empty() { | |
| let mut sets = UnionFind::<u32>::new(10); | |
| for i in 1..10 { | |
| assert_eq!(sets.find(i), i); | |
| } | |
| } | |
| #[test] | |
| fn transitive() { | |
| let mut sets = UnionFind::<u32>::new(10); | |
| sets.unify(3, 7); | |
| sets.unify(4, 2); | |
| assert_eq!(sets.find(7), sets.find(3)); | |
| assert_eq!(sets.find(2), sets.find(4)); | |
| assert_ne!(sets.find(3), sets.find(4)); | |
| sets.unify(7, 4); | |
| assert_eq!(sets.find(7), sets.find(3)); | |
| assert_eq!(sets.find(2), sets.find(4)); | |
| assert_eq!(sets.find(3), sets.find(4)); | |
| for i in [0, 1, 5, 6, 8, 9] { | |
| assert_eq!(sets.find(i), i); | |
| } | |
| } |