Fix prefixCompare for AbbreviatedObjectId for sizes multiples of eight
[egit/imyousuf.git] / org.spearce.jgit.test / tst / org / spearce / jgit / lib / AbbreviatedObjectIdTest.java
bloba6272e601bea867b614ae2a4650f2e70fe6ed307
1 /*
2 * Copyright (C) 2008, Google Inc.
4 * All rights reserved.
6 * Redistribution and use in source and binary forms, with or
7 * without modification, are permitted provided that the following
8 * conditions are met:
10 * - Redistributions of source code must retain the above copyright
11 * notice, this list of conditions and the following disclaimer.
13 * - Redistributions in binary form must reproduce the above
14 * copyright notice, this list of conditions and the following
15 * disclaimer in the documentation and/or other materials provided
16 * with the distribution.
18 * - Neither the name of the Git Development Community nor the
19 * names of its contributors may be used to endorse or promote
20 * products derived from this software without specific prior
21 * written permission.
23 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND
24 * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,
25 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
26 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
27 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
28 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
29 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
30 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
31 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
32 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
33 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
34 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
35 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38 package org.spearce.jgit.lib;
40 import junit.framework.TestCase;
42 public class AbbreviatedObjectIdTest extends TestCase {
43 public void testEmpty_FromByteArray() {
44 final AbbreviatedObjectId i;
45 i = AbbreviatedObjectId.fromString(new byte[] {}, 0, 0);
46 assertNotNull(i);
47 assertEquals(0, i.length());
48 assertFalse(i.isComplete());
49 assertEquals("", i.name());
52 public void testEmpty_FromString() {
53 final AbbreviatedObjectId i = AbbreviatedObjectId.fromString("");
54 assertNotNull(i);
55 assertEquals(0, i.length());
56 assertFalse(i.isComplete());
57 assertEquals("", i.name());
60 public void testFull_FromByteArray() {
61 final String s = "7b6e8067ec96acef9a4184b43210d583b6d2f99a";
62 final byte[] b = Constants.encodeASCII(s);
63 final AbbreviatedObjectId i = AbbreviatedObjectId.fromString(b, 0,
64 b.length);
65 assertNotNull(i);
66 assertEquals(s.length(), i.length());
67 assertTrue(i.isComplete());
68 assertEquals(s, i.name());
70 final ObjectId f = i.toObjectId();
71 assertNotNull(f);
72 assertEquals(ObjectId.fromString(s), f);
73 assertEquals(f.hashCode(), i.hashCode());
76 public void testFull_FromString() {
77 final String s = "7b6e8067ec96acef9a4184b43210d583b6d2f99a";
78 final AbbreviatedObjectId i = AbbreviatedObjectId.fromString(s);
79 assertNotNull(i);
80 assertEquals(s.length(), i.length());
81 assertTrue(i.isComplete());
82 assertEquals(s, i.name());
84 final ObjectId f = i.toObjectId();
85 assertNotNull(f);
86 assertEquals(ObjectId.fromString(s), f);
87 assertEquals(f.hashCode(), i.hashCode());
90 public void test1_FromString() {
91 final String s = "7";
92 final AbbreviatedObjectId i = AbbreviatedObjectId.fromString(s);
93 assertNotNull(i);
94 assertEquals(s.length(), i.length());
95 assertFalse(i.isComplete());
96 assertEquals(s, i.name());
97 assertNull(i.toObjectId());
100 public void test2_FromString() {
101 final String s = "7b";
102 final AbbreviatedObjectId i = AbbreviatedObjectId.fromString(s);
103 assertNotNull(i);
104 assertEquals(s.length(), i.length());
105 assertFalse(i.isComplete());
106 assertEquals(s, i.name());
107 assertNull(i.toObjectId());
110 public void test3_FromString() {
111 final String s = "7b6";
112 final AbbreviatedObjectId i = AbbreviatedObjectId.fromString(s);
113 assertNotNull(i);
114 assertEquals(s.length(), i.length());
115 assertFalse(i.isComplete());
116 assertEquals(s, i.name());
117 assertNull(i.toObjectId());
120 public void test4_FromString() {
121 final String s = "7b6e";
122 final AbbreviatedObjectId i = AbbreviatedObjectId.fromString(s);
123 assertNotNull(i);
124 assertEquals(s.length(), i.length());
125 assertFalse(i.isComplete());
126 assertEquals(s, i.name());
127 assertNull(i.toObjectId());
130 public void test5_FromString() {
131 final String s = "7b6e8";
132 final AbbreviatedObjectId i = AbbreviatedObjectId.fromString(s);
133 assertNotNull(i);
134 assertEquals(s.length(), i.length());
135 assertFalse(i.isComplete());
136 assertEquals(s, i.name());
137 assertNull(i.toObjectId());
140 public void test6_FromString() {
141 final String s = "7b6e80";
142 final AbbreviatedObjectId i = AbbreviatedObjectId.fromString(s);
143 assertNotNull(i);
144 assertEquals(s.length(), i.length());
145 assertFalse(i.isComplete());
146 assertEquals(s, i.name());
147 assertNull(i.toObjectId());
150 public void test7_FromString() {
151 final String s = "7b6e806";
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());
160 public void test8_FromString() {
161 final String s = "7b6e8067";
162 final AbbreviatedObjectId i = AbbreviatedObjectId.fromString(s);
163 assertNotNull(i);
164 assertEquals(s.length(), i.length());
165 assertFalse(i.isComplete());
166 assertEquals(s, i.name());
167 assertNull(i.toObjectId());
170 public void test9_FromString() {
171 final String s = "7b6e8067e";
172 final AbbreviatedObjectId i = AbbreviatedObjectId.fromString(s);
173 assertNotNull(i);
174 assertEquals(s.length(), i.length());
175 assertFalse(i.isComplete());
176 assertEquals(s, i.name());
177 assertNull(i.toObjectId());
180 public void test17_FromString() {
181 final String s = "7b6e8067ec96acef9";
182 final AbbreviatedObjectId i = AbbreviatedObjectId.fromString(s);
183 assertNotNull(i);
184 assertEquals(s.length(), i.length());
185 assertFalse(i.isComplete());
186 assertEquals(s, i.name());
187 assertNull(i.toObjectId());
190 public void testEquals_Short() {
191 final String s = "7b6e8067";
192 final AbbreviatedObjectId a = AbbreviatedObjectId.fromString(s);
193 final AbbreviatedObjectId b = AbbreviatedObjectId.fromString(s);
194 assertNotSame(a, b);
195 assertTrue(a.hashCode() == b.hashCode());
196 assertTrue(a.equals(b));
197 assertTrue(b.equals(a));
200 public void testEquals_Full() {
201 final String s = "7b6e8067ec96acef9a4184b43210d583b6d2f99a";
202 final AbbreviatedObjectId a = AbbreviatedObjectId.fromString(s);
203 final AbbreviatedObjectId b = AbbreviatedObjectId.fromString(s);
204 assertNotSame(a, b);
205 assertTrue(a.hashCode() == b.hashCode());
206 assertTrue(a.equals(b));
207 assertTrue(b.equals(a));
210 public void testNotEquals_SameLength() {
211 final String sa = "7b6e8067";
212 final String sb = "7b6e806e";
213 final AbbreviatedObjectId a = AbbreviatedObjectId.fromString(sa);
214 final AbbreviatedObjectId b = AbbreviatedObjectId.fromString(sb);
215 assertFalse(a.equals(b));
216 assertFalse(b.equals(a));
219 public void testNotEquals_DiffLength() {
220 final String sa = "7b6e8067abcd";
221 final String sb = "7b6e8067";
222 final AbbreviatedObjectId a = AbbreviatedObjectId.fromString(sa);
223 final AbbreviatedObjectId b = AbbreviatedObjectId.fromString(sb);
224 assertFalse(a.equals(b));
225 assertFalse(b.equals(a));
228 public void testPrefixCompare_Full() {
229 final String s1 = "7b6e8067ec96acef9a4184b43210d583b6d2f99a";
230 final AbbreviatedObjectId a = AbbreviatedObjectId.fromString(s1);
231 final ObjectId i1 = ObjectId.fromString(s1);
232 assertEquals(0, a.prefixCompare(i1));
233 assertTrue(i1.startsWith(a));
235 final String s2 = "7b6e8067ec96acef9a4184b43210d583b6d2f99b";
236 final ObjectId i2 = ObjectId.fromString(s2);
237 assertTrue(a.prefixCompare(i2) < 0);
238 assertFalse(i2.startsWith(a));
240 final String s3 = "7b6e8067ec96acef9a4184b43210d583b6d2f999";
241 final ObjectId i3 = ObjectId.fromString(s3);
242 assertTrue(a.prefixCompare(i3) > 0);
243 assertFalse(i3.startsWith(a));
246 public void testPrefixCompare_1() {
247 final String sa = "7";
248 final AbbreviatedObjectId a = AbbreviatedObjectId.fromString(sa);
250 final String s1 = "7b6e8067ec96acef9a4184b43210d583b6d2f99a";
251 final ObjectId i1 = ObjectId.fromString(s1);
252 assertEquals(0, a.prefixCompare(i1));
253 assertTrue(i1.startsWith(a));
255 final String s2 = "8b6e8067ec96acef9a4184b43210d583b6d2f99a";
256 final ObjectId i2 = ObjectId.fromString(s2);
257 assertTrue(a.prefixCompare(i2) < 0);
258 assertFalse(i2.startsWith(a));
260 final String s3 = "6b6e8067ec96acef9a4184b43210d583b6d2f99a";
261 final ObjectId i3 = ObjectId.fromString(s3);
262 assertTrue(a.prefixCompare(i3) > 0);
263 assertFalse(i3.startsWith(a));
266 public void testPrefixCompare_7() {
267 final String sa = "7b6e806";
268 final AbbreviatedObjectId a = AbbreviatedObjectId.fromString(sa);
270 final String s1 = "7b6e8067ec96acef9a4184b43210d583b6d2f99a";
271 final ObjectId i1 = ObjectId.fromString(s1);
272 assertEquals(0, a.prefixCompare(i1));
273 assertTrue(i1.startsWith(a));
275 final String s2 = "7b6e8167ec86acef9a4184b43210d583b6d2f99a";
276 final ObjectId i2 = ObjectId.fromString(s2);
277 assertTrue(a.prefixCompare(i2) < 0);
278 assertFalse(i2.startsWith(a));
280 final String s3 = "7b6e8057eca6acef9a4184b43210d583b6d2f99a";
281 final ObjectId i3 = ObjectId.fromString(s3);
282 assertTrue(a.prefixCompare(i3) > 0);
283 assertFalse(i3.startsWith(a));
286 public void testPrefixCompare_8() {
287 final String sa = "7b6e8067";
288 final AbbreviatedObjectId a = AbbreviatedObjectId.fromString(sa);
290 final String s1 = "7b6e8067ec96acef9a4184b43210d583b6d2f99a";
291 final ObjectId i1 = ObjectId.fromString(s1);
292 assertEquals(0, a.prefixCompare(i1));
293 assertTrue(i1.startsWith(a));
295 final String s2 = "7b6e8167ec86acef9a4184b43210d583b6d2f99a";
296 final ObjectId i2 = ObjectId.fromString(s2);
297 assertTrue(a.prefixCompare(i2) < 0);
298 assertFalse(i2.startsWith(a));
300 final String s3 = "7b6e8057eca6acef9a4184b43210d583b6d2f99a";
301 final ObjectId i3 = ObjectId.fromString(s3);
302 assertTrue(a.prefixCompare(i3) > 0);
303 assertFalse(i3.startsWith(a));
306 public void testPrefixCompare_9() {
307 final String sa = "7b6e8067e";
308 final AbbreviatedObjectId a = AbbreviatedObjectId.fromString(sa);
310 final String s1 = "7b6e8067ec96acef9a4184b43210d583b6d2f99a";
311 final ObjectId i1 = ObjectId.fromString(s1);
312 assertEquals(0, a.prefixCompare(i1));
313 assertTrue(i1.startsWith(a));
315 final String s2 = "7b6e8167ec86acef9a4184b43210d583b6d2f99a";
316 final ObjectId i2 = ObjectId.fromString(s2);
317 assertTrue(a.prefixCompare(i2) < 0);
318 assertFalse(i2.startsWith(a));
320 final String s3 = "7b6e8057eca6acef9a4184b43210d583b6d2f99a";
321 final ObjectId i3 = ObjectId.fromString(s3);
322 assertTrue(a.prefixCompare(i3) > 0);
323 assertFalse(i3.startsWith(a));
326 public void testPrefixCompare_17() {
327 final String sa = "7b6e8067ec96acef9";
328 final AbbreviatedObjectId a = AbbreviatedObjectId.fromString(sa);
330 final String s1 = "7b6e8067ec96acef9a4184b43210d583b6d2f99a";
331 final ObjectId i1 = ObjectId.fromString(s1);
332 assertEquals(0, a.prefixCompare(i1));
333 assertTrue(i1.startsWith(a));
335 final String s2 = "7b6e8067eca6acef9a4184b43210d583b6d2f99a";
336 final ObjectId i2 = ObjectId.fromString(s2);
337 assertTrue(a.prefixCompare(i2) < 0);
338 assertFalse(i2.startsWith(a));
340 final String s3 = "7b6e8067ec86acef9a4184b43210d583b6d2f99a";
341 final ObjectId i3 = ObjectId.fromString(s3);
342 assertTrue(a.prefixCompare(i3) > 0);
343 assertFalse(i3.startsWith(a));