1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 package org.eclipse.jgit.notes;
45
46 import static org.junit.Assert.assertEquals;
47 import static org.junit.Assert.assertNull;
48 import static org.junit.Assert.assertSame;
49
50 import org.eclipse.jgit.junit.RepositoryTestCase;
51 import org.eclipse.jgit.junit.TestRepository;
52 import org.eclipse.jgit.lib.ObjectInserter;
53 import org.eclipse.jgit.lib.ObjectReader;
54 import org.eclipse.jgit.lib.Repository;
55 import org.eclipse.jgit.revwalk.RevBlob;
56 import org.junit.After;
57 import org.junit.Before;
58 import org.junit.Test;
59
60 public class DefaultNoteMergerTest extends RepositoryTestCase {
61
62 private TestRepository<Repository> tr;
63
64 private ObjectReader reader;
65
66 private ObjectInserter inserter;
67
68 private DefaultNoteMerger merger;
69
70 private Note baseNote;
71
72 private RevBlob noteOn;
73
74 @Override
75 @Before
76 public void setUp() throws Exception {
77 super.setUp();
78 tr = new TestRepository<Repository>(db);
79 reader = db.newObjectReader();
80 inserter = db.newObjectInserter();
81 merger = new DefaultNoteMerger();
82 noteOn = tr.blob("a");
83 baseNote = newNote("data");
84 }
85
86 @Override
87 @After
88 public void tearDown() throws Exception {
89 reader.close();
90 inserter.close();
91 super.tearDown();
92 }
93
94 @Test
95 public void testDeleteDelete() throws Exception {
96 assertNull(merger.merge(baseNote, null, null, null, null));
97 }
98
99 @Test
100 public void testEditDelete() throws Exception {
101 Note edit = newNote("edit");
102 assertSame(merger.merge(baseNote, edit, null, null, null), edit);
103 assertSame(merger.merge(baseNote, null, edit, null, null), edit);
104 }
105
106 @Test
107 public void testIdenticalEdit() throws Exception {
108 Note edit = newNote("edit");
109 assertSame(merger.merge(baseNote, edit, edit, null, null), edit);
110 }
111
112 @Test
113 public void testEditEdit() throws Exception {
114 Note edit1 = newNote("edit1");
115 Note edit2 = newNote("edit2");
116
117 Note result = merger.merge(baseNote, edit1, edit2, reader, inserter);
118 assertEquals(result, noteOn);
119 assertEquals(result.getData(), tr.blob("edit1edit2"));
120
121 result = merger.merge(baseNote, edit2, edit1, reader, inserter);
122 assertEquals(result, noteOn);
123 assertEquals(result.getData(), tr.blob("edit2edit1"));
124 }
125
126 @Test
127 public void testIdenticalAdd() throws Exception {
128 Note add = newNote("add");
129 assertSame(merger.merge(null, add, add, null, null), add);
130 }
131
132 @Test
133 public void testAddAdd() throws Exception {
134 Note add1 = newNote("add1");
135 Note add2 = newNote("add2");
136
137 Note result = merger.merge(null, add1, add2, reader, inserter);
138 assertEquals(result, noteOn);
139 assertEquals(result.getData(), tr.blob("add1add2"));
140
141 result = merger.merge(null, add2, add1, reader, inserter);
142 assertEquals(result, noteOn);
143 assertEquals(result.getData(), tr.blob("add2add1"));
144 }
145
146 private Note newNote(String data) throws Exception {
147 return new Note(noteOn, tr.blob(data));
148 }
149 }