Mercurial > hg4j
comparison test/org/tmatesoft/hg/test/TestDiffHelper.java @ 624:507602cb4fb3
FIXMEs and TODOs: pay some technical debt
author | Artem Tikhomirov <tikhomirov.artem@gmail.com> |
---|---|
date | Mon, 20 May 2013 20:34:33 +0200 |
parents | 8ed4f4f4f0a6 |
children | 7839ff0bfd78 |
comparison
equal
deleted
inserted
replaced
623:fedc54356091 | 624:507602cb4fb3 |
---|---|
116 diff.init(new CharSequence("abcefg"), new CharSequence("bcdegh")); | 116 diff.init(new CharSequence("abcefg"), new CharSequence("bcdegh")); |
117 MatchCollector<CharSequence> mc; | 117 MatchCollector<CharSequence> mc; |
118 diff.findMatchingBlocks(mc = new MatchCollector<CharSequence>()); | 118 diff.findMatchingBlocks(mc = new MatchCollector<CharSequence>()); |
119 assertEquals(3, mc.matchCount()); // bc, e, g | 119 assertEquals(3, mc.matchCount()); // bc, e, g |
120 } | 120 } |
121 | |
122 @Test | |
123 public void testChangedEOL() { | |
124 DiffHelper<LineSequence> diffHelper = new DiffHelper<LineSequence>(); | |
125 MatchCollector<LineSequence> mc; DeltaCollector dc; | |
126 // all lines changed | |
127 diffHelper.init(newlines("one\ntwo\nthree\n".getBytes()), newlines("one\r\ntwo\r\nthree\r\n".getBytes())); | |
128 diffHelper.findMatchingBlocks(mc = new MatchCollector<LineSequence>()); | |
129 assertEquals(0, mc.matchCount()); | |
130 diffHelper.findMatchingBlocks(dc = new DeltaCollector()); | |
131 assertEquals(0, dc.unchangedCount()); | |
132 assertEquals(1, dc.deletedCount()); | |
133 assertTrue(dc.deletedLine(0)); | |
134 assertTrue(dc.deletedLine(1)); | |
135 assertTrue(dc.deletedLine(2)); | |
136 assertEquals(1, dc.addedCount()); | |
137 assertTrue(dc.addedLine(0)); | |
138 assertTrue(dc.addedLine(1)); | |
139 assertTrue(dc.addedLine(2)); | |
140 // one line changed | |
141 diffHelper.init(newlines("one\ntwo\nthree\n".getBytes()), newlines("one\ntwo\r\nthree\n".getBytes())); | |
142 diffHelper.findMatchingBlocks(mc = new MatchCollector<LineSequence>()); | |
143 assertEquals(2, mc.matchCount()); | |
144 assertTrue(mc.originLineMatched(0)); | |
145 assertTrue(mc.targetLineMatched(0)); | |
146 assertFalse(mc.originLineMatched(1)); | |
147 assertFalse(mc.targetLineMatched(1)); | |
148 assertTrue(mc.originLineMatched(2)); | |
149 assertTrue(mc.targetLineMatched(2)); | |
150 diffHelper.findMatchingBlocks(dc = new DeltaCollector()); | |
151 assertEquals(2, dc.unchangedCount()); | |
152 assertEquals(1, dc.deletedCount()); | |
153 assertTrue(dc.deletedLine(1)); | |
154 assertEquals(1, dc.addedCount()); | |
155 assertTrue(dc.addedLine(1)); | |
156 } | |
121 | 157 |
122 // range is comprised of 3 values, range length always last, range start comes at index o (either 0 or 1) | 158 // range is comprised of 3 values, range length always last, range start comes at index o (either 0 or 1) |
123 static boolean includes(IntVector ranges, int o, int ln) { | 159 static boolean includes(IntVector ranges, int o, int ln) { |
124 assert ranges.size() % 3 == 0; | 160 assert ranges.size() % 3 == 0; |
125 for (int i = 2; i < ranges.size(); o += 3, i+=3) { | 161 for (int i = 2; i < ranges.size(); o += 3, i+=3) { |
186 @Override | 222 @Override |
187 protected void unchanged(int s1From, int s2From, int length) { | 223 protected void unchanged(int s1From, int s2From, int length) { |
188 same.add(s1From, s2From, length); | 224 same.add(s1From, s2From, length); |
189 } | 225 } |
190 | 226 |
227 // return number of regions that didn't change | |
191 int unchangedCount() { | 228 int unchangedCount() { |
192 return same.size() / 3; | 229 return same.size() / 3; |
193 } | 230 } |
194 | 231 |
232 // return number of added regions | |
195 int addedCount() { | 233 int addedCount() { |
196 return added.size() / 3; | 234 return added.size() / 3; |
197 } | 235 } |
198 | 236 // return number of deleted regions |
199 int deletedCount() { | 237 int deletedCount() { |
200 return deleted.size() / 3; | 238 return deleted.size() / 3; |
201 } | 239 } |
240 // answer if 0-based line is marked as added | |
202 boolean addedLine(int ln) { | 241 boolean addedLine(int ln) { |
203 return includes(added, 1, ln); | 242 return includes(added, 1, ln); |
204 } | 243 } |
244 // answer if 0-based line is marked as deleted | |
205 boolean deletedLine(int ln) { | 245 boolean deletedLine(int ln) { |
206 return includes(deleted, 1, ln); | 246 return includes(deleted, 1, ln); |
207 } | 247 } |
208 } | 248 } |
209 } | 249 } |