()
| 765 | |
| 766 | #[test] |
| 767 | fn try_map_failure() { |
| 768 | let heap = Heap::new(); |
| 769 | let interner = InternSet::new(&heap); |
| 770 | let original = interner.intern_slice(&[1, 2, 3, 4, 5]); |
| 771 | |
| 772 | // Fail on the third element |
| 773 | let mut beef = Beef::new(original); |
| 774 | let result: Result<(), &str> = beef.try_map(|x| { |
| 775 | if x == 3 { |
| 776 | Err("Error on value 3") |
| 777 | } else { |
| 778 | Ok(x * 10) |
| 779 | } |
| 780 | }); |
| 781 | assert_eq!(result, Err("Error on value 3")); |
| 782 | // First two elements should be transformed |
| 783 | assert_eq!(beef.as_slice(), &[10, 20, 3, 4, 5]); |
| 784 | |
| 785 | // Fail on the first element |
| 786 | let mut beef = Beef::new(original); |
| 787 | let result: Result<(), &str> = beef.try_map(|x| { |
| 788 | if x == 1 { |
| 789 | Err("Error on first element") |
| 790 | } else { |
| 791 | Ok(x) |
| 792 | } |
| 793 | }); |
| 794 | assert_eq!(result, Err("Error on first element")); |
| 795 | // Should still be in interned state since no modifications happened |
| 796 | assert_eq!(beef.as_slice(), original.as_ref()); |
| 797 | } |
| 798 | |
| 799 | #[test] |
| 800 | fn try_map_empty_and_edge_cases() { |
nothing calls this directly
no test coverage detected