1
2
3
4
5
6
7
8
9
10
11 package org.eclipse.jgit.lib;
12
13 import static org.junit.Assert.assertEquals;
14 import static org.junit.Assert.assertFalse;
15 import static org.junit.Assert.assertNotNull;
16 import static org.junit.Assert.assertNotSame;
17 import static org.junit.Assert.assertNull;
18 import static org.junit.Assert.assertTrue;
19
20 import org.junit.Test;
21
22 public class AbbreviatedObjectIdTest {
23 @Test
24 public void testEmpty_FromByteArray() {
25 final AbbreviatedObjectId i;
26 i = AbbreviatedObjectId.fromString(new byte[] {}, 0, 0);
27 assertNotNull(i);
28 assertEquals(0, i.length());
29 assertFalse(i.isComplete());
30 assertEquals("", i.name());
31 }
32
33 @Test
34 public void testEmpty_FromString() {
35 final AbbreviatedObjectId i = AbbreviatedObjectId.fromString("");
36 assertNotNull(i);
37 assertEquals(0, i.length());
38 assertFalse(i.isComplete());
39 assertEquals("", i.name());
40 }
41
42 @Test
43 public void testFull_FromByteArray() {
44 final String s = "7b6e8067ec96acef9a4184b43210d583b6d2f99a";
45 final byte[] b = Constants.encodeASCII(s);
46 final AbbreviatedObjectId i = AbbreviatedObjectId.fromString(b, 0,
47 b.length);
48 assertNotNull(i);
49 assertEquals(s.length(), i.length());
50 assertTrue(i.isComplete());
51 assertEquals(s, i.name());
52
53 final ObjectId f = i.toObjectId();
54 assertNotNull(f);
55 assertEquals(ObjectId.fromString(s), f);
56 }
57
58 @Test
59 public void testFull_FromString() {
60 final String s = "7b6e8067ec96acef9a4184b43210d583b6d2f99a";
61 final AbbreviatedObjectId i = AbbreviatedObjectId.fromString(s);
62 assertNotNull(i);
63 assertEquals(s.length(), i.length());
64 assertTrue(i.isComplete());
65 assertEquals(s, i.name());
66
67 final ObjectId f = i.toObjectId();
68 assertNotNull(f);
69 assertEquals(ObjectId.fromString(s), f);
70 }
71
72 @Test
73 public void test1_FromString() {
74 final String s = "7";
75 final AbbreviatedObjectId i = AbbreviatedObjectId.fromString(s);
76 assertNotNull(i);
77 assertEquals(s.length(), i.length());
78 assertFalse(i.isComplete());
79 assertEquals(s, i.name());
80 assertNull(i.toObjectId());
81 }
82
83 @Test
84 public void test2_FromString() {
85 final String s = "7b";
86 final AbbreviatedObjectId i = AbbreviatedObjectId.fromString(s);
87 assertNotNull(i);
88 assertEquals(s.length(), i.length());
89 assertFalse(i.isComplete());
90 assertEquals(s, i.name());
91 assertNull(i.toObjectId());
92 }
93
94 @Test
95 public void test3_FromString() {
96 final String s = "7b6";
97 final AbbreviatedObjectId i = AbbreviatedObjectId.fromString(s);
98 assertNotNull(i);
99 assertEquals(s.length(), i.length());
100 assertFalse(i.isComplete());
101 assertEquals(s, i.name());
102 assertNull(i.toObjectId());
103 }
104
105 @Test
106 public void test4_FromString() {
107 final String s = "7b6e";
108 final AbbreviatedObjectId i = AbbreviatedObjectId.fromString(s);
109 assertNotNull(i);
110 assertEquals(s.length(), i.length());
111 assertFalse(i.isComplete());
112 assertEquals(s, i.name());
113 assertNull(i.toObjectId());
114 }
115
116 @Test
117 public void test5_FromString() {
118 final String s = "7b6e8";
119 final AbbreviatedObjectId i = AbbreviatedObjectId.fromString(s);
120 assertNotNull(i);
121 assertEquals(s.length(), i.length());
122 assertFalse(i.isComplete());
123 assertEquals(s, i.name());
124 assertNull(i.toObjectId());
125 }
126
127 @Test
128 public void test6_FromString() {
129 final String s = "7b6e80";
130 final AbbreviatedObjectId i = AbbreviatedObjectId.fromString(s);
131 assertNotNull(i);
132 assertEquals(s.length(), i.length());
133 assertFalse(i.isComplete());
134 assertEquals(s, i.name());
135 assertNull(i.toObjectId());
136 }
137
138 @Test
139 public void test7_FromString() {
140 final String s = "7b6e806";
141 final AbbreviatedObjectId i = AbbreviatedObjectId.fromString(s);
142 assertNotNull(i);
143 assertEquals(s.length(), i.length());
144 assertFalse(i.isComplete());
145 assertEquals(s, i.name());
146 assertNull(i.toObjectId());
147 }
148
149 @Test
150 public void test8_FromString() {
151 final String s = "7b6e8067";
152 final AbbreviatedObjectId i = AbbreviatedObjectId.fromString(s);
153 assertNotNull(i);
154 assertEquals(s.length(), i.length());
155 assertFalse(i.isComplete());
156 assertEquals(s, i.name());
157 assertNull(i.toObjectId());
158 }
159
160 @Test
161 public void test9_FromString() {
162 final String s = "7b6e8067e";
163 final AbbreviatedObjectId i = AbbreviatedObjectId.fromString(s);
164 assertNotNull(i);
165 assertEquals(s.length(), i.length());
166 assertFalse(i.isComplete());
167 assertEquals(s, i.name());
168 assertNull(i.toObjectId());
169 }
170
171 @Test
172 public void test17_FromString() {
173 final String s = "7b6e8067ec96acef9";
174 final AbbreviatedObjectId i = AbbreviatedObjectId.fromString(s);
175 assertNotNull(i);
176 assertEquals(s.length(), i.length());
177 assertFalse(i.isComplete());
178 assertEquals(s, i.name());
179 assertNull(i.toObjectId());
180 }
181
182 @Test
183 public void testEquals_Short8() {
184 final String s = "7b6e8067";
185 final AbbreviatedObjectId a = AbbreviatedObjectId.fromString(s);
186 final AbbreviatedObjectId b = AbbreviatedObjectId.fromString(s);
187 assertNotSame(a, b);
188 assertTrue(a.hashCode() == b.hashCode());
189 assertEquals(b, a);
190 assertEquals(a, b);
191 }
192
193 @Test
194 public void testEquals_Short4() {
195 final String s = "7b6e";
196 final AbbreviatedObjectId a = AbbreviatedObjectId.fromString(s);
197 final AbbreviatedObjectId b = AbbreviatedObjectId.fromString(s);
198 assertNotSame(a, b);
199 assertTrue(a.hashCode() != 0);
200 assertTrue(a.hashCode() == b.hashCode());
201 assertEquals(b, a);
202 assertEquals(a, b);
203 }
204
205 @Test
206 public void testEquals_Full() {
207 final String s = "7b6e8067ec96acef9a4184b43210d583b6d2f99a";
208 final AbbreviatedObjectId a = AbbreviatedObjectId.fromString(s);
209 final AbbreviatedObjectId b = AbbreviatedObjectId.fromString(s);
210 assertNotSame(a, b);
211 assertTrue(a.hashCode() == b.hashCode());
212 assertEquals(b, a);
213 assertEquals(a, b);
214 }
215
216 @Test
217 public void testNotEquals_SameLength() {
218 final String sa = "7b6e8067";
219 final String sb = "7b6e806e";
220 final AbbreviatedObjectId a = AbbreviatedObjectId.fromString(sa);
221 final AbbreviatedObjectId b = AbbreviatedObjectId.fromString(sb);
222 assertFalse(a.equals(b));
223 assertFalse(b.equals(a));
224 }
225
226 @Test
227 public void testNotEquals_DiffLength() {
228 final String sa = "7b6e8067abcd";
229 final String sb = "7b6e8067";
230 final AbbreviatedObjectId a = AbbreviatedObjectId.fromString(sa);
231 final AbbreviatedObjectId b = AbbreviatedObjectId.fromString(sb);
232 assertFalse(a.equals(b));
233 assertFalse(b.equals(a));
234 }
235
236 @Test
237 public void testPrefixCompare_Full() {
238 final String s1 = "7b6e8067ec96acef9a4184b43210d583b6d2f99a";
239 final AbbreviatedObjectId a = AbbreviatedObjectId.fromString(s1);
240 final ObjectId i1 = ObjectId.fromString(s1);
241 assertEquals(0, a.prefixCompare(i1));
242 assertTrue(i1.startsWith(a));
243
244 final String s2 = "7b6e8067ec96acef9a4184b43210d583b6d2f99b";
245 final ObjectId i2 = ObjectId.fromString(s2);
246 assertTrue(a.prefixCompare(i2) < 0);
247 assertFalse(i2.startsWith(a));
248
249 final String s3 = "7b6e8067ec96acef9a4184b43210d583b6d2f999";
250 final ObjectId i3 = ObjectId.fromString(s3);
251 assertTrue(a.prefixCompare(i3) > 0);
252 assertFalse(i3.startsWith(a));
253 }
254
255 @Test
256 public void testPrefixCompare_1() {
257 final String sa = "7";
258 final AbbreviatedObjectId a = AbbreviatedObjectId.fromString(sa);
259
260 final String s1 = "7b6e8067ec96acef9a4184b43210d583b6d2f99a";
261 final ObjectId i1 = ObjectId.fromString(s1);
262 assertEquals(0, a.prefixCompare(i1));
263 assertTrue(i1.startsWith(a));
264
265 final String s2 = "8b6e8067ec96acef9a4184b43210d583b6d2f99a";
266 final ObjectId i2 = ObjectId.fromString(s2);
267 assertTrue(a.prefixCompare(i2) < 0);
268 assertFalse(i2.startsWith(a));
269
270 final String s3 = "6b6e8067ec96acef9a4184b43210d583b6d2f99a";
271 final ObjectId i3 = ObjectId.fromString(s3);
272 assertTrue(a.prefixCompare(i3) > 0);
273 assertFalse(i3.startsWith(a));
274 }
275
276 @Test
277 public void testPrefixCompare_7() {
278 final String sa = "7b6e806";
279 final AbbreviatedObjectId a = AbbreviatedObjectId.fromString(sa);
280
281 final String s1 = "7b6e8067ec96acef9a4184b43210d583b6d2f99a";
282 final ObjectId i1 = ObjectId.fromString(s1);
283 assertEquals(0, a.prefixCompare(i1));
284 assertTrue(i1.startsWith(a));
285
286 final String s2 = "7b6e8167ec86acef9a4184b43210d583b6d2f99a";
287 final ObjectId i2 = ObjectId.fromString(s2);
288 assertTrue(a.prefixCompare(i2) < 0);
289 assertFalse(i2.startsWith(a));
290
291 final String s3 = "7b6e8057eca6acef9a4184b43210d583b6d2f99a";
292 final ObjectId i3 = ObjectId.fromString(s3);
293 assertTrue(a.prefixCompare(i3) > 0);
294 assertFalse(i3.startsWith(a));
295 }
296
297 @Test
298 public void testPrefixCompare_8() {
299 final String sa = "7b6e8067";
300 final AbbreviatedObjectId a = AbbreviatedObjectId.fromString(sa);
301
302 final String s1 = "7b6e8067ec96acef9a4184b43210d583b6d2f99a";
303 final ObjectId i1 = ObjectId.fromString(s1);
304 assertEquals(0, a.prefixCompare(i1));
305 assertTrue(i1.startsWith(a));
306
307 final String s2 = "7b6e8167ec86acef9a4184b43210d583b6d2f99a";
308 final ObjectId i2 = ObjectId.fromString(s2);
309 assertTrue(a.prefixCompare(i2) < 0);
310 assertFalse(i2.startsWith(a));
311
312 final String s3 = "7b6e8057eca6acef9a4184b43210d583b6d2f99a";
313 final ObjectId i3 = ObjectId.fromString(s3);
314 assertTrue(a.prefixCompare(i3) > 0);
315 assertFalse(i3.startsWith(a));
316 }
317
318 @Test
319 public void testPrefixCompare_9() {
320 final String sa = "7b6e8067e";
321 final AbbreviatedObjectId a = AbbreviatedObjectId.fromString(sa);
322
323 final String s1 = "7b6e8067ec96acef9a4184b43210d583b6d2f99a";
324 final ObjectId i1 = ObjectId.fromString(s1);
325 assertEquals(0, a.prefixCompare(i1));
326 assertTrue(i1.startsWith(a));
327
328 final String s2 = "7b6e8167ec86acef9a4184b43210d583b6d2f99a";
329 final ObjectId i2 = ObjectId.fromString(s2);
330 assertTrue(a.prefixCompare(i2) < 0);
331 assertFalse(i2.startsWith(a));
332
333 final String s3 = "7b6e8057eca6acef9a4184b43210d583b6d2f99a";
334 final ObjectId i3 = ObjectId.fromString(s3);
335 assertTrue(a.prefixCompare(i3) > 0);
336 assertFalse(i3.startsWith(a));
337 }
338
339 @Test
340 public void testPrefixCompare_17() {
341 final String sa = "7b6e8067ec96acef9";
342 final AbbreviatedObjectId a = AbbreviatedObjectId.fromString(sa);
343
344 final String s1 = "7b6e8067ec96acef9a4184b43210d583b6d2f99a";
345 final ObjectId i1 = ObjectId.fromString(s1);
346 assertEquals(0, a.prefixCompare(i1));
347 assertTrue(i1.startsWith(a));
348
349 final String s2 = "7b6e8067eca6acef9a4184b43210d583b6d2f99a";
350 final ObjectId i2 = ObjectId.fromString(s2);
351 assertTrue(a.prefixCompare(i2) < 0);
352 assertFalse(i2.startsWith(a));
353
354 final String s3 = "7b6e8067ec86acef9a4184b43210d583b6d2f99a";
355 final ObjectId i3 = ObjectId.fromString(s3);
356 assertTrue(a.prefixCompare(i3) > 0);
357 assertFalse(i3.startsWith(a));
358 }
359
360 @Test
361 public void testIsId() {
362
363 assertFalse(AbbreviatedObjectId.isId(""));
364 assertFalse(AbbreviatedObjectId.isId("a"));
365
366
367 assertFalse(AbbreviatedObjectId.isId(ObjectId.fromString(
368 "7b6e8067ec86acef9a4184b43210d583b6d2f99a").name()
369 + "0"));
370 assertFalse(AbbreviatedObjectId.isId(ObjectId.fromString(
371 "7b6e8067ec86acef9a4184b43210d583b6d2f99a").name()
372 + "c0ffee"));
373
374
375 assertFalse(AbbreviatedObjectId.isId("01notahexstring"));
376
377
378 assertTrue(AbbreviatedObjectId.isId("ab"));
379 assertTrue(AbbreviatedObjectId.isId("abc"));
380 assertTrue(AbbreviatedObjectId.isId("abcd"));
381 assertTrue(AbbreviatedObjectId.isId("abcd0"));
382 assertTrue(AbbreviatedObjectId.isId("abcd09"));
383 assertTrue(AbbreviatedObjectId.isId(ObjectId.fromString(
384 "7b6e8067ec86acef9a4184b43210d583b6d2f99a").name()));
385 }
386 }