You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

AbbreviatedLongObjectIdTest.java 18KB

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