()
| 702 | |
| 703 | #[test] |
| 704 | fn code_auto_merge() { |
| 705 | let mut txn = MockTxn::new(); |
| 706 | let store = MemoryChangeStore::new(); |
| 707 | |
| 708 | let base_hash = make_change(&store, b"fn main() { return 0; }"); |
| 709 | let base_id = NodeId::new(1); |
| 710 | txn.register(base_id, base_hash); |
| 711 | |
| 712 | let left_hash = make_change(&store, b"fn main() { return 1; }"); |
| 713 | let left_id = NodeId::new(2); |
| 714 | txn.register(left_id, left_hash); |
| 715 | |
| 716 | let right_hash = make_change(&store, b"fn run() { return 0; }"); |
| 717 | let right_id = NodeId::new(3); |
| 718 | txn.register(right_id, right_hash); |
| 719 | |
| 720 | let engine = SemanticMergeEngine::new(&txn, &store); |
| 721 | |
| 722 | let v_base = GraphNode::new(base_id, ChangePosition::new(0), ChangePosition::new(23)); |
| 723 | let v_left = GraphNode::new(left_id, ChangePosition::new(0), ChangePosition::new(23)); |
| 724 | let v_right = GraphNode::new(right_id, ChangePosition::new(0), ChangePosition::new(22)); |
| 725 | |
| 726 | let group = ConflictGroup::new(vec![v_left, v_right]).with_ancestor(v_base); |
| 727 | let outcome = engine.try_merge(&group).unwrap(); |
| 728 | |
| 729 | assert!( |
| 730 | outcome.is_auto_merged(), |
| 731 | "expected AutoMerged, got {:?}", |
| 732 | outcome |
| 733 | ); |
| 734 | assert_eq!( |
| 735 | std::str::from_utf8(outcome.content()).unwrap(), |
| 736 | "fn run() { return 1; }", |
| 737 | ); |
| 738 | } |
| 739 | } |
nothing calls this directly
no test coverage detected