{"thread":{"id":"19029","subject":"[JGIT PATCH] Fix prefixCompare for AbbreviatedObjectId for sizes multiples of eight","startedAt":"2009-04-23T23:01:40Z","lastAt":"2009-04-23T23:01:40Z","messageCount":1,"participants":["Robin Rosenberg"],"isPatch":true,"patchVersion":1,"patchTotal":null},"messages":[{"id":"112141","messageId":"1240527700-22154-1-git-send-email-robin.rosenberg@dewire.com","threadId":"19029","inReplyTo":null,"subject":"[JGIT PATCH] Fix prefixCompare for AbbreviatedObjectId for sizes multiples of eight","fromName":"Robin Rosenberg","fromEmail":"robin.rosenberg@dewire.com","sentAt":"2009-04-23T23:01:40Z","receivedAt":"2009-04-23T23:01:40Z","isPatch":true,"sender":{"key":"robin.rosenberg@dewire.com","avatar":"https://avatars.githubusercontent.com/u/46357?v=4"},"body":"This tests the special cases for the mask computed for comparisons.\n\nSigned-off-by: Robin Rosenberg <robin.rosenberg@dewire.com>\n---\n .../spearce/jgit/lib/AbbreviatedObjectIdTest.java  |   60 ++++++++++++++++++++\n .../org/spearce/jgit/lib/AbbreviatedObjectId.java  |    2 +-\n 2 files changed, 61 insertions(+), 1 deletions(-)\n\ndiff --git a/org.spearce.jgit.test/tst/org/spearce/jgit/lib/AbbreviatedObjectIdTest.java b/org.spearce.jgit.test/tst/org/spearce/jgit/lib/AbbreviatedObjectIdTest.java\nindex 3f82d50..a6272e6 100644\n--- a/org.spearce.jgit.test/tst/org/spearce/jgit/lib/AbbreviatedObjectIdTest.java\n+++ b/org.spearce.jgit.test/tst/org/spearce/jgit/lib/AbbreviatedObjectIdTest.java\n@@ -263,6 +263,66 @@ public void testPrefixCompare_1() {\n \t\tassertFalse(i3.startsWith(a));\n \t}\n \n+\tpublic void testPrefixCompare_7() {\n+\t\tfinal String sa = \"7b6e806\";\n+\t\tfinal AbbreviatedObjectId a = AbbreviatedObjectId.fromString(sa);\n+\n+\t\tfinal String s1 = \"7b6e8067ec96acef9a4184b43210d583b6d2f99a\";\n+\t\tfinal ObjectId i1 = ObjectId.fromString(s1);\n+\t\tassertEquals(0, a.prefixCompare(i1));\n+\t\tassertTrue(i1.startsWith(a));\n+\n+\t\tfinal String s2 = \"7b6e8167ec86acef9a4184b43210d583b6d2f99a\";\n+\t\tfinal ObjectId i2 = ObjectId.fromString(s2);\n+\t\tassertTrue(a.prefixCompare(i2) < 0);\n+\t\tassertFalse(i2.startsWith(a));\n+\n+\t\tfinal String s3 = \"7b6e8057eca6acef9a4184b43210d583b6d2f99a\";\n+\t\tfinal ObjectId i3 = ObjectId.fromString(s3);\n+\t\tassertTrue(a.prefixCompare(i3) > 0);\n+\t\tassertFalse(i3.startsWith(a));\n+\t}\n+\n+\tpublic void testPrefixCompare_8() {\n+\t\tfinal String sa = \"7b6e8067\";\n+\t\tfinal AbbreviatedObjectId a = AbbreviatedObjectId.fromString(sa);\n+\n+\t\tfinal String s1 = \"7b6e8067ec96acef9a4184b43210d583b6d2f99a\";\n+\t\tfinal ObjectId i1 = ObjectId.fromString(s1);\n+\t\tassertEquals(0, a.prefixCompare(i1));\n+\t\tassertTrue(i1.startsWith(a));\n+\n+\t\tfinal String s2 = \"7b6e8167ec86acef9a4184b43210d583b6d2f99a\";\n+\t\tfinal ObjectId i2 = ObjectId.fromString(s2);\n+\t\tassertTrue(a.prefixCompare(i2) < 0);\n+\t\tassertFalse(i2.startsWith(a));\n+\n+\t\tfinal String s3 = \"7b6e8057eca6acef9a4184b43210d583b6d2f99a\";\n+\t\tfinal ObjectId i3 = ObjectId.fromString(s3);\n+\t\tassertTrue(a.prefixCompare(i3) > 0);\n+\t\tassertFalse(i3.startsWith(a));\n+\t}\n+\n+\tpublic void testPrefixCompare_9() {\n+\t\tfinal String sa = \"7b6e8067e\";\n+\t\tfinal AbbreviatedObjectId a = AbbreviatedObjectId.fromString(sa);\n+\n+\t\tfinal String s1 = \"7b6e8067ec96acef9a4184b43210d583b6d2f99a\";\n+\t\tfinal ObjectId i1 = ObjectId.fromString(s1);\n+\t\tassertEquals(0, a.prefixCompare(i1));\n+\t\tassertTrue(i1.startsWith(a));\n+\n+\t\tfinal String s2 = \"7b6e8167ec86acef9a4184b43210d583b6d2f99a\";\n+\t\tfinal ObjectId i2 = ObjectId.fromString(s2);\n+\t\tassertTrue(a.prefixCompare(i2) < 0);\n+\t\tassertFalse(i2.startsWith(a));\n+\n+\t\tfinal String s3 = \"7b6e8057eca6acef9a4184b43210d583b6d2f99a\";\n+\t\tfinal ObjectId i3 = ObjectId.fromString(s3);\n+\t\tassertTrue(a.prefixCompare(i3) > 0);\n+\t\tassertFalse(i3.startsWith(a));\n+\t}\n+\n \tpublic void testPrefixCompare_17() {\n \t\tfinal String sa = \"7b6e8067ec96acef9\";\n \t\tfinal AbbreviatedObjectId a = AbbreviatedObjectId.fromString(sa);\ndiff --git a/org.spearce.jgit/src/org/spearce/jgit/lib/AbbreviatedObjectId.java b/org.spearce.jgit/src/org/spearce/jgit/lib/AbbreviatedObjectId.java\nindex d76e5b5..ed03fb5 100644\n--- a/org.spearce.jgit/src/org/spearce/jgit/lib/AbbreviatedObjectId.java\n+++ b/org.spearce.jgit/src/org/spearce/jgit/lib/AbbreviatedObjectId.java\n@@ -129,7 +129,7 @@ static int mask(final int nibbles, final int word, final int v) {\n \t\t\treturn v;\n \t\t}\n \n-\t\tif (nibbles < b) {\n+\t\tif (nibbles <= b) {\n \t\t\t// We have none of the bits required for this word.\n \t\t\t//\n \t\t\treturn 0;\n-- \n1.6.2.2.446.gfbdc0\n"}]}