From af226b820c4f28ad465048cc8636341604927fcc Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Wed, 12 Nov 2014 10:06:43 +0000
Subject: [PATCH] OPENDJ-1591 (CR-5206) Switch to SDK matching rules

---
 opendj-core/src/test/java/org/forgerock/opendj/ldap/ByteSequenceTestCase.java |   13 +++----------
 opendj-core/src/test/java/org/forgerock/opendj/ldap/ByteStringTestCase.java   |   39 +++++++++++++++++++++++++++++++++------
 opendj-core/src/main/java/org/forgerock/opendj/ldap/ByteSequence.java         |    8 ++++++++
 3 files changed, 44 insertions(+), 16 deletions(-)

diff --git a/opendj-core/src/main/java/org/forgerock/opendj/ldap/ByteSequence.java b/opendj-core/src/main/java/org/forgerock/opendj/ldap/ByteSequence.java
index ce217f6..7305bc7 100755
--- a/opendj-core/src/main/java/org/forgerock/opendj/ldap/ByteSequence.java
+++ b/opendj-core/src/main/java/org/forgerock/opendj/ldap/ByteSequence.java
@@ -36,6 +36,14 @@
  */
 public interface ByteSequence extends Comparable<ByteSequence> {
 
+    /** A byte array comparator. */
+    public static final Comparator<byte[]> BYTE_ARRAY_COMPARATOR = new Comparator<byte[]>() {
+        @Override
+        public int compare(final byte[] b1, final byte[] b2) {
+            return ByteString.compareTo(b1, 0, b1.length, b2, 0, b2.length);
+        }
+    };
+
     /** A ByteSequence comparator. */
     public static final Comparator<ByteSequence> COMPARATOR = new Comparator<ByteSequence>() {
         @Override
diff --git a/opendj-core/src/test/java/org/forgerock/opendj/ldap/ByteSequenceTestCase.java b/opendj-core/src/test/java/org/forgerock/opendj/ldap/ByteSequenceTestCase.java
index c04d578..9de5758 100644
--- a/opendj-core/src/test/java/org/forgerock/opendj/ldap/ByteSequenceTestCase.java
+++ b/opendj-core/src/test/java/org/forgerock/opendj/ldap/ByteSequenceTestCase.java
@@ -22,12 +22,11 @@
  *
  *
  *      Copyright 2010 Sun Microsystems, Inc.
+ *      Portions copyright 2014 ForgeRock AS
  */
-
 package org.forgerock.opendj.ldap;
 
 import java.io.ByteArrayOutputStream;
-import java.io.UnsupportedEncodingException;
 import java.util.Arrays;
 
 import javax.xml.bind.DatatypeConverter;
@@ -158,14 +157,8 @@
     }
 
     @Test(dataProvider = "byteSequenceProvider")
-    public void testToString(final ByteSequence bs, final byte[] ba) {
-        String str;
-        try {
-            str = new String(ba, "UTF-8");
-        } catch (final UnsupportedEncodingException uee) {
-            str = new String(ba);
-        }
-
+    public void testToString(final ByteSequence bs, final byte[] ba) throws Exception {
+        String str = new String(ba, "UTF-8");
         Assert.assertTrue(bs.toString().equals(str));
     }
 
diff --git a/opendj-core/src/test/java/org/forgerock/opendj/ldap/ByteStringTestCase.java b/opendj-core/src/test/java/org/forgerock/opendj/ldap/ByteStringTestCase.java
index 77264ae..e141d06 100644
--- a/opendj-core/src/test/java/org/forgerock/opendj/ldap/ByteStringTestCase.java
+++ b/opendj-core/src/test/java/org/forgerock/opendj/ldap/ByteStringTestCase.java
@@ -22,13 +22,10 @@
  *
  *
  *      Copyright 2010 Sun Microsystems, Inc.
- *      Portions copyright 2011-2012 ForgeRock AS
+ *      Portions copyright 2011-2014 ForgeRock AS
  */
-
 package org.forgerock.opendj.ldap;
 
-import static org.fest.assertions.Assertions.*;
-
 import java.util.Arrays;
 
 import javax.xml.bind.DatatypeConverter;
@@ -38,6 +35,8 @@
 import org.testng.annotations.DataProvider;
 import org.testng.annotations.Test;
 
+import static org.fest.assertions.Assertions.*;
+
 /**
  * This class defines a set of tests for the ByteString class.
  */
@@ -229,11 +228,28 @@
                         + "8PHy8/T19vf4+fr7/P3+/w==" }, };
     }
 
+    @DataProvider
+    public Object[][] comparatorTest() throws Exception {
+        final Object[][] array = byteSequenceProvider();
+        int len = array.length;
+        final Object[][] result = new Object[len + 4][];
+        for (int i = 0; i < array.length; i++) {
+            final Object[] original = array[i];
+            final Object[] copy = Arrays.copyOf(original, original.length + 1);
+            copy[original.length] = 0;
+            result[i] = copy;
+        }
+        result[len++] = new Object[] { ByteString.empty(), new byte[0], 0 };
+        result[len++] = new Object[] { ByteString.empty(), "bla".getBytes("UTF8"), -3 };
+        result[len++] = new Object[] { ByteString.valueOf("bla"), new byte[0], 3 };
+        result[len++] = new Object[] { ByteString.valueOf("bla"), "bla".getBytes("UTF8"), 0 };
+        return result;
+    }
+
     @Test(dataProvider = "invalidBase64Data",
             expectedExceptions = { LocalizedIllegalArgumentException.class })
     public void testValueOfBase64ThrowsLIAE(final String invalidBase64) throws Exception {
-        Assert.fail("Expected exception but got result: "
-                + Arrays.toString(new ByteString[] { ByteString.valueOfBase64(invalidBase64) }));
+        ByteString.valueOfBase64(invalidBase64);
     }
 
     @Test(dataProvider = "validBase64Data")
@@ -271,4 +287,15 @@
     public void testValueOfInvalidHex() {
         ByteString.valueOfHex("636E3D746573x7476616C7565");
     }
+
+    @Test(dataProvider = "comparatorTest")
+    public void testComparator(final ByteSequence bs, final byte[] ba, final int expectedCmp) throws Exception {
+        assertThat(ByteSequence.COMPARATOR.compare(bs, ByteString.wrap(ba))).isEqualTo(expectedCmp);
+    }
+
+    @Test(dataProvider = "comparatorTest")
+    public void testByteArrayComparator(final ByteSequence bs, final byte[] ba, final int expectedCmp)
+            throws Exception {
+        assertThat(ByteSequence.BYTE_ARRAY_COMPARATOR.compare(bs.toByteArray(), ba)).isEqualTo(expectedCmp);
+    }
 }

--
Gitblit v1.10.0