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 19KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596
  1. /*
  2. * Copyright (C) 2015, Matthias Sohn <matthias.sohn@sap.com>
  3. * and other copyright owners as documented in the project's IP log.
  4. *
  5. * This program and the accompanying materials are made available
  6. * under the terms of the Eclipse Distribution License v1.0 which
  7. * accompanies this distribution, is reproduced below, and is
  8. * available at http://www.eclipse.org/org/documents/edl-v10.php
  9. *
  10. * All rights reserved.
  11. *
  12. * Redistribution and use in source and binary forms, with or
  13. * without modification, are permitted provided that the following
  14. * conditions are met:
  15. *
  16. * - Redistributions of source code must retain the above copyright
  17. * notice, this list of conditions and the following disclaimer.
  18. *
  19. * - Redistributions in binary form must reproduce the above
  20. * copyright notice, this list of conditions and the following
  21. * disclaimer in the documentation and/or other materials provided
  22. * with the distribution.
  23. *
  24. * - Neither the name of the Eclipse Foundation, Inc. nor the
  25. * names of its contributors may be used to endorse or promote
  26. * products derived from this software without specific prior
  27. * written permission.
  28. *
  29. * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
  30. * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
  31. * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  32. * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  33. * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
  34. * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  35. * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
  36. * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  37. * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
  38. * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
  39. * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  40. * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
  41. * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  42. */
  43. package org.eclipse.jgit.lfs.lib;
  44. import static org.junit.Assert.assertEquals;
  45. import static org.junit.Assert.assertFalse;
  46. import static org.junit.Assert.assertNotNull;
  47. import static org.junit.Assert.assertNotSame;
  48. import static org.junit.Assert.assertNull;
  49. import static org.junit.Assert.assertTrue;
  50. import static org.junit.Assert.fail;
  51. import org.eclipse.jgit.lfs.test.LongObjectIdTestUtils;
  52. import org.junit.Test;
  53. /*
  54. * Ported to SHA-256 from org.eclipse.jgit.lib.AbbreviatedObjectIdTest
  55. */
  56. public class AbbreviatedLongObjectIdTest {
  57. @Test
  58. public void testEmpty_FromByteArray() {
  59. final AbbreviatedLongObjectId i;
  60. i = AbbreviatedLongObjectId.fromString(new byte[] {}, 0, 0);
  61. assertNotNull(i);
  62. assertEquals(0, i.length());
  63. assertFalse(i.isComplete());
  64. assertEquals("", i.name());
  65. }
  66. @Test
  67. public void testEmpty_FromString() {
  68. final AbbreviatedLongObjectId i = AbbreviatedLongObjectId
  69. .fromString("");
  70. assertNotNull(i);
  71. assertEquals(0, i.length());
  72. assertFalse(i.isComplete());
  73. assertEquals("", i.name());
  74. }
  75. @Test
  76. public void testFull_FromByteArray() {
  77. final String s = "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10";
  78. final byte[] b = org.eclipse.jgit.lib.Constants.encodeASCII(s);
  79. final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(b,
  80. 0, b.length);
  81. assertNotNull(i);
  82. assertEquals(s.length(), i.length());
  83. assertTrue(i.isComplete());
  84. assertEquals(s, i.name());
  85. final LongObjectId f = i.toLongObjectId();
  86. assertNotNull(f);
  87. assertEquals(LongObjectId.fromString(s), f);
  88. assertEquals(f.hashCode(), i.hashCode());
  89. }
  90. @Test
  91. public void testFull_FromString() {
  92. final String s = "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10";
  93. final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s);
  94. assertNotNull(i);
  95. assertEquals(s.length(), i.length());
  96. assertTrue(i.isComplete());
  97. assertEquals(s, i.name());
  98. final LongObjectId f = i.toLongObjectId();
  99. assertNotNull(f);
  100. assertEquals(LongObjectId.fromString(s), f);
  101. assertEquals(f.hashCode(), i.hashCode());
  102. }
  103. @Test
  104. public void test1_FromString() {
  105. final String s = "2";
  106. final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s);
  107. assertNotNull(i);
  108. assertEquals(s.length(), i.length());
  109. assertFalse(i.isComplete());
  110. assertEquals(s, i.name());
  111. assertNull(i.toLongObjectId());
  112. }
  113. @Test
  114. public void test2_FromString() {
  115. final String s = "27";
  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. @Test
  124. public void test3_FromString() {
  125. final String s = "27e";
  126. final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s);
  127. assertNotNull(i);
  128. assertEquals(s.length(), i.length());
  129. assertFalse(i.isComplete());
  130. assertEquals(s, i.name());
  131. assertNull(i.toLongObjectId());
  132. }
  133. @Test
  134. public void test4_FromString() {
  135. final String s = "27e1";
  136. final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s);
  137. assertNotNull(i);
  138. assertEquals(s.length(), i.length());
  139. assertFalse(i.isComplete());
  140. assertEquals(s, i.name());
  141. assertNull(i.toLongObjectId());
  142. }
  143. @Test
  144. public void test5_FromString() {
  145. final String s = "27e15";
  146. final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s);
  147. assertNotNull(i);
  148. assertEquals(s.length(), i.length());
  149. assertFalse(i.isComplete());
  150. assertEquals(s, i.name());
  151. assertNull(i.toLongObjectId());
  152. }
  153. @Test
  154. public void test6_FromString() {
  155. final String s = "27e15b";
  156. final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s);
  157. assertNotNull(i);
  158. assertEquals(s.length(), i.length());
  159. assertFalse(i.isComplete());
  160. assertEquals(s, i.name());
  161. assertNull(i.toLongObjectId());
  162. }
  163. @Test
  164. public void test7_FromString() {
  165. final String s = "27e15b7";
  166. final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s);
  167. assertNotNull(i);
  168. assertEquals(s.length(), i.length());
  169. assertFalse(i.isComplete());
  170. assertEquals(s, i.name());
  171. assertNull(i.toLongObjectId());
  172. }
  173. @Test
  174. public void test8_FromString() {
  175. final String s = "27e15b72";
  176. final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s);
  177. assertNotNull(i);
  178. assertEquals(s.length(), i.length());
  179. assertFalse(i.isComplete());
  180. assertEquals(s, i.name());
  181. assertNull(i.toLongObjectId());
  182. }
  183. @Test
  184. public void test9_FromString() {
  185. final String s = "27e15b729";
  186. final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s);
  187. assertNotNull(i);
  188. assertEquals(s.length(), i.length());
  189. assertFalse(i.isComplete());
  190. assertEquals(s, i.name());
  191. assertNull(i.toLongObjectId());
  192. }
  193. @Test
  194. public void test15_FromString() {
  195. final String s = "27e15b72937fc8f";
  196. final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s);
  197. assertNotNull(i);
  198. assertEquals(s.length(), i.length());
  199. assertFalse(i.isComplete());
  200. assertEquals(s, i.name());
  201. assertNull(i.toLongObjectId());
  202. }
  203. @Test
  204. public void test16_FromString() {
  205. final String s = "27e15b72937fc8f5";
  206. final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s);
  207. assertNotNull(i);
  208. assertEquals(s.length(), i.length());
  209. assertFalse(i.isComplete());
  210. assertEquals(s, i.name());
  211. assertNull(i.toLongObjectId());
  212. }
  213. @Test
  214. public void test17_FromString() {
  215. final String s = "27e15b72937fc8f55";
  216. final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s);
  217. assertNotNull(i);
  218. assertEquals(s.length(), i.length());
  219. assertFalse(i.isComplete());
  220. assertEquals(s, i.name());
  221. assertNull(i.toLongObjectId());
  222. }
  223. @Test
  224. public void test33_FromString() {
  225. final String s = "27e15b72937fc8f558da24ac3d50ec203";
  226. final AbbreviatedLongObjectId i = AbbreviatedLongObjectId.fromString(s);
  227. assertNotNull(i);
  228. assertEquals(s.length(), i.length());
  229. assertFalse(i.isComplete());
  230. assertEquals(s, i.name());
  231. assertNull(i.toLongObjectId());
  232. }
  233. @Test
  234. public void testEquals_Short() {
  235. final String s = "27e15b72";
  236. final AbbreviatedLongObjectId a = AbbreviatedLongObjectId.fromString(s);
  237. final AbbreviatedLongObjectId b = AbbreviatedLongObjectId.fromString(s);
  238. assertNotSame(a, b);
  239. assertTrue(a.hashCode() == b.hashCode());
  240. assertEquals(b, a);
  241. assertEquals(a, b);
  242. }
  243. @Test
  244. public void testEquals_Full() {
  245. final String s = "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10";
  246. final AbbreviatedLongObjectId a = AbbreviatedLongObjectId.fromString(s);
  247. final AbbreviatedLongObjectId b = AbbreviatedLongObjectId.fromString(s);
  248. assertNotSame(a, b);
  249. assertTrue(a.hashCode() == b.hashCode());
  250. assertEquals(b, a);
  251. assertEquals(a, b);
  252. }
  253. @Test
  254. public void testNotEquals_SameLength() {
  255. final String sa = "27e15b72";
  256. final String sb = "27e15b7f";
  257. final AbbreviatedLongObjectId a = AbbreviatedLongObjectId
  258. .fromString(sa);
  259. final AbbreviatedLongObjectId b = AbbreviatedLongObjectId
  260. .fromString(sb);
  261. assertFalse(a.equals(b));
  262. assertFalse(b.equals(a));
  263. }
  264. @Test
  265. public void testNotEquals_DiffLength() {
  266. final String sa = "27e15b72abcd";
  267. final String sb = "27e15b72";
  268. final AbbreviatedLongObjectId a = AbbreviatedLongObjectId
  269. .fromString(sa);
  270. final AbbreviatedLongObjectId b = AbbreviatedLongObjectId
  271. .fromString(sb);
  272. assertFalse(a.equals(b));
  273. assertFalse(b.equals(a));
  274. }
  275. @Test
  276. public void testPrefixCompare_Full() {
  277. final String s1 = "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10";
  278. final AbbreviatedLongObjectId a = AbbreviatedLongObjectId
  279. .fromString(s1);
  280. final LongObjectId i1 = LongObjectId.fromString(s1);
  281. assertEquals(0, a.prefixCompare(i1));
  282. assertTrue(i1.startsWith(a));
  283. final String s2 = "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b11";
  284. final LongObjectId i2 = LongObjectId.fromString(s2);
  285. assertTrue(a.prefixCompare(i2) < 0);
  286. assertFalse(i2.startsWith(a));
  287. final String s3 = "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b0f";
  288. final LongObjectId i3 = LongObjectId.fromString(s3);
  289. assertTrue(a.prefixCompare(i3) > 0);
  290. assertFalse(i3.startsWith(a));
  291. }
  292. @Test
  293. public void testPrefixCompare_1() {
  294. final String sa = "2";
  295. final AbbreviatedLongObjectId a = AbbreviatedLongObjectId
  296. .fromString(sa);
  297. final String s1 = "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10";
  298. final LongObjectId i1 = LongObjectId.fromString(s1);
  299. assertEquals(0, a.prefixCompare(i1));
  300. assertTrue(i1.startsWith(a));
  301. final String s2 = "37e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10";
  302. final LongObjectId i2 = LongObjectId.fromString(s2);
  303. assertTrue(a.prefixCompare(i2) < 0);
  304. assertFalse(i2.startsWith(a));
  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. @Test
  311. public void testPrefixCompare_15() {
  312. final String sa = "27e15b72937fc8f";
  313. final AbbreviatedLongObjectId a = AbbreviatedLongObjectId
  314. .fromString(sa);
  315. final String s1 = "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10";
  316. final LongObjectId i1 = LongObjectId.fromString(s1);
  317. assertEquals(0, a.prefixCompare(i1));
  318. assertTrue(i1.startsWith(a));
  319. final String s2 = "27e15b72937fc90558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10";
  320. final LongObjectId i2 = LongObjectId.fromString(s2);
  321. assertTrue(a.prefixCompare(i2) < 0);
  322. assertFalse(i2.startsWith(a));
  323. final String s3 = "27e15b72937fc8e558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10";
  324. final LongObjectId i3 = LongObjectId.fromString(s3);
  325. assertTrue(a.prefixCompare(i3) > 0);
  326. assertFalse(i3.startsWith(a));
  327. }
  328. @Test
  329. public void testPrefixCompare_16() {
  330. final String sa = "27e15b72937fc8f5";
  331. final AbbreviatedLongObjectId a = AbbreviatedLongObjectId
  332. .fromString(sa);
  333. final String s1 = "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10";
  334. final LongObjectId i1 = LongObjectId.fromString(s1);
  335. assertEquals(0, a.prefixCompare(i1));
  336. assertTrue(i1.startsWith(a));
  337. final String s2 = "27e15b72937fc8f658da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10";
  338. final LongObjectId i2 = LongObjectId.fromString(s2);
  339. assertTrue(a.prefixCompare(i2) < 0);
  340. assertFalse(i2.startsWith(a));
  341. final String s3 = "27e15b72937fc8f458da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10";
  342. final LongObjectId i3 = LongObjectId.fromString(s3);
  343. assertTrue(a.prefixCompare(i3) > 0);
  344. assertFalse(i3.startsWith(a));
  345. }
  346. @Test
  347. public void testPrefixCompare_17() {
  348. final String sa = "27e15b72937fc8f55";
  349. final AbbreviatedLongObjectId a = AbbreviatedLongObjectId
  350. .fromString(sa);
  351. final String s1 = "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10";
  352. final LongObjectId i1 = LongObjectId.fromString(s1);
  353. assertEquals(0, a.prefixCompare(i1));
  354. assertTrue(i1.startsWith(a));
  355. final String s2 = "27e15b72937fc8f568da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10";
  356. final LongObjectId i2 = LongObjectId.fromString(s2);
  357. assertTrue(a.prefixCompare(i2) < 0);
  358. assertFalse(i2.startsWith(a));
  359. final String s3 = "27e15b72937fc8f548da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10";
  360. final LongObjectId i3 = LongObjectId.fromString(s3);
  361. assertTrue(a.prefixCompare(i3) > 0);
  362. assertFalse(i3.startsWith(a));
  363. }
  364. @Test
  365. public void testPrefixCompare_33() {
  366. final String sa = "27e15b72937fc8f558da24ac3d50ec203";
  367. final AbbreviatedLongObjectId a = AbbreviatedLongObjectId
  368. .fromString(sa);
  369. final String s1 = "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10";
  370. final LongObjectId i1 = LongObjectId.fromString(s1);
  371. assertEquals(0, a.prefixCompare(i1));
  372. assertTrue(i1.startsWith(a));
  373. final String s2 = "27e15b72937fc8f558da24ac3d50ec20402a4cf21e33b87ae8e4ce90e89c4b10";
  374. final LongObjectId i2 = LongObjectId.fromString(s2);
  375. assertTrue(a.prefixCompare(i2) < 0);
  376. assertFalse(i2.startsWith(a));
  377. final String s3 = "27e15b72937fc8f558da24ac3d50ec20202a4cf21e33b87ae8e4ce90e89c4b10";
  378. final LongObjectId i3 = LongObjectId.fromString(s3);
  379. assertTrue(a.prefixCompare(i3) > 0);
  380. assertFalse(i3.startsWith(a));
  381. }
  382. @Test
  383. public void testIsId() {
  384. // These are all too short.
  385. assertFalse(AbbreviatedLongObjectId.isId(""));
  386. assertFalse(AbbreviatedLongObjectId.isId("a"));
  387. // These are too long.
  388. assertFalse(AbbreviatedLongObjectId.isId(LongObjectId
  389. .fromString(
  390. "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10")
  391. .name() + "0"));
  392. assertFalse(AbbreviatedLongObjectId.isId(LongObjectId
  393. .fromString(
  394. "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10")
  395. .name() + "c0ffee"));
  396. // These contain non-hex characters.
  397. assertFalse(AbbreviatedLongObjectId.isId("01notahexstring"));
  398. // These should all work.
  399. assertTrue(AbbreviatedLongObjectId.isId("ab"));
  400. assertTrue(AbbreviatedLongObjectId.isId("abc"));
  401. assertTrue(AbbreviatedLongObjectId.isId("abcd"));
  402. assertTrue(AbbreviatedLongObjectId.isId("abcd0"));
  403. assertTrue(AbbreviatedLongObjectId.isId("abcd09"));
  404. assertTrue(AbbreviatedLongObjectId.isId(LongObjectId
  405. .fromString(
  406. "27e15b72937fc8f558da24ac3d50ec20302a4cf21e33b87ae8e4ce90e89c4b10")
  407. .name()));
  408. }
  409. @Test
  410. public void testAbbreviate() {
  411. AnyLongObjectId id = LongObjectIdTestUtils.hash("test");
  412. assertEquals(
  413. "abbreviated id should match the id it was abbreviated from", 0,
  414. id.abbreviate(10).prefixCompare(id));
  415. }
  416. @Test
  417. public void testFromStringByteWrongLength() {
  418. byte[] buf = new byte[65];
  419. try {
  420. AbbreviatedLongObjectId.fromString(buf, 0, 65);
  421. fail("expected IllegalArgumentException for too long AbbreviatedLongObjectId");
  422. } catch (IllegalArgumentException e) {
  423. // expected
  424. }
  425. }
  426. @Test
  427. public void testFromStringWrongLength() {
  428. AnyLongObjectId id = LongObjectIdTestUtils.hash("test");
  429. try {
  430. AbbreviatedLongObjectId.fromString(id.name() + "c0ffee");
  431. fail("expected IllegalArgumentException for too long AbbreviatedLongObjectId");
  432. } catch (IllegalArgumentException e) {
  433. // expected
  434. }
  435. }
  436. @Test
  437. public void testFromLongObjectId() {
  438. AnyLongObjectId id = LongObjectIdTestUtils.hash("test");
  439. assertEquals(0,
  440. AbbreviatedLongObjectId.fromLongObjectId(id).prefixCompare(id));
  441. }
  442. @Test
  443. public void testPrefixCompareByte() {
  444. AnyLongObjectId id = LongObjectId.fromString(
  445. "0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef");
  446. byte[] buf = new byte[32];
  447. id.copyRawTo(buf, 0);
  448. AbbreviatedLongObjectId a = id.abbreviate(62);
  449. assertEquals(0, a.prefixCompare(buf, 0));
  450. a = LongObjectId
  451. .fromString(
  452. "0023456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef")
  453. .abbreviate(16);
  454. assertEquals(-1, a.prefixCompare(buf, 0));
  455. a = LongObjectId
  456. .fromString(
  457. "0123456789abcdef0023456789abcdef0123456789abcdef0123456789abcdef")
  458. .abbreviate(32);
  459. assertEquals(-1, a.prefixCompare(buf, 0));
  460. a = LongObjectId
  461. .fromString(
  462. "0123456789abcdef0123456789abcdef0023456789abcdef0123456789abcdef")
  463. .abbreviate(48);
  464. assertEquals(-1, a.prefixCompare(buf, 0));
  465. a = LongObjectId
  466. .fromString(
  467. "0123456789abcdef0123456789abcdef0123456789abcdef0023456789abcdef")
  468. .abbreviate(64);
  469. assertEquals(-1, a.prefixCompare(buf, 0));
  470. a = LongObjectId
  471. .fromString(
  472. "1123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef")
  473. .abbreviate(16);
  474. assertEquals(1, a.prefixCompare(buf, 0));
  475. a = LongObjectId
  476. .fromString(
  477. "0123456789abcdef1123456789abcdef0123456789abcdef0123456789abcdef")
  478. .abbreviate(32);
  479. assertEquals(1, a.prefixCompare(buf, 0));
  480. a = LongObjectId
  481. .fromString(
  482. "0123456789abcdef0123456789abcdef1123456789abcdef0123456789abcdef")
  483. .abbreviate(48);
  484. assertEquals(1, a.prefixCompare(buf, 0));
  485. a = LongObjectId
  486. .fromString(
  487. "0123456789abcdef0123456789abcdef0123456789abcdef1123456789abcdef")
  488. .abbreviate(64);
  489. assertEquals(1, a.prefixCompare(buf, 0));
  490. }
  491. @Test
  492. public void testPrefixCompareLong() {
  493. AnyLongObjectId id = new LongObjectId(1L, 2L, 3L, 4L);
  494. long[] buf = new long[4];
  495. id.copyRawTo(buf, 0);
  496. AbbreviatedLongObjectId a = id.abbreviate(62);
  497. assertEquals(0, a.prefixCompare(buf, 0));
  498. a = new LongObjectId(0L, 2L, 3L, 4L).abbreviate(16);
  499. assertEquals(-1, a.prefixCompare(buf, 0));
  500. a = new LongObjectId(1L, 1L, 3L, 4L).abbreviate(32);
  501. assertEquals(-1, a.prefixCompare(buf, 0));
  502. a = new LongObjectId(1L, 2L, 2L, 4L).abbreviate(48);
  503. assertEquals(-1, a.prefixCompare(buf, 0));
  504. a = new LongObjectId(1L, 2L, 3L, 3L).abbreviate(64);
  505. assertEquals(-1, a.prefixCompare(buf, 0));
  506. a = new LongObjectId(2L, 2L, 3L, 4L).abbreviate(16);
  507. assertEquals(1, a.prefixCompare(buf, 0));
  508. a = new LongObjectId(1L, 3L, 3L, 4L).abbreviate(32);
  509. assertEquals(1, a.prefixCompare(buf, 0));
  510. a = new LongObjectId(1L, 2L, 4L, 4L).abbreviate(48);
  511. assertEquals(1, a.prefixCompare(buf, 0));
  512. a = new LongObjectId(1L, 2L, 3L, 5L).abbreviate(64);
  513. assertEquals(1, a.prefixCompare(buf, 0));
  514. }
  515. @Test
  516. public void testGetFirstByte() {
  517. AnyLongObjectId id = LongObjectId.fromString(
  518. "f423456789abcdef0123456789abcdef0123456789abcdef1123456789abcdef");
  519. AbbreviatedLongObjectId a = id.abbreviate(10);
  520. assertEquals(0xf4, a.getFirstByte());
  521. assertEquals(id.getFirstByte(), a.getFirstByte());
  522. }
  523. @Test
  524. public void testNotEquals() {
  525. AbbreviatedLongObjectId a = new LongObjectId(1L, 2L, 3L, 4L)
  526. .abbreviate(10);
  527. assertFalse(a.equals("different"));
  528. }
  529. }