View Javadoc
1   /*
2    * Copyright (C) 2015, Matthias Sohn <matthias.sohn@sap.com> and others
3    *
4    * This program and the accompanying materials are made available under the
5    * terms of the Eclipse Distribution License v. 1.0 which is available at
6    * https://www.eclipse.org/org/documents/edl-v10.php.
7    *
8    * SPDX-License-Identifier: BSD-3-Clause
9    */
10  
11  package org.eclipse.jgit.lfs.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  import static org.junit.Assert.fail;
20  
21  import org.eclipse.jgit.lfs.test.LongObjectIdTestUtils;
22  import org.junit.Test;
23  
24  /*
25   * Ported to SHA-256 from org.eclipse.jgit.lib.AbbreviatedObjectIdTest
26   */
27  public class AbbreviatedLongObjectIdTest {
28  	@Test
29  	public void testEmpty_FromByteArray() {
30  		final AbbreviatedLongObjectId i;
31  		i = AbbreviatedLongObjectId.fromString(new byte[] {}, 0, 0);
32  		assertNotNull(i);
33  		assertEquals(0, i.length());
34  		assertFalse(i.isComplete());
35  		assertEquals("", i.name());
36  	}
37  
38  	@Test
39  	public void testEmpty_FromString() {
40  		final AbbreviatedLongObjectId i = AbbreviatedLongObjectId
41  				.fromString("");
42  		assertNotNull(i);
43  		assertEquals(0, i.length());
44  		assertFalse(i.isComplete());
45  		assertEquals("", i.name());
46  	}
47  
48  	@Test
49  	public void testFull_FromByteArray() {
50  		final String s = "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10";
51  		final byte[] b = org.eclipse.jgit.lib.Constants.encodeASCII(s);
52  		final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(b,
53  				0, b.length);
54  		assertNotNull(i);
55  		assertEquals(s.length(), i.length());
56  		assertTrue(i.isComplete());
57  		assertEquals(s, i.name());
58  
59  		final LongObjectId f = i.toLongObjectId();
60  		assertNotNull(f);
61  		assertEquals(LongObjectId.fromString(s), f);
62  		assertEquals(f.hashCode(), i.hashCode());
63  	}
64  
65  	@Test
66  	public void testFull_FromString() {
67  		final String s = "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10";
68  		final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s);
69  		assertNotNull(i);
70  		assertEquals(s.length(), i.length());
71  		assertTrue(i.isComplete());
72  		assertEquals(s, i.name());
73  
74  		final LongObjectId f = i.toLongObjectId();
75  		assertNotNull(f);
76  		assertEquals(LongObjectId.fromString(s), f);
77  		assertEquals(f.hashCode(), i.hashCode());
78  	}
79  
80  	@Test
81  	public void test1_FromString() {
82  		final String s = "2";
83  		final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s);
84  		assertNotNull(i);
85  		assertEquals(s.length(), i.length());
86  		assertFalse(i.isComplete());
87  		assertEquals(s, i.name());
88  		assertNull(i.toLongObjectId());
89  	}
90  
91  	@Test
92  	public void test2_FromString() {
93  		final String s = "27";
94  		final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s);
95  		assertNotNull(i);
96  		assertEquals(s.length(), i.length());
97  		assertFalse(i.isComplete());
98  		assertEquals(s, i.name());
99  		assertNull(i.toLongObjectId());
100 	}
101 
102 	@Test
103 	public void test3_FromString() {
104 		final String s = "27e";
105 		final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s);
106 		assertNotNull(i);
107 		assertEquals(s.length(), i.length());
108 		assertFalse(i.isComplete());
109 		assertEquals(s, i.name());
110 		assertNull(i.toLongObjectId());
111 	}
112 
113 	@Test
114 	public void test4_FromString() {
115 		final String s = "27e1";
116 		final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s);
117 		assertNotNull(i);
118 		assertEquals(s.length(), i.length());
119 		assertFalse(i.isComplete());
120 		assertEquals(s, i.name());
121 		assertNull(i.toLongObjectId());
122 	}
123 
124 	@Test
125 	public void test5_FromString() {
126 		final String s = "27e15";
127 		final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s);
128 		assertNotNull(i);
129 		assertEquals(s.length(), i.length());
130 		assertFalse(i.isComplete());
131 		assertEquals(s, i.name());
132 		assertNull(i.toLongObjectId());
133 	}
134 
135 	@Test
136 	public void test6_FromString() {
137 		final String s = "27e15b";
138 		final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s);
139 		assertNotNull(i);
140 		assertEquals(s.length(), i.length());
141 		assertFalse(i.isComplete());
142 		assertEquals(s, i.name());
143 		assertNull(i.toLongObjectId());
144 	}
145 
146 	@Test
147 	public void test7_FromString() {
148 		final String s = "27e15b7";
149 		final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s);
150 		assertNotNull(i);
151 		assertEquals(s.length(), i.length());
152 		assertFalse(i.isComplete());
153 		assertEquals(s, i.name());
154 		assertNull(i.toLongObjectId());
155 	}
156 
157 	@Test
158 	public void test8_FromString() {
159 		final String s = "27e15b72";
160 		final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s);
161 		assertNotNull(i);
162 		assertEquals(s.length(), i.length());
163 		assertFalse(i.isComplete());
164 		assertEquals(s, i.name());
165 		assertNull(i.toLongObjectId());
166 	}
167 
168 	@Test
169 	public void test9_FromString() {
170 		final String s = "27e15b729";
171 		final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s);
172 		assertNotNull(i);
173 		assertEquals(s.length(), i.length());
174 		assertFalse(i.isComplete());
175 		assertEquals(s, i.name());
176 		assertNull(i.toLongObjectId());
177 	}
178 
179 	@Test
180 	public void test15_FromString() {
181 		final String s = "27e15b72937fc8f";
182 		final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s);
183 		assertNotNull(i);
184 		assertEquals(s.length(), i.length());
185 		assertFalse(i.isComplete());
186 		assertEquals(s, i.name());
187 		assertNull(i.toLongObjectId());
188 	}
189 
190 	@Test
191 	public void test16_FromString() {
192 		final String s = "27e15b72937fc8f5";
193 		final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s);
194 		assertNotNull(i);
195 		assertEquals(s.length(), i.length());
196 		assertFalse(i.isComplete());
197 		assertEquals(s, i.name());
198 		assertNull(i.toLongObjectId());
199 	}
200 
201 	@Test
202 	public void test17_FromString() {
203 		final String s = "27e15b72937fc8f55";
204 		final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s);
205 		assertNotNull(i);
206 		assertEquals(s.length(), i.length());
207 		assertFalse(i.isComplete());
208 		assertEquals(s, i.name());
209 		assertNull(i.toLongObjectId());
210 	}
211 
212 	@Test
213 	public void test33_FromString() {
214 		final String s = "27e15b72937fc8f558da24ac3d50ec203";
215 		final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s);
216 		assertNotNull(i);
217 		assertEquals(s.length(), i.length());
218 		assertFalse(i.isComplete());
219 		assertEquals(s, i.name());
220 		assertNull(i.toLongObjectId());
221 	}
222 
223 	@Test
224 	public void testEquals_Short() {
225 		final String s = "27e15b72";
226 		final AbbreviatedLongObjectId a = AbbreviatedLongObjectId.fromString(s);
227 		final AbbreviatedLongObjectId b = AbbreviatedLongObjectId.fromString(s);
228 		assertNotSame(a, b);
229 		assertTrue(a.hashCode() == b.hashCode());
230 		assertEquals(b, a);
231 		assertEquals(a, b);
232 	}
233 
234 	@Test
235 	public void testEquals_Full() {
236 		final String s = "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10";
237 		final AbbreviatedLongObjectId a = AbbreviatedLongObjectId.fromString(s);
238 		final AbbreviatedLongObjectId b = AbbreviatedLongObjectId.fromString(s);
239 		assertNotSame(a, b);
240 		assertTrue(a.hashCode() == b.hashCode());
241 		assertEquals(b, a);
242 		assertEquals(a, b);
243 	}
244 
245 	@Test
246 	public void testNotEquals_SameLength() {
247 		final String sa = "27e15b72";
248 		final String sb = "27e15b7f";
249 		final AbbreviatedLongObjectId a = AbbreviatedLongObjectId
250 				.fromString(sa);
251 		final AbbreviatedLongObjectId b = AbbreviatedLongObjectId
252 				.fromString(sb);
253 		assertFalse(a.equals(b));
254 		assertFalse(b.equals(a));
255 	}
256 
257 	@Test
258 	public void testNotEquals_DiffLength() {
259 		final String sa = "27e15b72abcd";
260 		final String sb = "27e15b72";
261 		final AbbreviatedLongObjectId a = AbbreviatedLongObjectId
262 				.fromString(sa);
263 		final AbbreviatedLongObjectId b = AbbreviatedLongObjectId
264 				.fromString(sb);
265 		assertFalse(a.equals(b));
266 		assertFalse(b.equals(a));
267 	}
268 
269 	@Test
270 	public void testPrefixCompare_Full() {
271 		final String s1 = "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10";
272 		final AbbreviatedLongObjectId a = AbbreviatedLongObjectId
273 				.fromString(s1);
274 		final LongObjectId i1 = LongObjectId.fromString(s1);
275 		assertEquals(0, a.prefixCompare(i1));
276 		assertTrue(i1.startsWith(a));
277 
278 		final String s2 = "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b11";
279 		final LongObjectId i2 = LongObjectId.fromString(s2);
280 		assertTrue(a.prefixCompare(i2) < 0);
281 		assertFalse(i2.startsWith(a));
282 
283 		final String s3 = "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b0f";
284 		final LongObjectId i3 = LongObjectId.fromString(s3);
285 		assertTrue(a.prefixCompare(i3) > 0);
286 		assertFalse(i3.startsWith(a));
287 	}
288 
289 	@Test
290 	public void testPrefixCompare_1() {
291 		final String sa = "2";
292 		final AbbreviatedLongObjectId a = AbbreviatedLongObjectId
293 				.fromString(sa);
294 
295 		final String s1 = "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10";
296 		final LongObjectId i1 = LongObjectId.fromString(s1);
297 		assertEquals(0, a.prefixCompare(i1));
298 		assertTrue(i1.startsWith(a));
299 
300 		final String s2 = "37e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10";
301 		final LongObjectId i2 = LongObjectId.fromString(s2);
302 		assertTrue(a.prefixCompare(i2) < 0);
303 		assertFalse(i2.startsWith(a));
304 
305 		final String s3 = "17e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10";
306 		final LongObjectId i3 = LongObjectId.fromString(s3);
307 		assertTrue(a.prefixCompare(i3) > 0);
308 		assertFalse(i3.startsWith(a));
309 	}
310 
311 	@Test
312 	public void testPrefixCompare_15() {
313 		final String sa = "27e15b72937fc8f";
314 		final AbbreviatedLongObjectId a = AbbreviatedLongObjectId
315 				.fromString(sa);
316 
317 		final String s1 = "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10";
318 		final LongObjectId i1 = LongObjectId.fromString(s1);
319 		assertEquals(0, a.prefixCompare(i1));
320 		assertTrue(i1.startsWith(a));
321 
322 		final String s2 = "27e15b72937fc90558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10";
323 		final LongObjectId i2 = LongObjectId.fromString(s2);
324 		assertTrue(a.prefixCompare(i2) < 0);
325 		assertFalse(i2.startsWith(a));
326 
327 		final String s3 = "27e15b72937fc8e558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10";
328 		final LongObjectId i3 = LongObjectId.fromString(s3);
329 		assertTrue(a.prefixCompare(i3) > 0);
330 		assertFalse(i3.startsWith(a));
331 	}
332 
333 	@Test
334 	public void testPrefixCompare_16() {
335 		final String sa = "27e15b72937fc8f5";
336 		final AbbreviatedLongObjectId a = AbbreviatedLongObjectId
337 				.fromString(sa);
338 
339 		final String s1 = "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10";
340 		final LongObjectId i1 = LongObjectId.fromString(s1);
341 		assertEquals(0, a.prefixCompare(i1));
342 		assertTrue(i1.startsWith(a));
343 
344 		final String s2 = "27e15b72937fc8f658da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10";
345 		final LongObjectId i2 = LongObjectId.fromString(s2);
346 		assertTrue(a.prefixCompare(i2) < 0);
347 		assertFalse(i2.startsWith(a));
348 
349 		final String s3 = "27e15b72937fc8f458da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10";
350 		final LongObjectId i3 = LongObjectId.fromString(s3);
351 		assertTrue(a.prefixCompare(i3) > 0);
352 		assertFalse(i3.startsWith(a));
353 	}
354 
355 	@Test
356 	public void testPrefixCompare_17() {
357 		final String sa = "27e15b72937fc8f55";
358 		final AbbreviatedLongObjectId a = AbbreviatedLongObjectId
359 				.fromString(sa);
360 
361 		final String s1 = "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10";
362 		final LongObjectId i1 = LongObjectId.fromString(s1);
363 		assertEquals(0, a.prefixCompare(i1));
364 		assertTrue(i1.startsWith(a));
365 
366 		final String s2 = "27e15b72937fc8f568da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10";
367 		final LongObjectId i2 = LongObjectId.fromString(s2);
368 		assertTrue(a.prefixCompare(i2) < 0);
369 		assertFalse(i2.startsWith(a));
370 
371 		final String s3 = "27e15b72937fc8f548da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10";
372 		final LongObjectId i3 = LongObjectId.fromString(s3);
373 		assertTrue(a.prefixCompare(i3) > 0);
374 		assertFalse(i3.startsWith(a));
375 	}
376 
377 	@Test
378 	public void testPrefixCompare_33() {
379 		final String sa = "27e15b72937fc8f558da24ac3d50ec203";
380 		final AbbreviatedLongObjectId a = AbbreviatedLongObjectId
381 				.fromString(sa);
382 
383 		final String s1 = "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10";
384 		final LongObjectId i1 = LongObjectId.fromString(s1);
385 		assertEquals(0, a.prefixCompare(i1));
386 		assertTrue(i1.startsWith(a));
387 
388 		final String s2 = "27e15b72937fc8f558da24ac3d50ec20402a4cf21e33b87ae8e4ce90e89c4b10";
389 		final LongObjectId i2 = LongObjectId.fromString(s2);
390 		assertTrue(a.prefixCompare(i2) < 0);
391 		assertFalse(i2.startsWith(a));
392 
393 		final String s3 = "27e15b72937fc8f558da24ac3d50ec20202a4cf21e33b87ae8e4ce90e89c4b10";
394 		final LongObjectId i3 = LongObjectId.fromString(s3);
395 		assertTrue(a.prefixCompare(i3) > 0);
396 		assertFalse(i3.startsWith(a));
397 	}
398 
399 	@Test
400 	public void testIsId() {
401 		// These are all too short.
402 		assertFalse(AbbreviatedLongObjectId.isId(""));
403 		assertFalse(AbbreviatedLongObjectId.isId("a"));
404 
405 		// These are too long.
406 		assertFalse(AbbreviatedLongObjectId.isId(LongObjectId
407 				.fromString(
408 						"27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10")
409 				.name() + "0"));
410 		assertFalse(AbbreviatedLongObjectId.isId(LongObjectId
411 				.fromString(
412 						"27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10")
413 				.name() + "c0ffee"));
414 
415 		// These contain non-hex characters.
416 		assertFalse(AbbreviatedLongObjectId.isId("01notahexstring"));
417 
418 		// These should all work.
419 		assertTrue(AbbreviatedLongObjectId.isId("ab"));
420 		assertTrue(AbbreviatedLongObjectId.isId("abc"));
421 		assertTrue(AbbreviatedLongObjectId.isId("abcd"));
422 		assertTrue(AbbreviatedLongObjectId.isId("abcd0"));
423 		assertTrue(AbbreviatedLongObjectId.isId("abcd09"));
424 		assertTrue(AbbreviatedLongObjectId.isId(LongObjectId
425 				.fromString(
426 						"27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10")
427 				.name()));
428 	}
429 
430 	@Test
431 	public void testAbbreviate() {
432 		AnyLongObjectId id = LongObjectIdTestUtils.hash("test");
433 		assertEquals(
434 				"abbreviated id should match the id it was abbreviated from", 0,
435 				id.abbreviate(10).prefixCompare(id));
436 	}
437 
438 	@Test
439 	public void testFromStringByteWrongLength() {
440 		byte[] buf = new byte[65];
441 		try {
442 			AbbreviatedLongObjectId.fromString(buf, 0, 65);
443 			fail("expected IllegalArgumentException for too long AbbreviatedLongObjectId");
444 		} catch (IllegalArgumentException e) {
445 			// expected
446 		}
447 	}
448 
449 	@Test
450 	public void testFromStringWrongLength() {
451 		AnyLongObjectId id = LongObjectIdTestUtils.hash("test");
452 		try {
453 			AbbreviatedLongObjectId.fromString(id.name() + "c0ffee");
454 			fail("expected IllegalArgumentException for too long AbbreviatedLongObjectId");
455 		} catch (IllegalArgumentException e) {
456 			// expected
457 		}
458 	}
459 
460 	@Test
461 	public void testFromLongObjectId() {
462 		AnyLongObjectId id = LongObjectIdTestUtils.hash("test");
463 		assertEquals(0,
464 				AbbreviatedLongObjectId.fromLongObjectId(id).prefixCompare(id));
465 	}
466 
467 	@Test
468 	public void testPrefixCompareByte() {
469 		AnyLongObjectId id = LongObjectId.fromString(
470 				"0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef");
471 		byte[] buf = new byte[32];
472 		id.copyRawTo(buf, 0);
473 
474 		AbbreviatedLongObjectId a = id.abbreviate(62);
475 		assertEquals(0, a.prefixCompare(buf, 0));
476 
477 		a = LongObjectId
478 				.fromString(
479 						"0023456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef")
480 				.abbreviate(16);
481 		assertEquals(-1, a.prefixCompare(buf, 0));
482 		a = LongObjectId
483 				.fromString(
484 						"0123456789abcdef0023456789abcdef0123456789abcdef0123456789abcdef")
485 				.abbreviate(32);
486 		assertEquals(-1, a.prefixCompare(buf, 0));
487 		a = LongObjectId
488 				.fromString(
489 						"0123456789abcdef0123456789abcdef0023456789abcdef0123456789abcdef")
490 				.abbreviate(48);
491 		assertEquals(-1, a.prefixCompare(buf, 0));
492 		a = LongObjectId
493 				.fromString(
494 						"0123456789abcdef0123456789abcdef0123456789abcdef0023456789abcdef")
495 				.abbreviate(64);
496 		assertEquals(-1, a.prefixCompare(buf, 0));
497 
498 		a = LongObjectId
499 				.fromString(
500 						"1123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef")
501 				.abbreviate(16);
502 		assertEquals(1, a.prefixCompare(buf, 0));
503 		a = LongObjectId
504 				.fromString(
505 						"0123456789abcdef1123456789abcdef0123456789abcdef0123456789abcdef")
506 				.abbreviate(32);
507 		assertEquals(1, a.prefixCompare(buf, 0));
508 		a = LongObjectId
509 				.fromString(
510 						"0123456789abcdef0123456789abcdef1123456789abcdef0123456789abcdef")
511 				.abbreviate(48);
512 		assertEquals(1, a.prefixCompare(buf, 0));
513 		a = LongObjectId
514 				.fromString(
515 						"0123456789abcdef0123456789abcdef0123456789abcdef1123456789abcdef")
516 				.abbreviate(64);
517 		assertEquals(1, a.prefixCompare(buf, 0));
518 	}
519 
520 	@Test
521 	public void testPrefixCompareLong() {
522 		AnyLongObjectId id = new LongObjectId(1L, 2L, 3L, 4L);
523 		long[] buf = new long[4];
524 		id.copyRawTo(buf, 0);
525 
526 		AbbreviatedLongObjectId a = id.abbreviate(62);
527 		assertEquals(0, a.prefixCompare(buf, 0));
528 
529 		a = new LongObjectId(0L, 2L, 3L, 4L).abbreviate(16);
530 		assertEquals(-1, a.prefixCompare(buf, 0));
531 		a = new LongObjectId(1L, 1L, 3L, 4L).abbreviate(32);
532 		assertEquals(-1, a.prefixCompare(buf, 0));
533 		a = new LongObjectId(1L, 2L, 2L, 4L).abbreviate(48);
534 		assertEquals(-1, a.prefixCompare(buf, 0));
535 		a = new LongObjectId(1L, 2L, 3L, 3L).abbreviate(64);
536 		assertEquals(-1, a.prefixCompare(buf, 0));
537 
538 		a = new LongObjectId(2L, 2L, 3L, 4L).abbreviate(16);
539 		assertEquals(1, a.prefixCompare(buf, 0));
540 		a = new LongObjectId(1L, 3L, 3L, 4L).abbreviate(32);
541 		assertEquals(1, a.prefixCompare(buf, 0));
542 		a = new LongObjectId(1L, 2L, 4L, 4L).abbreviate(48);
543 		assertEquals(1, a.prefixCompare(buf, 0));
544 		a = new LongObjectId(1L, 2L, 3L, 5L).abbreviate(64);
545 		assertEquals(1, a.prefixCompare(buf, 0));
546 	}
547 
548 	@Test
549 	public void testGetFirstByte() {
550 		AnyLongObjectId id = LongObjectId.fromString(
551 				"f423456789abcdef0123456789abcdef0123456789abcdef1123456789abcdef");
552 		AbbreviatedLongObjectId a = id.abbreviate(10);
553 		assertEquals(0xf4, a.getFirstByte());
554 		assertEquals(id.getFirstByte(), a.getFirstByte());
555 	}
556 
557 	@SuppressWarnings("unlikely-arg-type")
558 	@Test
559 	public void testNotEquals() {
560 		AbbreviatedLongObjectId a = new LongObjectId(1L, 2L, 3L, 4L)
561 				.abbreviate(10);
562 		assertFalse(a.equals("different"));
563 	}
564 }