From 40d362fdd298e948c1514cd047fb9abfd1cc8c61 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Mon, 03 Mar 2014 11:43:17 +0000
Subject: [PATCH] SchemaUtilsTest.java: Added more tests.
---
opendj-core/src/test/java/org/forgerock/opendj/ldap/schema/SchemaUtilsTest.java | 156 ++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 156 insertions(+), 0 deletions(-)
diff --git a/opendj-core/src/test/java/org/forgerock/opendj/ldap/schema/SchemaUtilsTest.java b/opendj-core/src/test/java/org/forgerock/opendj/ldap/schema/SchemaUtilsTest.java
index f337e90..7ba7f82 100644
--- a/opendj-core/src/test/java/org/forgerock/opendj/ldap/schema/SchemaUtilsTest.java
+++ b/opendj-core/src/test/java/org/forgerock/opendj/ldap/schema/SchemaUtilsTest.java
@@ -26,6 +26,8 @@
*/
package org.forgerock.opendj.ldap.schema;
+import org.fest.assertions.Assertions;
+import org.forgerock.opendj.ldap.ByteString;
import org.forgerock.opendj.ldap.DecodeException;
import org.testng.Assert;
import org.testng.annotations.DataProvider;
@@ -88,4 +90,158 @@
final SubstringReader reader = new SubstringReader(oid);
Assert.assertEquals(SchemaUtils.readOID(reader, false), expected);
}
+
+ @DataProvider
+ public Object[][] nonAsciiStringProvider() throws Exception {
+ final String nonAsciiChars = "ëéèêœ";
+ final String nonAsciiCharsReplacement = new String(
+ new byte[] { _(0x65), _(0xcc), _(0x88), _(0x65), _(0xcc),
+ _(0x81), _(0x65), _(0xcc), _(0x80), _(0x65), _(0xcc),
+ _(0x82), _(0xc5), _(0x93), }, "UTF8");
+ return new Object[][] {
+ { nonAsciiChars, false, false, nonAsciiCharsReplacement },
+ { nonAsciiChars, false, true, nonAsciiCharsReplacement },
+ { nonAsciiChars, true, false, nonAsciiCharsReplacement },
+ { nonAsciiChars, true, true, nonAsciiCharsReplacement },
+ };
+ }
+
+ @DataProvider
+ public Object[][] stringProvider() throws Exception {
+ final String allSpaceChars = "\u0009\n\u000b\u000c\r\u000e";
+ final String mappedToNothingChars = "\u007F"
+ + "\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\u0008"
+ + "\u000E\u000F"
+ + "\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019"
+ + "\u001A\u001B\u001C\u001D\u001E\u001F";
+ return new Object[][] {
+ // empty always remains empty
+ { "", false, false, "" },
+ { "", false, true, "" },
+ { "", true, false, "" },
+ { "", true, true, "" },
+ // double space chars are always converted to single char
+ { " ", false, false, " " },
+ { " ", false, true, " " },
+ { " ", true, false, " " },
+ { " ", true, true, " " },
+ // trim all space chars to a single space
+ { allSpaceChars, false, false, " " },
+ { allSpaceChars, false, true, " " },
+ { allSpaceChars, true, false, " " },
+ { allSpaceChars, true, true, " " },
+ // remove chars that are not mapped to anything
+ { mappedToNothingChars, false, false, " " },
+ { mappedToNothingChars, false, true, " " },
+ { mappedToNothingChars, true, false, " " },
+ { mappedToNothingChars, true, true, " " },
+ };
+ }
+
+ /** Mixes trimming and case folding tests. */
+ @DataProvider
+ public Object[][] stringWithSpacesProvider() {
+ return new Object[][] {
+ { " this is a string ", false, false, " this is a string " },
+ { " this is a string ", false, true, " this is a string " },
+ { " this is a string ", true, false, "this is a string" },
+ { " this is a string ", true, true, "this is a string" },
+ { " this is a string ", false, false, " this is a string " },
+ { " this is a string ", false, true, " this is a string " },
+ { " this is a string ", true, false, "this is a string" },
+ { " this is a string ", true, true, "this is a string" },
+ { " THIS IS A STRING ", false, false, " THIS IS A STRING " },
+ { " THIS IS A STRING ", false, true, " this is a string " },
+ { " THIS IS A STRING ", true, false, "THIS IS A STRING" },
+ { " THIS IS A STRING ", true, true, "this is a string" },
+ };
+ }
+
+ //@Checkstyle:off
+ private byte _(int i) {
+ return (byte) i;
+ }
+ //@Checkstyle:on
+
+ @Test(dataProvider = "stringProvider")
+ public void testNormalizeStringProvider(String value, boolean trim, boolean foldCase, String expected)
+ throws Exception {
+ ByteString val = ByteString.valueOf(value);
+ ByteString normValue = SchemaUtils.normalizeStringAttributeValue(val, trim, foldCase);
+ Assertions.assertThat(normValue.toString()).isEqualTo(expected);
+ }
+
+ @Test(dataProvider = "nonAsciiStringProvider")
+ public void testNormalizeStringWithNonAscii(String value, boolean trim, boolean foldCase, String expected)
+ throws Exception {
+ testNormalizeStringProvider(value, trim, foldCase, expected);
+ }
+
+ @Test(dataProvider = "stringWithSpacesProvider")
+ public void testNormalizeStringWithSpaces(String value, boolean trim, boolean foldCase, String expected)
+ throws Exception {
+ testNormalizeStringProvider(value, trim, foldCase, expected);
+ }
+
+ @Test(dataProvider = "stringProvider")
+ public void testNormalizeIA5String(String value, boolean trim, boolean foldCase, String expected)
+ throws Exception {
+ ByteString val = ByteString.valueOf(value);
+ ByteString normValue = SchemaUtils.normalizeIA5StringAttributeValue(val, trim, foldCase);
+ Assertions.assertThat(normValue.toString()).isEqualTo(expected);
+ }
+
+ @Test(dataProvider = "nonAsciiStringProvider", expectedExceptions = { DecodeException.class })
+ public void testNormalizeIA5StringShouldThrowForNonAscii(
+ String value, boolean trim, boolean foldCase, String expected) throws Exception {
+ testNormalizeIA5String(value, trim, foldCase, expected);
+ }
+
+ @Test(dataProvider = "stringWithSpacesProvider")
+ public void testNormalizeIA5StringWithSpaces(String value, boolean trim, boolean foldCase, String expected)
+ throws Exception {
+ testNormalizeIA5String(value, trim, foldCase, expected);
+ }
+
+ @Test(dataProvider = "stringProvider")
+ public void testNormalizeStringList(String value, boolean trim, boolean foldCase, String expected)
+ throws Exception {
+ ByteString val = ByteString.valueOf(value);
+ ByteString normValue = SchemaUtils.normalizeStringListAttributeValue(val, trim, foldCase);
+ Assertions.assertThat(normValue.toString()).isEqualTo(expected);
+ }
+
+ @Test(dataProvider = "nonAsciiStringProvider")
+ public void testNormalizeStringListWithNonAscii(String value, boolean trim, boolean foldCase, String expected)
+ throws Exception {
+ testNormalizeStringList(value, trim, foldCase, expected);
+ }
+
+ @DataProvider
+ public Object[][] stringListProvider() throws Exception {
+ return new Object[][] {
+ { "this$is$a$list", false, false, "this$is$a$list" },
+ { "this$is$a$list", false, true, "this$is$a$list"},
+ { "this$is$a$list", true, false, "this$is$a$list" },
+ { "this$is$a$list", true, true, "this$is$a$list" },
+ { "this $ is $ a $ list", false, false, "this$is$a$list" },
+ { "this $ is $ a $ list", false, true, "this$is$a$list" },
+ { "this $ is $ a $ list", true, false, "this$is$a$list" },
+ { "this $ is $ a $ list", true, true, "this$is$a$list" },
+ { "this $ is \\\\ $ a $ list", false, false, "this$is \\\\$a$list" },
+ { "this $ is \\\\ $ a $ list", false, true, "this$is \\\\$a$list" },
+ { "this $ is \\\\ $ a $ list", true, false, "this$is \\\\$a$list" },
+ { "this $ is \\\\ $ a $ list", true, true, "this$is \\\\$a$list" },
+ { "$ this $ is $ a $ list", false, false, "$this$is$a$list" },
+ { "$ this $ is $ a $ list", false, true, "$this$is$a$list" },
+ { "$ this $ is $ a $ list", true, false, "$this$is$a$list" },
+ { "$ this $ is $ a $ list", true, true, "$this$is$a$list" },
+ };
+ }
+
+ @Test(dataProvider = "stringListProvider")
+ public void testNormalizeStringListWithList(String value, boolean trim, boolean foldCase, String expected)
+ throws Exception {
+ testNormalizeStringList(value, trim, foldCase, expected);
+ }
}
--
Gitblit v1.10.0