| 416 | |
| 417 | #[test] |
| 418 | fn basic() { |
| 419 | let r0 = E(0); |
| 420 | let r1 = E(1); |
| 421 | let r2 = E(2); |
| 422 | let r3 = E(3); |
| 423 | let mut m = SecondaryMap::new(); |
| 424 | |
| 425 | let v: Vec<E> = m.keys().collect(); |
| 426 | assert_eq!(v, []); |
| 427 | |
| 428 | m[r2] = 3; |
| 429 | m[r1] = 5; |
| 430 | |
| 431 | assert_eq!(m[r1], 5); |
| 432 | assert_eq!(m[r2], 3); |
| 433 | |
| 434 | assert!(m.get(r3).is_none()); |
| 435 | assert!(m.get_mut(r3).is_none()); |
| 436 | |
| 437 | let old = m.insert(r3, 99); |
| 438 | assert!(old.is_none()); |
| 439 | assert_eq!(m.get(r3), Some(&99)); |
| 440 | assert_eq!(m[r3], 99); |
| 441 | |
| 442 | *m.get_mut(r3).unwrap() += 1; |
| 443 | assert_eq!(m.get(r3), Some(&100)); |
| 444 | assert_eq!(m[r3], 100); |
| 445 | |
| 446 | let old = m.insert(r3, 42); |
| 447 | assert_eq!(old, Some(100)); |
| 448 | assert_eq!(m.get(r3), Some(&42)); |
| 449 | assert_eq!(m[r3], 42); |
| 450 | |
| 451 | let old = m.remove(r3); |
| 452 | assert_eq!(old, Some(42)); |
| 453 | assert_eq!(m[r3], 0); |
| 454 | let old = m.remove(r3); |
| 455 | assert_eq!(old, Some(0)); |
| 456 | m.resize(3); |
| 457 | let old = m.remove(r3); |
| 458 | assert_eq!(old, None); |
| 459 | |
| 460 | let v: Vec<E> = m.keys().collect(); |
| 461 | assert_eq!(v, [r0, r1, r2]); |
| 462 | |
| 463 | let shared = &m; |
| 464 | assert_eq!(shared[r0], 0); |
| 465 | assert_eq!(shared[r1], 5); |
| 466 | assert_eq!(shared[r2], 3); |
| 467 | } |
| 468 | } |