()
| 814 | |
| 815 | #[test] |
| 816 | fn code_auto_merge() { |
| 817 | let mut txn = MockTxn::new(); |
| 818 | let store = MemoryChangeStore::new(); |
| 819 | |
| 820 | let base_hash = make_change(&store, b"fn main() { return 0; }"); |
| 821 | let base_id = NodeId::new(1); |
| 822 | txn.register(base_id, base_hash); |
| 823 | |
| 824 | let left_hash = make_change(&store, b"fn main() { return 1; }"); |
| 825 | let left_id = NodeId::new(2); |
| 826 | txn.register(left_id, left_hash); |
| 827 | |
| 828 | let right_hash = make_change(&store, b"fn run() { return 0; }"); |
| 829 | let right_id = NodeId::new(3); |
| 830 | txn.register(right_id, right_hash); |
| 831 | |
| 832 | let engine = SemanticMergeEngine::new(&txn, &store); |
| 833 | |
| 834 | let v_base = GraphNode::new(base_id, ChangePosition::new(0), ChangePosition::new(23)); |
| 835 | let v_left = GraphNode::new(left_id, ChangePosition::new(0), ChangePosition::new(23)); |
| 836 | let v_right = GraphNode::new(right_id, ChangePosition::new(0), ChangePosition::new(22)); |
| 837 | |
| 838 | let group = ConflictGroup::new(vec![v_left, v_right]).with_ancestor(v_base); |
| 839 | let outcome = engine.try_merge(&group).unwrap(); |
| 840 | |
| 841 | assert!( |
| 842 | outcome.is_auto_merged(), |
| 843 | "expected AutoMerged, got {:?}", |
| 844 | outcome |
| 845 | ); |
| 846 | assert_eq!( |
| 847 | std::str::from_utf8(outcome.content()).unwrap(), |
| 848 | "fn run() { return 1; }", |
| 849 | ); |
| 850 | } |
| 851 | } |
nothing calls this directly
no test coverage detected