From cd105c9b35f0689e2998a3a18691547f0b091979 Mon Sep 17 00:00:00 2001
From: Jean-Noel Rouvignac <jean-noel.rouvignac@forgerock.com>
Date: Fri, 14 Feb 2014 12:00:46 +0000
Subject: [PATCH] OPENDJ-1308 Migrate schema support
---
opendj-core/src/test/java/org/forgerock/opendj/ldap/ConditionResultTestCase.java | 209 ++++++++++++++++++++++++++++++++++++++++++++++++++++
opendj-core/src/main/java/org/forgerock/opendj/ldap/ConditionResult.java | 2
2 files changed, 210 insertions(+), 1 deletions(-)
diff --git a/opendj-core/src/main/java/org/forgerock/opendj/ldap/ConditionResult.java b/opendj-core/src/main/java/org/forgerock/opendj/ldap/ConditionResult.java
index 42c4373..35d2251 100644
--- a/opendj-core/src/main/java/org/forgerock/opendj/ldap/ConditionResult.java
+++ b/opendj-core/src/main/java/org/forgerock/opendj/ldap/ConditionResult.java
@@ -177,7 +177,7 @@
public static ConditionResult or(final ConditionResult... results) {
ConditionResult finalResult = FALSE;
for (final ConditionResult result : results) {
- finalResult = and(finalResult, result);
+ finalResult = or(finalResult, result);
if (finalResult == TRUE) {
break;
}
diff --git a/opendj-core/src/test/java/org/forgerock/opendj/ldap/ConditionResultTestCase.java b/opendj-core/src/test/java/org/forgerock/opendj/ldap/ConditionResultTestCase.java
new file mode 100644
index 0000000..7f0cab7
--- /dev/null
+++ b/opendj-core/src/test/java/org/forgerock/opendj/ldap/ConditionResultTestCase.java
@@ -0,0 +1,209 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License, Version 1.0 only
+ * (the "License"). You may not use this file except in compliance
+ * with the License.
+ *
+ * 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 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
+ *
+ *
+ * Copyright 2008 Sun Microsystems, Inc.
+ * Portions Copyright 2014 ForgeRock AS
+ */
+package org.forgerock.opendj.ldap;
+
+import java.util.*;
+
+import org.testng.annotations.DataProvider;
+import org.testng.annotations.Test;
+
+import static org.forgerock.opendj.ldap.ConditionResult.*;
+import static org.testng.Assert.*;
+
+/**
+ * A set of test cases for the ConditionResult class.
+ */
+@SuppressWarnings("javadoc")
+public class ConditionResultTestCase extends SdkTestCase
+{
+
+ @DataProvider
+ public Iterator<ConditionResult[]> allPermutationsUpTo4Operands()
+ {
+ final ConditionResult[] values = ConditionResult.values();
+
+ final List<ConditionResult[]> results = new ArrayList<ConditionResult[]>();
+ results.add(new ConditionResult[0]);
+ for (int arrayLength = 1; arrayLength <= 4; arrayLength++)
+ {
+ final ConditionResult[] template = new ConditionResult[arrayLength];
+ allSubPermutations(values, results, template, 0, arrayLength);
+ }
+ return results.iterator();
+ }
+
+ private void allSubPermutations(final ConditionResult[] values,
+ final List<ConditionResult[]> results, final ConditionResult[] template,
+ int currentIndex, int endIndex)
+ {
+ if (currentIndex < endIndex)
+ {
+ for (ConditionResult r : values)
+ {
+ template[currentIndex] = r;
+ allSubPermutations(values, results, template, currentIndex + 1, endIndex);
+ if (currentIndex + 1 == endIndex)
+ {
+ results.add(Arrays.copyOf(template, template.length));
+ }
+ }
+ }
+ }
+
+ /**
+ * Tests some basic assumptions of the enumeration.
+ */
+ @Test
+ public void testBasic()
+ {
+ assertTrue(3 == values().length);
+ assertNotSame(TRUE, FALSE);
+ assertNotSame(FALSE, UNDEFINED);
+ assertNotSame(UNDEFINED, TRUE);
+ }
+
+ @Test
+ public void testNot()
+ {
+ assertEquals(not(FALSE), TRUE);
+ assertEquals(not(TRUE), FALSE);
+ assertEquals(not(UNDEFINED), UNDEFINED);
+ }
+
+ @Test
+ public void testAnd()
+ {
+ assertEquals(and(), TRUE);
+
+ assertEquals(and(TRUE), TRUE);
+ assertEquals(and(FALSE), FALSE);
+ assertEquals(and(UNDEFINED), UNDEFINED);
+
+ assertEquals(and(TRUE, TRUE), TRUE);
+ assertEquals(and(FALSE, FALSE), FALSE);
+ assertEquals(and(UNDEFINED, UNDEFINED), UNDEFINED);
+
+ assertAndIsCommutative(TRUE, FALSE, FALSE);
+ assertAndIsCommutative(TRUE, UNDEFINED, UNDEFINED);
+ assertAndIsCommutative(FALSE, UNDEFINED, FALSE);
+ }
+
+ private void assertAndIsCommutative(ConditionResult operand1,
+ ConditionResult operand2, ConditionResult expectedResult)
+ {
+ assertEquals(and(operand1, operand2), expectedResult);
+ assertEquals(and(operand2, operand1), expectedResult);
+ }
+
+ @Test(dataProvider = "allPermutationsUpTo4Operands")
+ public void testVarargsAndIsCommutative(ConditionResult... operands)
+ {
+ if (operands.length == 0)
+ {
+ assertEquals(and(operands), and());
+ return;
+ }
+
+ final EnumSet<ConditionResult> ops = EnumSet.copyOf(Arrays.asList(operands));
+ if (ops.contains(FALSE))
+ {
+ assertEquals(and(operands), FALSE);
+ }
+ else if (ops.contains(UNDEFINED))
+ {
+ assertEquals(and(operands), UNDEFINED);
+ }
+ else
+ {
+ assertEquals(and(operands), TRUE);
+ }
+ }
+
+ @Test
+ public void testOr()
+ {
+ assertEquals(or(), FALSE);
+
+ assertEquals(or(TRUE), TRUE);
+ assertEquals(or(FALSE), FALSE);
+ assertEquals(or(UNDEFINED), UNDEFINED);
+
+ assertEquals(or(TRUE, TRUE), TRUE);
+ assertEquals(or(FALSE, FALSE), FALSE);
+ assertEquals(or(UNDEFINED, UNDEFINED), UNDEFINED);
+
+ assertOrIsCommutative(TRUE, FALSE, TRUE);
+ assertOrIsCommutative(TRUE, UNDEFINED, TRUE);
+ assertOrIsCommutative(FALSE, UNDEFINED, UNDEFINED);
+ }
+
+ private void assertOrIsCommutative(ConditionResult operand1,
+ ConditionResult operand2, ConditionResult expectedResult)
+ {
+ assertEquals(or(operand1, operand2), expectedResult);
+ assertEquals(or(operand2, operand1), expectedResult);
+ }
+
+ @Test(dataProvider = "allPermutationsUpTo4Operands")
+ public void testVarargsOrIsCommutative(ConditionResult... operands)
+ {
+ if (operands.length == 0)
+ {
+ assertEquals(or(operands), or());
+ return;
+ }
+
+ final EnumSet<ConditionResult> ops = EnumSet.copyOf(Arrays.asList(operands));
+ if (ops.contains(TRUE))
+ {
+ assertEquals(or(operands), TRUE);
+ }
+ else if (ops.contains(UNDEFINED))
+ {
+ assertEquals(or(operands), UNDEFINED);
+ }
+ else
+ {
+ assertEquals(or(operands), FALSE);
+ }
+ }
+
+ @Test
+ public void testValueOf()
+ {
+ assertEquals(valueOf(true), TRUE);
+ assertEquals(valueOf(false), FALSE);
+ }
+
+ @Test
+ public void testToBoolean()
+ {
+ assertEquals(TRUE.toBoolean(), true);
+ assertEquals(FALSE.toBoolean(), false);
+ assertEquals(UNDEFINED.toBoolean(), false);
+ }
+}
--
Gitblit v1.10.0