mirror of https://github.com/OpenIdentityPlatform/OpenDJ.git

Matthew Swift
25.33.2012 263d085885df024dca9250cc03c807912b0a7662
opendj3/opendj-ldap-sdk/src/test/java/org/forgerock/opendj/ldap/ByteStringTestCase.java
@@ -6,17 +6,16 @@
 * (the "License").  You may not use this file except in compliance
 * with the License.
 *
 * You can obtain a copy of the license at
 * trunk/opendj3/legal-notices/CDDLv1_0.txt
 * You can obtain a copy of the license at legal-notices/CDDLv1_0.txt
 * or http://forgerock.org/license/CDDLv1.0.html.
 * See the License for the specific language governing permissions
 * and limitations under the License.
 *
 * When distributing Covered Code, include this CDDL HEADER in each
 * file and include the License file at
 * trunk/opendj3/legal-notices/CDDLv1_0.txt.  If applicable,
 * add the following below this CDDL HEADER, with the fields enclosed
 * by brackets "[]" replaced with your own identifying information:
 * file and include the License file at legal-notices/CDDLv1_0.txt.
 * If applicable, add the following below this CDDL HEADER, with the
 * fields enclosed by brackets "[]" replaced with your own identifying
 * information:
 *      Portions Copyright [yyyy] [name of copyright owner]
 *
 * CDDL HEADER END
@@ -28,189 +27,142 @@
package org.forgerock.opendj.ldap;
import java.util.Arrays;
import org.forgerock.opendj.ldap.ByteString;
import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;
/**
 * This class defines a set of tests for the ByteString class.
 */
@SuppressWarnings("javadoc")
public class ByteStringTestCase extends ByteSequenceTestCase
{
  /**
   * ByteString data provider.
   *
   * @return The array of ByteStrings and the bytes it should contain.
   */
  @DataProvider(name = "byteSequenceProvider")
  public Object[][] byteSequenceProvider() throws Exception
  {
    byte[] testBytes = new byte[] { (byte) 0x01, (byte) 0x02, (byte) 0x03,
        (byte) 0x04, (byte) 0x05, (byte) 0x06, (byte) 0x07,
        (byte) 0x08 };
public class ByteStringTestCase extends ByteSequenceTestCase {
    /**
     * ByteString data provider.
     *
     * @return The array of ByteStrings and the bytes it should contain.
     */
    @DataProvider(name = "byteSequenceProvider")
    public Object[][] byteSequenceProvider() throws Exception {
        byte[] testBytes =
                new byte[] { (byte) 0x01, (byte) 0x02, (byte) 0x03, (byte) 0x04, (byte) 0x05,
                    (byte) 0x06, (byte) 0x07, (byte) 0x08 };
    return new Object[][] {
        { ByteString.empty(), new byte[0] },
        { ByteString.valueOf(1),
            new byte[] { (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01 } },
        { ByteString.valueOf(Integer.MAX_VALUE),
            new byte[] { (byte) 0x7F, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF } },
        { ByteString.valueOf(Integer.MIN_VALUE),
            new byte[] { (byte) 0x80, (byte) 0x00, (byte) 0x00, (byte) 0x00 } },
        {
            ByteString.valueOf(Long.MAX_VALUE),
            new byte[] { (byte) 0x7F, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
                (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF } },
        {
            ByteString.valueOf(Long.MIN_VALUE),
            new byte[] { (byte) 0x80, (byte) 0x00, (byte) 0x00, (byte) 0x00,
                (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00 } },
        { ByteString.valueOf("cn=testvalue"), "cn=testvalue".getBytes("UTF-8") },
        { ByteString.valueOf((Object) "cn=testvalue"), "cn=testvalue".getBytes("UTF-8") },
        { ByteString.valueOf("cn=testvalue".toCharArray()), "cn=testvalue".getBytes("UTF-8") },
        { ByteString.valueOf((Object) "cn=testvalue".toCharArray()), "cn=testvalue".getBytes("UTF-8") },
        { ByteString.valueOf(testBytes), testBytes },
        { ByteString.valueOf((Object) testBytes), testBytes },
        { ByteString.valueOf(ByteString.valueOf("cn=testvalue")), "cn=testvalue".getBytes("UTF-8") },
        { ByteString.wrap(new byte[0]), new byte[0] },
        {
            ByteString
                .wrap(new byte[] { (byte) 0x01, (byte) 0x02, (byte) 0x03,
                    (byte) 0x04, (byte) 0x05, (byte) 0x06, (byte) 0x07,
                    (byte) 0x08 }),
            new byte[] { (byte) 0x01, (byte) 0x02, (byte) 0x03, (byte) 0x04,
                (byte) 0x05, (byte) 0x06, (byte) 0x07, (byte) 0x08 } },
        {
            ByteString.wrap(new byte[] { (byte) 0x01, (byte) 0x02, (byte) 0x03,
                (byte) 0x04, (byte) 0x05, (byte) 0x06, (byte) 0x07,
                (byte) 0x08, (byte) 0x09, (byte) 0x10 }, 0, 8),
            new byte[] { (byte) 0x01, (byte) 0x02, (byte) 0x03, (byte) 0x04,
                (byte) 0x05, (byte) 0x06, (byte) 0x07, (byte) 0x08 } },
        {
            ByteString.wrap(new byte[] { (byte) 0x01, (byte) 0x02, (byte) 0x03,
                (byte) 0x04, (byte) 0x05, (byte) 0x06, (byte) 0x07,
                (byte) 0x08, (byte) 0x09, (byte) 0x10 }, 1, 8),
            new byte[] { (byte) 0x02, (byte) 0x03, (byte) 0x04, (byte) 0x05,
                (byte) 0x06, (byte) 0x07, (byte) 0x08, (byte) 0x09 } },
        {
            ByteString.wrap(new byte[] { (byte) 0x01, (byte) 0x02, (byte) 0x03,
                (byte) 0x04, (byte) 0x05, (byte) 0x06, (byte) 0x07,
                (byte) 0x08, (byte) 0x09, (byte) 0x10 }, 2, 8),
            new byte[] { (byte) 0x03, (byte) 0x04, (byte) 0x05, (byte) 0x06,
                (byte) 0x07, (byte) 0x08, (byte) 0x09, (byte) 0x10 } },
        {
            ByteString.wrap(
                new byte[] { (byte) 0x01, (byte) 0x02, (byte) 0x03,
                    (byte) 0x04, (byte) 0x05, (byte) 0x06, (byte) 0x07,
                    (byte) 0x08 }, 3, 0), new byte[0] }, };
  }
        return new Object[][] {
            { ByteString.empty(), new byte[0] },
            { ByteString.valueOf(1),
                new byte[] { (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x01 } },
            { ByteString.valueOf(Integer.MAX_VALUE),
                new byte[] { (byte) 0x7F, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF } },
            { ByteString.valueOf(Integer.MIN_VALUE),
                new byte[] { (byte) 0x80, (byte) 0x00, (byte) 0x00, (byte) 0x00 } },
            {
                ByteString.valueOf(Long.MAX_VALUE),
                new byte[] { (byte) 0x7F, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF, (byte) 0xFF,
                    (byte) 0xFF, (byte) 0xFF, (byte) 0xFF } },
            {
                ByteString.valueOf(Long.MIN_VALUE),
                new byte[] { (byte) 0x80, (byte) 0x00, (byte) 0x00, (byte) 0x00, (byte) 0x00,
                    (byte) 0x00, (byte) 0x00, (byte) 0x00 } },
            { ByteString.valueOf("cn=testvalue"), "cn=testvalue".getBytes("UTF-8") },
            { ByteString.valueOf((Object) "cn=testvalue"), "cn=testvalue".getBytes("UTF-8") },
            { ByteString.valueOf("cn=testvalue".toCharArray()), "cn=testvalue".getBytes("UTF-8") },
            { ByteString.valueOf((Object) "cn=testvalue".toCharArray()),
                "cn=testvalue".getBytes("UTF-8") },
            { ByteString.valueOf(testBytes), testBytes },
            { ByteString.valueOf((Object) testBytes), testBytes },
            { ByteString.valueOf(ByteString.valueOf("cn=testvalue")),
                "cn=testvalue".getBytes("UTF-8") },
            { ByteString.wrap(new byte[0]), new byte[0] },
            {
                ByteString.wrap(new byte[] { (byte) 0x01, (byte) 0x02, (byte) 0x03, (byte) 0x04,
                    (byte) 0x05, (byte) 0x06, (byte) 0x07, (byte) 0x08 }),
                new byte[] { (byte) 0x01, (byte) 0x02, (byte) 0x03, (byte) 0x04, (byte) 0x05,
                    (byte) 0x06, (byte) 0x07, (byte) 0x08 } },
            {
                ByteString.wrap(new byte[] { (byte) 0x01, (byte) 0x02, (byte) 0x03, (byte) 0x04,
                    (byte) 0x05, (byte) 0x06, (byte) 0x07, (byte) 0x08, (byte) 0x09, (byte) 0x10 },
                        0, 8),
                new byte[] { (byte) 0x01, (byte) 0x02, (byte) 0x03, (byte) 0x04, (byte) 0x05,
                    (byte) 0x06, (byte) 0x07, (byte) 0x08 } },
            {
                ByteString.wrap(new byte[] { (byte) 0x01, (byte) 0x02, (byte) 0x03, (byte) 0x04,
                    (byte) 0x05, (byte) 0x06, (byte) 0x07, (byte) 0x08, (byte) 0x09, (byte) 0x10 },
                        1, 8),
                new byte[] { (byte) 0x02, (byte) 0x03, (byte) 0x04, (byte) 0x05, (byte) 0x06,
                    (byte) 0x07, (byte) 0x08, (byte) 0x09 } },
            {
                ByteString.wrap(new byte[] { (byte) 0x01, (byte) 0x02, (byte) 0x03, (byte) 0x04,
                    (byte) 0x05, (byte) 0x06, (byte) 0x07, (byte) 0x08, (byte) 0x09, (byte) 0x10 },
                        2, 8),
                new byte[] { (byte) 0x03, (byte) 0x04, (byte) 0x05, (byte) 0x06, (byte) 0x07,
                    (byte) 0x08, (byte) 0x09, (byte) 0x10 } },
            {
                ByteString.wrap(new byte[] { (byte) 0x01, (byte) 0x02, (byte) 0x03, (byte) 0x04,
                    (byte) 0x05, (byte) 0x06, (byte) 0x07, (byte) 0x08 }, 3, 0), new byte[0] }, };
    }
    @DataProvider(name = "byteStringIntegerProvider")
    public Object[][] byteStringIntegerProvider() {
        return new Object[][] { { ByteString.valueOf(0), 0 }, { ByteString.valueOf(1), 1 },
            { ByteString.valueOf(Integer.MAX_VALUE), Integer.MAX_VALUE },
            { ByteString.valueOf(Integer.MIN_VALUE), Integer.MIN_VALUE }, };
    }
    @DataProvider(name = "byteStringLongProvider")
    public Object[][] byteStringLongProvider() {
        return new Object[][] { { ByteString.valueOf(0L), 0L }, { ByteString.valueOf(1L), 1L },
            { ByteString.valueOf(Long.MAX_VALUE), Long.MAX_VALUE },
            { ByteString.valueOf(Long.MIN_VALUE), Long.MIN_VALUE } };
    }
  @DataProvider(name = "byteStringIntegerProvider")
  public Object[][] byteStringIntegerProvider()
  {
    return new Object[][] { { ByteString.valueOf(0), 0 },
        { ByteString.valueOf(1), 1 },
        { ByteString.valueOf(Integer.MAX_VALUE), Integer.MAX_VALUE },
        { ByteString.valueOf(Integer.MIN_VALUE), Integer.MIN_VALUE }, };
  }
    @DataProvider(name = "byteStringCharArrayProvider")
    public Object[][] byteStringCharArrayProvider() {
        return new Object[][] { { "" }, { "1" }, { "1234567890" } };
    }
    @Test(expectedExceptions = IndexOutOfBoundsException.class)
    public void testInvalidWrapLength() {
        ByteString.wrap(new byte[] { (byte) 0x00, (byte) 0x01, (byte) 0x02, (byte) 0x03 }, 2, 8);
    }
    @Test(dataProvider = "byteStringIntegerProvider")
    public void testToInteger(final ByteString bs, final int i) {
        Assert.assertEquals(bs.toInt(), i);
    }
  @DataProvider(name = "byteStringLongProvider")
  public Object[][] byteStringLongProvider()
  {
    return new Object[][] { { ByteString.valueOf(0L), 0L },
        { ByteString.valueOf(1L), 1L },
        { ByteString.valueOf(Long.MAX_VALUE), Long.MAX_VALUE },
        { ByteString.valueOf(Long.MIN_VALUE), Long.MIN_VALUE } };
  }
    @Test(dataProvider = "byteStringLongProvider")
    public void testToLong(final ByteString bs, final long l) {
        Assert.assertEquals(bs.toLong(), l);
    }
    @Test(dataProvider = "byteStringCharArrayProvider")
    public void testFromStringToCharArray(final String s) {
        ByteString bs = ByteString.valueOf(s);
        Assert.assertTrue(Arrays.equals(bs.toCharArray(), s.toCharArray()));
    }
    @Test(dataProvider = "byteStringCharArrayProvider")
    public void testFromCharArrayToCharArray(final String s) {
        final char[] chars = s.toCharArray();
        ByteString bs = ByteString.valueOf(chars);
        Assert.assertTrue(Arrays.equals(bs.toCharArray(), chars));
    }
  @DataProvider(name = "byteStringCharArrayProvider")
  public Object[][] byteStringCharArrayProvider()
  {
    return new Object[][] { { "" }, { "1" }, { "1234567890" } };
  }
    @Test(dataProvider = "byteStringCharArrayProvider")
    public void testValueOfCharArray(final String s) {
        ByteString bs = ByteString.valueOf(s.toCharArray());
        Assert.assertEquals(bs.toString(), s);
    }
    @Test(expectedExceptions = IndexOutOfBoundsException.class)
    public void testUndersizedToInteger() {
        ByteString.wrap(new byte[] { (byte) 0x00, (byte) 0x01 }).toInt();
    }
  @Test(expectedExceptions = IndexOutOfBoundsException.class)
  public void testInvalidWrapLength()
  {
    ByteString.wrap(new byte[] { (byte) 0x00, (byte) 0x01, (byte) 0x02,
        (byte) 0x03 }, 2, 8);
  }
  @Test(dataProvider = "byteStringIntegerProvider")
  public void testToInteger(final ByteString bs, final int i)
  {
    Assert.assertEquals(bs.toInt(), i);
  }
  @Test(dataProvider = "byteStringLongProvider")
  public void testToLong(final ByteString bs, final long l)
  {
    Assert.assertEquals(bs.toLong(), l);
  }
  @Test(dataProvider = "byteStringCharArrayProvider")
  public void testFromStringToCharArray(final String s)
  {
    ByteString bs = ByteString.valueOf(s);
    Assert.assertTrue(Arrays.equals(bs.toCharArray(), s.toCharArray()));
  }
  @Test(dataProvider = "byteStringCharArrayProvider")
  public void testFromCharArrayToCharArray(final String s)
  {
    final char[] chars = s.toCharArray();
    ByteString bs = ByteString.valueOf(chars);
    Assert.assertTrue(Arrays.equals(bs.toCharArray(), chars));
  }
  @Test(dataProvider = "byteStringCharArrayProvider")
  public void testValueOfCharArray(final String s)
  {
    ByteString bs = ByteString.valueOf(s.toCharArray());
    Assert.assertEquals(bs.toString(), s);
  }
  @Test(expectedExceptions = IndexOutOfBoundsException.class)
  public void testUndersizedToInteger()
  {
    ByteString.wrap(new byte[] { (byte) 0x00, (byte) 0x01 }).toInt();
  }
  @Test(expectedExceptions = IndexOutOfBoundsException.class)
  public void testUndersizedToLong()
  {
    ByteString.wrap(
        new byte[] { (byte) 0x00, (byte) 0x01, (byte) 0x02, (byte) 0x03 })
        .toLong();
  }
    @Test(expectedExceptions = IndexOutOfBoundsException.class)
    public void testUndersizedToLong() {
        ByteString.wrap(new byte[] { (byte) 0x00, (byte) 0x01, (byte) 0x02, (byte) 0x03 }).toLong();
    }
}