From b22a4e84886e7388d509376be9afce31833de054 Mon Sep 17 00:00:00 2001 From: "Shawn O. Pearce" Date: Tue, 2 Nov 2010 16:29:39 -0700 Subject: Add ObjectId getByte for random access Processing git notes requires random access to part of the raw data of each ObjectId... which isn't easy because ObjectIds are stored with an internal representation of 5 ints. Expose random access to the individual data bytes through new methods, avoiding the need to convert first to a byte[20]. Change-Id: I99e64700b27fc0c95aa14ef8ad46a0e8832d4441 Signed-off-by: Shawn O. Pearce --- .../tst/org/eclipse/jgit/lib/ObjectIdTest.java | 125 +++++++++++++++++++++ .../tst/org/eclipse/jgit/lib/T0001_ObjectId.java | 111 ------------------ 2 files changed, 125 insertions(+), 111 deletions(-) create mode 100644 org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ObjectIdTest.java delete mode 100644 org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/T0001_ObjectId.java (limited to 'org.eclipse.jgit.test/tst') diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ObjectIdTest.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ObjectIdTest.java new file mode 100644 index 0000000000..2eb1e6b9e1 --- /dev/null +++ b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/ObjectIdTest.java @@ -0,0 +1,125 @@ +/* + * Copyright (C) 2009, Google Inc. + * Copyright (C) 2008, Jonas Fonseca + * Copyright (C) 2006-2008, Shawn O. Pearce + * and other copyright owners as documented in the project's IP log. + * + * This program and the accompanying materials are made available + * under the terms of the Eclipse Distribution License v1.0 which + * accompanies this distribution, is reproduced below, and is + * available at http://www.eclipse.org/org/documents/edl-v10.php + * + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or + * without modification, are permitted provided that the following + * conditions are met: + * + * - Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * - Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * + * - Neither the name of the Eclipse Foundation, Inc. nor the + * names of its contributors may be used to endorse or promote + * products derived from this software without specific prior + * written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND + * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR + * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, + * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF + * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.eclipse.jgit.lib; + +import junit.framework.TestCase; + +public class ObjectIdTest extends TestCase { + public void test001_toString() { + final String x = "def4c620bc3713bb1bb26b808ec9312548e73946"; + final ObjectId oid = ObjectId.fromString(x); + assertEquals(x, oid.name()); + } + + public void test002_toString() { + final String x = "ff00eedd003713bb1bb26b808ec9312548e73946"; + final ObjectId oid = ObjectId.fromString(x); + assertEquals(x, oid.name()); + } + + public void test003_equals() { + final String x = "def4c620bc3713bb1bb26b808ec9312548e73946"; + final ObjectId a = ObjectId.fromString(x); + final ObjectId b = ObjectId.fromString(x); + assertEquals(a.hashCode(), b.hashCode()); + assertTrue("a and b are same", a.equals(b)); + } + + public void test004_isId() { + assertTrue("valid id", ObjectId + .isId("def4c620bc3713bb1bb26b808ec9312548e73946")); + } + + public void test005_notIsId() { + assertFalse("bob is not an id", ObjectId.isId("bob")); + } + + public void test006_notIsId() { + assertFalse("39 digits is not an id", ObjectId + .isId("def4c620bc3713bb1bb26b808ec9312548e7394")); + } + + public void test007_isId() { + assertTrue("uppercase is accepted", ObjectId + .isId("Def4c620bc3713bb1bb26b808ec9312548e73946")); + } + + public void test008_notIsId() { + assertFalse("g is not a valid hex digit", ObjectId + .isId("gef4c620bc3713bb1bb26b808ec9312548e73946")); + } + + public void test009_toString() { + final String x = "ff00eedd003713bb1bb26b808ec9312548e73946"; + final ObjectId oid = ObjectId.fromString(x); + assertEquals(x, ObjectId.toString(oid)); + } + + public void test010_toString() { + final String x = "0000000000000000000000000000000000000000"; + assertEquals(x, ObjectId.toString(null)); + } + + public void test011_toString() { + final String x = "0123456789ABCDEFabcdef1234567890abcdefAB"; + final ObjectId oid = ObjectId.fromString(x); + assertEquals(x.toLowerCase(), oid.name()); + } + + public void testGetByte() { + byte[] raw = new byte[20]; + for (int i = 0; i < 20; i++) + raw[i] = (byte) (0xa0 + i); + ObjectId id = ObjectId.fromRaw(raw); + + assertEquals(raw[0] & 0xff, id.getFirstByte()); + assertEquals(raw[0] & 0xff, id.getByte(0)); + assertEquals(raw[1] & 0xff, id.getByte(1)); + + for (int i = 2; i < 20; i++) + assertEquals("index " + i, raw[i] & 0xff, id.getByte(i)); + } +} diff --git a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/T0001_ObjectId.java b/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/T0001_ObjectId.java deleted file mode 100644 index 03176cb8fd..0000000000 --- a/org.eclipse.jgit.test/tst/org/eclipse/jgit/lib/T0001_ObjectId.java +++ /dev/null @@ -1,111 +0,0 @@ -/* - * Copyright (C) 2009, Google Inc. - * Copyright (C) 2008, Jonas Fonseca - * Copyright (C) 2006-2008, Shawn O. Pearce - * and other copyright owners as documented in the project's IP log. - * - * This program and the accompanying materials are made available - * under the terms of the Eclipse Distribution License v1.0 which - * accompanies this distribution, is reproduced below, and is - * available at http://www.eclipse.org/org/documents/edl-v10.php - * - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or - * without modification, are permitted provided that the following - * conditions are met: - * - * - Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * - * - Redistributions in binary form must reproduce the above - * copyright notice, this list of conditions and the following - * disclaimer in the documentation and/or other materials provided - * with the distribution. - * - * - Neither the name of the Eclipse Foundation, Inc. nor the - * names of its contributors may be used to endorse or promote - * products derived from this software without specific prior - * written permission. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND - * CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, - * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR - * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT - * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; - * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, - * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF - * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - */ - -package org.eclipse.jgit.lib; - -import junit.framework.TestCase; - -public class T0001_ObjectId extends TestCase { - public void test001_toString() { - final String x = "def4c620bc3713bb1bb26b808ec9312548e73946"; - final ObjectId oid = ObjectId.fromString(x); - assertEquals(x, oid.name()); - } - - public void test002_toString() { - final String x = "ff00eedd003713bb1bb26b808ec9312548e73946"; - final ObjectId oid = ObjectId.fromString(x); - assertEquals(x, oid.name()); - } - - public void test003_equals() { - final String x = "def4c620bc3713bb1bb26b808ec9312548e73946"; - final ObjectId a = ObjectId.fromString(x); - final ObjectId b = ObjectId.fromString(x); - assertEquals(a.hashCode(), b.hashCode()); - assertTrue("a and b are same", a.equals(b)); - } - - public void test004_isId() { - assertTrue("valid id", ObjectId - .isId("def4c620bc3713bb1bb26b808ec9312548e73946")); - } - - public void test005_notIsId() { - assertFalse("bob is not an id", ObjectId.isId("bob")); - } - - public void test006_notIsId() { - assertFalse("39 digits is not an id", ObjectId - .isId("def4c620bc3713bb1bb26b808ec9312548e7394")); - } - - public void test007_isId() { - assertTrue("uppercase is accepted", ObjectId - .isId("Def4c620bc3713bb1bb26b808ec9312548e73946")); - } - - public void test008_notIsId() { - assertFalse("g is not a valid hex digit", ObjectId - .isId("gef4c620bc3713bb1bb26b808ec9312548e73946")); - } - - public void test009_toString() { - final String x = "ff00eedd003713bb1bb26b808ec9312548e73946"; - final ObjectId oid = ObjectId.fromString(x); - assertEquals(x, ObjectId.toString(oid)); - } - - public void test010_toString() { - final String x = "0000000000000000000000000000000000000000"; - assertEquals(x, ObjectId.toString(null)); - } - - public void test011_toString() { - final String x = "0123456789ABCDEFabcdef1234567890abcdefAB"; - final ObjectId oid = ObjectId.fromString(x); - assertEquals(x.toLowerCase(), oid.name()); - } -} -- cgit v1.2.3