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.

LeafBucketTest.java 6.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. /*
  2. * Copyright (C) 2010, Google Inc. 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.notes;
  11. import static org.junit.Assert.assertEquals;
  12. import static org.junit.Assert.assertNull;
  13. import static org.junit.Assert.assertSame;
  14. import java.io.IOException;
  15. import org.eclipse.jgit.lib.AnyObjectId;
  16. import org.eclipse.jgit.lib.MutableObjectId;
  17. import org.junit.Test;
  18. public class LeafBucketTest {
  19. @Test
  20. public void testEmpty() {
  21. LeafBucket b = new LeafBucket(0);
  22. assertNull(b.getNote(id(0x00), null));
  23. assertNull(b.getNote(id(0x01), null));
  24. assertNull(b.getNote(id(0xfe), null));
  25. }
  26. @Test
  27. public void testParseFive() {
  28. LeafBucket b = new LeafBucket(0);
  29. b.parseOneEntry(id(0x11), id(0x81));
  30. b.parseOneEntry(id(0x22), id(0x82));
  31. b.parseOneEntry(id(0x33), id(0x83));
  32. b.parseOneEntry(id(0x44), id(0x84));
  33. b.parseOneEntry(id(0x55), id(0x85));
  34. assertNull(b.getNote(id(0x01), null));
  35. assertEquals(id(0x81), b.getNote(id(0x11), null).getData());
  36. assertEquals(id(0x82), b.getNote(id(0x22), null).getData());
  37. assertEquals(id(0x83), b.getNote(id(0x33), null).getData());
  38. assertEquals(id(0x84), b.getNote(id(0x44), null).getData());
  39. assertEquals(id(0x85), b.getNote(id(0x55), null).getData());
  40. assertNull(b.getNote(id(0x66), null));
  41. }
  42. @Test
  43. public void testSetFive_InOrder() throws IOException {
  44. LeafBucket b = new LeafBucket(0);
  45. assertSame(b, b.set(id(0x11), id(0x81), null));
  46. assertSame(b, b.set(id(0x22), id(0x82), null));
  47. assertSame(b, b.set(id(0x33), id(0x83), null));
  48. assertSame(b, b.set(id(0x44), id(0x84), null));
  49. assertSame(b, b.set(id(0x55), id(0x85), null));
  50. assertNull(b.getNote(id(0x01), null));
  51. assertEquals(id(0x81), b.getNote(id(0x11), null).getData());
  52. assertEquals(id(0x82), b.getNote(id(0x22), null).getData());
  53. assertEquals(id(0x83), b.getNote(id(0x33), null).getData());
  54. assertEquals(id(0x84), b.getNote(id(0x44), null).getData());
  55. assertEquals(id(0x85), b.getNote(id(0x55), null).getData());
  56. assertNull(b.getNote(id(0x66), null));
  57. }
  58. @Test
  59. public void testSetFive_ReverseOrder() throws IOException {
  60. LeafBucket b = new LeafBucket(0);
  61. assertSame(b, b.set(id(0x55), id(0x85), null));
  62. assertSame(b, b.set(id(0x44), id(0x84), null));
  63. assertSame(b, b.set(id(0x33), id(0x83), null));
  64. assertSame(b, b.set(id(0x22), id(0x82), null));
  65. assertSame(b, b.set(id(0x11), id(0x81), null));
  66. assertNull(b.getNote(id(0x01), null));
  67. assertEquals(id(0x81), b.getNote(id(0x11), null).getData());
  68. assertEquals(id(0x82), b.getNote(id(0x22), null).getData());
  69. assertEquals(id(0x83), b.getNote(id(0x33), null).getData());
  70. assertEquals(id(0x84), b.getNote(id(0x44), null).getData());
  71. assertEquals(id(0x85), b.getNote(id(0x55), null).getData());
  72. assertNull(b.getNote(id(0x66), null));
  73. }
  74. @Test
  75. public void testSetFive_MixedOrder() throws IOException {
  76. LeafBucket b = new LeafBucket(0);
  77. assertSame(b, b.set(id(0x11), id(0x81), null));
  78. assertSame(b, b.set(id(0x33), id(0x83), null));
  79. assertSame(b, b.set(id(0x55), id(0x85), null));
  80. assertSame(b, b.set(id(0x22), id(0x82), null));
  81. assertSame(b, b.set(id(0x44), id(0x84), null));
  82. assertNull(b.getNote(id(0x01), null));
  83. assertEquals(id(0x81), b.getNote(id(0x11), null).getData());
  84. assertEquals(id(0x82), b.getNote(id(0x22), null).getData());
  85. assertEquals(id(0x83), b.getNote(id(0x33), null).getData());
  86. assertEquals(id(0x84), b.getNote(id(0x44), null).getData());
  87. assertEquals(id(0x85), b.getNote(id(0x55), null).getData());
  88. assertNull(b.getNote(id(0x66), null));
  89. }
  90. @Test
  91. public void testSet_Replace() throws IOException {
  92. LeafBucket b = new LeafBucket(0);
  93. assertSame(b, b.set(id(0x11), id(0x81), null));
  94. assertEquals(id(0x81), b.getNote(id(0x11), null).getData());
  95. assertSame(b, b.set(id(0x11), id(0x01), null));
  96. assertEquals(id(0x01), b.getNote(id(0x11), null).getData());
  97. }
  98. @Test
  99. public void testRemoveMissingNote() throws IOException {
  100. LeafBucket b = new LeafBucket(0);
  101. assertNull(b.getNote(id(0x11), null));
  102. assertSame(b, b.set(id(0x11), null, null));
  103. assertNull(b.getNote(id(0x11), null));
  104. }
  105. @Test
  106. public void testRemoveFirst() throws IOException {
  107. LeafBucket b = new LeafBucket(0);
  108. assertSame(b, b.set(id(0x11), id(0x81), null));
  109. assertSame(b, b.set(id(0x22), id(0x82), null));
  110. assertSame(b, b.set(id(0x33), id(0x83), null));
  111. assertSame(b, b.set(id(0x44), id(0x84), null));
  112. assertSame(b, b.set(id(0x55), id(0x85), null));
  113. assertSame(b, b.set(id(0x11), null, null));
  114. assertNull(b.getNote(id(0x01), null));
  115. assertNull(b.getNote(id(0x11), null));
  116. assertEquals(id(0x82), b.getNote(id(0x22), null).getData());
  117. assertEquals(id(0x83), b.getNote(id(0x33), null).getData());
  118. assertEquals(id(0x84), b.getNote(id(0x44), null).getData());
  119. assertEquals(id(0x85), b.getNote(id(0x55), null).getData());
  120. assertNull(b.getNote(id(0x66), null));
  121. }
  122. @Test
  123. public void testRemoveMiddle() throws IOException {
  124. LeafBucket b = new LeafBucket(0);
  125. assertSame(b, b.set(id(0x11), id(0x81), null));
  126. assertSame(b, b.set(id(0x22), id(0x82), null));
  127. assertSame(b, b.set(id(0x33), id(0x83), null));
  128. assertSame(b, b.set(id(0x44), id(0x84), null));
  129. assertSame(b, b.set(id(0x55), id(0x85), null));
  130. assertSame(b, b.set(id(0x33), null, null));
  131. assertNull(b.getNote(id(0x01), null));
  132. assertEquals(id(0x81), b.getNote(id(0x11), null).getData());
  133. assertEquals(id(0x82), b.getNote(id(0x22), null).getData());
  134. assertNull(b.getNote(id(0x33), null));
  135. assertEquals(id(0x84), b.getNote(id(0x44), null).getData());
  136. assertEquals(id(0x85), b.getNote(id(0x55), null).getData());
  137. assertNull(b.getNote(id(0x66), null));
  138. }
  139. @Test
  140. public void testRemoveLast() throws IOException {
  141. LeafBucket b = new LeafBucket(0);
  142. assertSame(b, b.set(id(0x11), id(0x81), null));
  143. assertSame(b, b.set(id(0x22), id(0x82), null));
  144. assertSame(b, b.set(id(0x33), id(0x83), null));
  145. assertSame(b, b.set(id(0x44), id(0x84), null));
  146. assertSame(b, b.set(id(0x55), id(0x85), null));
  147. assertSame(b, b.set(id(0x55), null, null));
  148. assertNull(b.getNote(id(0x01), null));
  149. assertEquals(id(0x81), b.getNote(id(0x11), null).getData());
  150. assertEquals(id(0x82), b.getNote(id(0x22), null).getData());
  151. assertEquals(id(0x83), b.getNote(id(0x33), null).getData());
  152. assertEquals(id(0x84), b.getNote(id(0x44), null).getData());
  153. assertNull(b.getNote(id(0x55), null));
  154. assertNull(b.getNote(id(0x66), null));
  155. }
  156. @Test
  157. public void testRemoveMakesEmpty() throws IOException {
  158. LeafBucket b = new LeafBucket(0);
  159. assertSame(b, b.set(id(0x11), id(0x81), null));
  160. assertEquals(id(0x81), b.getNote(id(0x11), null).getData());
  161. assertNull(b.set(id(0x11), null, null));
  162. assertNull(b.getNote(id(0x11), null));
  163. }
  164. private static AnyObjectId id(int first) {
  165. MutableObjectId id = new MutableObjectId();
  166. id.setByte(1, first);
  167. return id;
  168. }
  169. }