From 101a02e436e695aece3a4aabb62ae01aa63cb62d Mon Sep 17 00:00:00 2001
From: neil_a_wilson <neil_a_wilson@localhost>
Date: Tue, 10 Oct 2006 15:24:57 +0000
Subject: [PATCH] Add a number of test cases that cover the plugin API.

---
 opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/IntermediateResponsePluginResultTestCase.java |  158 ++++
 opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/SearchEntryPluginResultTestCase.java          |  140 +++
 opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/DirectoryServerPluginTestCase.java            |  648 ++++++++++++++++++
 opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/PostConnectPluginResultTestCase.java          |  102 ++
 opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/PostResponsePluginResultTestCase.java         |  101 ++
 opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/PostDisconnectPluginResultTestCase.java       |   87 ++
 opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/PluginAPITestCase.java                        |   46 +
 opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/SearchReferencePluginResultTestCase.java      |  156 ++++
 opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/PreOperationPluginResultTestCase.java         |  118 +++
 opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/LDIFPluginResultTestCase.java                 |  108 +++
 opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/NullPlugin.java                                  |   81 ++
 opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/PostOperationPluginResultTestCase.java        |  101 ++
 opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/StartupPluginResultTestCase.java              |  139 +++
 opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/PreParsePluginResultTestCase.java             |  118 +++
 14 files changed, 2,103 insertions(+), 0 deletions(-)

diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/DirectoryServerPluginTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/DirectoryServerPluginTestCase.java
new file mode 100644
index 0000000..e149f83
--- /dev/null
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/DirectoryServerPluginTestCase.java
@@ -0,0 +1,648 @@
+/*
+ * 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
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ * 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/opends/resource/legal-notices/OpenDS.LICENSE.  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
+ *
+ *
+ *      Portions Copyright 2006 Sun Microsystems, Inc.
+ */
+package org.opends.server.api.plugin;
+
+
+
+import java.util.HashSet;
+
+import org.testng.annotations.Test;
+
+import org.opends.server.plugins.NullPlugin;
+import org.opends.server.types.DisconnectReason;
+import org.opends.server.types.DN;
+import org.opends.server.types.operation.*;
+
+import static org.testng.Assert.*;
+
+
+
+/**
+ * A set of generic test cases for the Directory Server plugin API.
+ */
+public class DirectoryServerPluginTestCase
+       extends PluginAPITestCase
+{
+  /**
+   * Tests the <CODE>getPluginEntryDN</CODE> method.
+   *
+   * @throws  Exception  If an unexpected problem occurs.
+   */
+  @Test()
+  public void testGetPluginEntryDN()
+         throws Exception
+  {
+    NullPlugin nullPlugin = new NullPlugin();
+    DN pluginEntryDN = DN.decode("cn=Null Plugin,cn=Plugins,cn=config");
+
+    HashSet<PluginType> pluginTypes = new HashSet<PluginType>();
+    for (PluginType t : PluginType.values())
+    {
+      pluginTypes.add(t);
+    }
+
+    nullPlugin.initializeInternal(pluginEntryDN, pluginTypes);
+    assertEquals(nullPlugin.getPluginEntryDN(), pluginEntryDN);
+  }
+
+
+
+  /**
+   * Tests the <CODE>getPluginTypes</CODE> method.
+   *
+   * @throws  Exception  If an unexpected problem occurs.
+   */
+  @Test()
+  public void testGetPluginTypes()
+         throws Exception
+  {
+    NullPlugin nullPlugin = new NullPlugin();
+    DN pluginEntryDN = DN.decode("cn=Null Plugin,cn=Plugins,cn=config");
+
+    HashSet<PluginType> pluginTypes = new HashSet<PluginType>();
+    for (PluginType t : PluginType.values())
+    {
+      pluginTypes.add(t);
+    }
+
+    nullPlugin.initializeInternal(pluginEntryDN, pluginTypes);
+    assertEquals(nullPlugin.getPluginTypes(), pluginTypes);
+  }
+
+
+
+  /**
+   * Invokes the default plugin finalizer.
+   */
+  @Test()
+  public void testDefaultFinalizer()
+  {
+    new NullPlugin().finalizePlugin();
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doStartup</CODE> method throws an
+   * exception.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoStartup()
+  {
+    new NullPlugin().doStartup();
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doShutdown</CODE> method throws an
+   * exception.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoShutdown()
+  {
+    new NullPlugin().doShutdown();
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPostConnect</CODE> method throws an
+   * exception.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPostConnect()
+  {
+    new NullPlugin().doPostConnect(null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPostDisconnect</CODE> method throws an
+   * exception.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPostDisconnect()
+  {
+    new NullPlugin().doPostDisconnect(null, DisconnectReason.CLOSED_BY_PLUGIN,
+                                      -1, null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doLDIFImport</CODE> method throws an
+   * exception.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoLDIFImport()
+  {
+    new NullPlugin().doLDIFImport(null, null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doLDIFExport</CODE> method throws an
+   * exception.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoLDIFExport()
+  {
+    new NullPlugin().doLDIFExport(null, null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPreParse</CODE> method throws an
+   * exception for abandon operations.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPreParseAbandon()
+  {
+    new NullPlugin().doPreParse((PreParseAbandonOperation) null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPreParse</CODE> method throws an
+   * exception for add operations.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPreParseAdd()
+  {
+    new NullPlugin().doPreParse((PreParseAddOperation) null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPreParse</CODE> method throws an
+   * exception for bind operations.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPreParseBind()
+  {
+    new NullPlugin().doPreParse((PreParseBindOperation) null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPreParse</CODE> method throws an
+   * exception for compare operations.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPreParseCompare()
+  {
+    new NullPlugin().doPreParse((PreParseCompareOperation) null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPreParse</CODE> method throws an
+   * exception for delete operations.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPreParseDelete()
+  {
+    new NullPlugin().doPreParse((PreParseDeleteOperation) null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPreParse</CODE> method throws an
+   * exception for extended operations.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPreParseExtended()
+  {
+    new NullPlugin().doPreParse((PreParseExtendedOperation) null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPreParse</CODE> method throws an
+   * exception for modify operations.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPreParseModify()
+  {
+    new NullPlugin().doPreParse((PreParseModifyOperation) null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPreParse</CODE> method throws an
+   * exception for modify DN operations.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPreParseModifyDN()
+  {
+    new NullPlugin().doPreParse((PreParseModifyDNOperation) null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPreParse</CODE> method throws an
+   * exception for search operations.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPreParseSearch()
+  {
+    new NullPlugin().doPreParse((PreParseSearchOperation) null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPreParse</CODE> method throws an
+   * exception for unbind operations.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPreParseUnbind()
+  {
+    new NullPlugin().doPreParse((PreParseUnbindOperation) null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPreOperation</CODE> method throws an
+   * exception for add operations.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPreOperationAdd()
+  {
+    new NullPlugin().doPreOperation((PreOperationAddOperation) null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPreOperation</CODE> method throws an
+   * exception for bind operations.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPreOperationBind()
+  {
+    new NullPlugin().doPreOperation((PreOperationBindOperation) null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPreOperation</CODE> method throws an
+   * exception for compare operations.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPreOperationCompare()
+  {
+    new NullPlugin().doPreOperation((PreOperationCompareOperation) null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPreOperation</CODE> method throws an
+   * exception for delete operations.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPreOperationDelete()
+  {
+    new NullPlugin().doPreOperation((PreOperationDeleteOperation) null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPreOperation</CODE> method throws an
+   * exception for extended operations.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPreOperationExtended()
+  {
+    new NullPlugin().doPreOperation((PreOperationExtendedOperation) null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPreOperation</CODE> method throws an
+   * exception for modify operations.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPreOperationModify()
+  {
+    new NullPlugin().doPreOperation((PreOperationModifyOperation) null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPreOperation</CODE> method throws an
+   * exception for modify DN operations.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPreOperationModifyDN()
+  {
+    new NullPlugin().doPreOperation((PreOperationModifyDNOperation) null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPreOperation</CODE> method throws an
+   * exception for search operations.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPreOperationSearch()
+  {
+    new NullPlugin().doPreOperation((PreOperationSearchOperation) null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPostOperation</CODE> method throws an
+   * exception for abandon operations.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPostOperationAbandon()
+  {
+    new NullPlugin().doPostOperation((PostOperationAbandonOperation) null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPostOperation</CODE> method throws an
+   * exception for add operations.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPostOperationAdd()
+  {
+    new NullPlugin().doPostOperation((PostOperationAddOperation) null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPostOperation</CODE> method throws an
+   * exception for bind operations.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPostOperationBind()
+  {
+    new NullPlugin().doPostOperation((PostOperationBindOperation) null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPostOperation</CODE> method throws an
+   * exception for compare operations.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPostOperationCompare()
+  {
+    new NullPlugin().doPostOperation((PostOperationCompareOperation) null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPostOperation</CODE> method throws an
+   * exception for delete operations.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPostOperationDelete()
+  {
+    new NullPlugin().doPostOperation((PostOperationDeleteOperation) null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPostOperation</CODE> method throws an
+   * exception for extended operations.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPostOperationExtended()
+  {
+    new NullPlugin().doPostOperation((PostOperationExtendedOperation) null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPostOperation</CODE> method throws an
+   * exception for modify operations.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPostOperationModify()
+  {
+    new NullPlugin().doPostOperation((PostOperationModifyOperation) null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPostOperation</CODE> method throws an
+   * exception for modify DN operations.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPostOperationModifyDN()
+  {
+    new NullPlugin().doPostOperation((PostOperationModifyDNOperation) null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPostOperation</CODE> method throws an
+   * exception for search operations.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPostOperationSearch()
+  {
+    new NullPlugin().doPostOperation((PostOperationSearchOperation) null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPostOperation</CODE> method throws an
+   * exception for unbind operations.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPostOperationUnbind()
+  {
+    new NullPlugin().doPostOperation((PostOperationUnbindOperation) null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPostResponse</CODE> method throws an
+   * exception for add operations.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPostResponseAdd()
+  {
+    new NullPlugin().doPostResponse((PostResponseAddOperation) null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPostResponse</CODE> method throws an
+   * exception for bind operations.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPostResponseBind()
+  {
+    new NullPlugin().doPostResponse((PostResponseBindOperation) null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPostResponse</CODE> method throws an
+   * exception for compare operations.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPostResponseCompare()
+  {
+    new NullPlugin().doPostResponse((PostResponseCompareOperation) null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPostResponse</CODE> method throws an
+   * exception for delete operations.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPostResponseDelete()
+  {
+    new NullPlugin().doPostResponse((PostResponseDeleteOperation) null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPostResponse</CODE> method throws an
+   * exception for extended operations.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPostResponseExtended()
+  {
+    new NullPlugin().doPostResponse((PostResponseExtendedOperation) null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPostResponse</CODE> method throws an
+   * exception for modify operations.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPostResponseModify()
+  {
+    new NullPlugin().doPostResponse((PostResponseModifyOperation) null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPostResponse</CODE> method throws an
+   * exception for modify DN operations.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPostResponseModifyDN()
+  {
+    new NullPlugin().doPostResponse((PostResponseModifyDNOperation) null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>doPostResponse</CODE> method throws an
+   * exception for search operations.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testDoPostResponseSearch()
+  {
+    new NullPlugin().doPostResponse((PostResponseSearchOperation) null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>processSearchEntry</CODE> method throws an
+   * exception.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testProcessSearchEntry()
+  {
+    new NullPlugin().processSearchEntry(null, null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>processSearchReference</CODE> method throws
+   * an exception.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testProcessSearchReference()
+  {
+    new NullPlugin().processSearchReference(null, null);
+  }
+
+
+
+  /**
+   * Ensures that the default <CODE>processIntermediateResponse</CODE> method
+   * throws an exception.
+   */
+  @Test(expectedExceptions = { UnsupportedOperationException.class })
+  public void testProcessIntermediateResponse()
+  {
+    new NullPlugin().processIntermediateResponse(null);
+  }
+}
+
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/IntermediateResponsePluginResultTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/IntermediateResponsePluginResultTestCase.java
new file mode 100644
index 0000000..f79b485
--- /dev/null
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/IntermediateResponsePluginResultTestCase.java
@@ -0,0 +1,158 @@
+/*
+ * 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
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ * 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/opends/resource/legal-notices/OpenDS.LICENSE.  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
+ *
+ *
+ *      Portions Copyright 2006 Sun Microsystems, Inc.
+ */
+package org.opends.server.api.plugin;
+
+
+
+import org.testng.annotations.Test;
+import org.testng.annotations.DataProvider;
+
+import static org.testng.Assert.*;
+
+
+
+/**
+ * A set of test cases for the intermediate response plugin result type.
+ */
+public class IntermediateResponsePluginResultTestCase
+       extends PluginAPITestCase
+{
+  /**
+   * Retrieves a set of intermediate response plugin result instances.
+   *
+   * @return  A set of intermediate response plugin result instances.
+   */
+  @DataProvider(name = "instances")
+  public Object[][] getInstances()
+  {
+    return new Object[][]
+    {
+      new Object[] { IntermediateResponsePluginResult.SUCCESS },
+      new Object[] { new IntermediateResponsePluginResult(false, false, false,
+                                                          false) },
+      new Object[] { new IntermediateResponsePluginResult(true, false, false,
+                                                          false) },
+      new Object[] { new IntermediateResponsePluginResult(false, true, false,
+                                                          false) },
+      new Object[] { new IntermediateResponsePluginResult(false, false, true,
+                                                          false) },
+      new Object[] { new IntermediateResponsePluginResult(false, false, false,
+                                                          true) },
+      new Object[] { new IntermediateResponsePluginResult(true, true, false,
+                                                          false) },
+      new Object[] { new IntermediateResponsePluginResult(true, false, true,
+                                                          false) },
+      new Object[] { new IntermediateResponsePluginResult(true, false, false,
+                                                          true) },
+      new Object[] { new IntermediateResponsePluginResult(false, true, true,
+                                                          false) },
+      new Object[] { new IntermediateResponsePluginResult(false, true, false,
+                                                          true) },
+      new Object[] { new IntermediateResponsePluginResult(false, false, true,
+                                                          true) },
+      new Object[] { new IntermediateResponsePluginResult(true, true, true,
+                                                          false) },
+      new Object[] { new IntermediateResponsePluginResult(true, true, false,
+                                                          true) },
+      new Object[] { new IntermediateResponsePluginResult(true, false, true,
+                                                          true) },
+      new Object[] { new IntermediateResponsePluginResult(false, true, true,
+                                                          true) },
+      new Object[] { new IntermediateResponsePluginResult(true, true, true,
+                                                          true) }
+    };
+  }
+
+
+
+  /**
+   * Tests the <CODE>connectionTerminated</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testConnectionTerminated(IntermediateResponsePluginResult result)
+  {
+    result.connectionTerminated();
+  }
+
+
+
+  /**
+   * Tests the <CODE>continuePluginProcessing</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testContinuePluginProcessing(IntermediateResponsePluginResult
+                                                result)
+  {
+    result.continuePluginProcessing();
+  }
+
+
+
+  /**
+   * Tests the <CODE>sendIntermediateResponse</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testSendIntermediateResponse(IntermediateResponsePluginResult
+                                           result)
+  {
+    result.sendIntermediateResponse();
+  }
+
+
+
+  /**
+   * Tests the <CODE>continueOperation</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testContinueOperation(IntermediateResponsePluginResult result)
+  {
+    result.continueOperation();
+  }
+
+
+
+
+  /**
+   * Tests the <CODE>toString</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testToString(IntermediateResponsePluginResult result)
+  {
+    assertNotNull(result.toString());
+  }
+}
+
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/LDIFPluginResultTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/LDIFPluginResultTestCase.java
new file mode 100644
index 0000000..43217a7
--- /dev/null
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/LDIFPluginResultTestCase.java
@@ -0,0 +1,108 @@
+/*
+ * 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
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ * 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/opends/resource/legal-notices/OpenDS.LICENSE.  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
+ *
+ *
+ *      Portions Copyright 2006 Sun Microsystems, Inc.
+ */
+package org.opends.server.api.plugin;
+
+
+
+import java.util.HashSet;
+
+import org.testng.annotations.Test;
+import org.testng.annotations.DataProvider;
+
+import org.opends.server.plugins.NullPlugin;
+import org.opends.server.types.DisconnectReason;
+import org.opends.server.types.DN;
+import org.opends.server.types.operation.*;
+
+import static org.testng.Assert.*;
+
+
+
+/**
+ * A set of test cases for the LDIF plugin result type.
+ */
+public class LDIFPluginResultTestCase
+       extends PluginAPITestCase
+{
+  /**
+   * Retrieves a set of LDIF plugin result instances.
+   *
+   * @return  A set of LDIF plugin result instances.
+   */
+  @DataProvider(name = "instances")
+  public Object[][] getInstances()
+  {
+    return new Object[][]
+    {
+      new Object[] { LDIFPluginResult.SUCCESS },
+      new Object[] { new LDIFPluginResult(false, false) },
+      new Object[] { new LDIFPluginResult(true, false) },
+      new Object[] { new LDIFPluginResult(false, true) },
+      new Object[] { new LDIFPluginResult(true, true) }
+    };
+  }
+
+
+
+  /**
+   * Tests the <CODE>continuePluginProcessing</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testContinuePluginProcessing(LDIFPluginResult result)
+  {
+    result.continuePluginProcessing();
+  }
+
+
+
+  /**
+   * Tests the <CODE>continueEntryProcessing</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testContinueEntryProcessing(LDIFPluginResult result)
+  {
+    result.continueEntryProcessing();
+  }
+
+
+
+  /**
+   * Tests the <CODE>toString</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testToString(LDIFPluginResult result)
+  {
+    assertNotNull(result.toString());
+  }
+}
+
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/PluginAPITestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/PluginAPITestCase.java
new file mode 100644
index 0000000..80d3e26
--- /dev/null
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/PluginAPITestCase.java
@@ -0,0 +1,46 @@
+/*
+ * 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
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ * 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/opends/resource/legal-notices/OpenDS.LICENSE.  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
+ *
+ *
+ *      Portions Copyright 2006 Sun Microsystems, Inc.
+ */
+package org.opends.server.api.plugin;
+
+
+
+import org.testng.annotations.Test;
+
+import org.opends.server.DirectoryServerTestCase;
+
+
+
+/**
+ * An abstract base class for all plugin API test cases.
+ */
+@Test(groups = { "precommit", "pluginapi" })
+public abstract class PluginAPITestCase
+       extends DirectoryServerTestCase
+{
+  // No implementation required.
+}
+
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/PostConnectPluginResultTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/PostConnectPluginResultTestCase.java
new file mode 100644
index 0000000..3b40318
--- /dev/null
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/PostConnectPluginResultTestCase.java
@@ -0,0 +1,102 @@
+/*
+ * 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
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ * 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/opends/resource/legal-notices/OpenDS.LICENSE.  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
+ *
+ *
+ *      Portions Copyright 2006 Sun Microsystems, Inc.
+ */
+package org.opends.server.api.plugin;
+
+
+
+import org.testng.annotations.Test;
+import org.testng.annotations.DataProvider;
+
+import static org.testng.Assert.*;
+
+
+
+/**
+ * A set of test cases for the post-connect plugin result type.
+ */
+public class PostConnectPluginResultTestCase
+       extends PluginAPITestCase
+{
+  /**
+   * Retrieves a set of post-connect plugin result instances.
+   *
+   * @return  A set of post-connect plugin result instances.
+   */
+  @DataProvider(name = "instances")
+  public Object[][] getInstances()
+  {
+    return new Object[][]
+    {
+      new Object[] { PostConnectPluginResult.SUCCESS },
+      new Object[] { new PostConnectPluginResult(false, false) },
+      new Object[] { new PostConnectPluginResult(true, false) },
+      new Object[] { new PostConnectPluginResult(false, true) },
+      new Object[] { new PostConnectPluginResult(true, true) }
+    };
+  }
+
+
+
+  /**
+   * Tests the <CODE>connectionTerminated</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testConnectionTerminated(PostConnectPluginResult result)
+  {
+    result.connectionTerminated();
+  }
+
+
+
+  /**
+   * Tests the <CODE>continuePluginProcessing</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testContinuePluginProcessing(PostConnectPluginResult result)
+  {
+    result.continuePluginProcessing();
+  }
+
+
+
+
+  /**
+   * Tests the <CODE>toString</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testToString(PostConnectPluginResult result)
+  {
+    assertNotNull(result.toString());
+  }
+}
+
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/PostDisconnectPluginResultTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/PostDisconnectPluginResultTestCase.java
new file mode 100644
index 0000000..ed526c4
--- /dev/null
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/PostDisconnectPluginResultTestCase.java
@@ -0,0 +1,87 @@
+/*
+ * 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
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ * 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/opends/resource/legal-notices/OpenDS.LICENSE.  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
+ *
+ *
+ *      Portions Copyright 2006 Sun Microsystems, Inc.
+ */
+package org.opends.server.api.plugin;
+
+
+
+import org.testng.annotations.Test;
+import org.testng.annotations.DataProvider;
+
+import static org.testng.Assert.*;
+
+
+
+/**
+ * A set of test cases for the post-disconnect plugin result type.
+ */
+public class PostDisconnectPluginResultTestCase
+       extends PluginAPITestCase
+{
+  /**
+   * Retrieves a set of post-disconnect plugin result instances.
+   *
+   * @return  A set of post-disconnect plugin result instances.
+   */
+  @DataProvider(name = "instances")
+  public Object[][] getInstances()
+  {
+    return new Object[][]
+    {
+      new Object[] { PostDisconnectPluginResult.SUCCESS },
+      new Object[] { new PostDisconnectPluginResult(false) },
+      new Object[] { new PostDisconnectPluginResult(true) }
+    };
+  }
+
+
+
+  /**
+   * Tests the <CODE>continuePluginProcessing</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testContinuePluginProcessing(PostDisconnectPluginResult result)
+  {
+    result.continuePluginProcessing();
+  }
+
+
+
+
+  /**
+   * Tests the <CODE>toString</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testToString(PostDisconnectPluginResult result)
+  {
+    assertNotNull(result.toString());
+  }
+}
+
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/PostOperationPluginResultTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/PostOperationPluginResultTestCase.java
new file mode 100644
index 0000000..746ef21
--- /dev/null
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/PostOperationPluginResultTestCase.java
@@ -0,0 +1,101 @@
+/*
+ * 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
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ * 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/opends/resource/legal-notices/OpenDS.LICENSE.  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
+ *
+ *
+ *      Portions Copyright 2006 Sun Microsystems, Inc.
+ */
+package org.opends.server.api.plugin;
+
+
+
+import org.testng.annotations.Test;
+import org.testng.annotations.DataProvider;
+
+import static org.testng.Assert.*;
+
+
+
+/**
+ * A set of test cases for the post-operation plugin result type.
+ */
+public class PostOperationPluginResultTestCase
+       extends PluginAPITestCase
+{
+  /**
+   * Retrieves a set of post-operation plugin result instances.
+   *
+   * @return  A set of post-operation plugin result instances.
+   */
+  @DataProvider(name = "instances")
+  public Object[][] getInstances()
+  {
+    return new Object[][]
+    {
+      new Object[] { PostOperationPluginResult.SUCCESS },
+      new Object[] { new PostOperationPluginResult(false, false) },
+      new Object[] { new PostOperationPluginResult(true, false) },
+      new Object[] { new PostOperationPluginResult(false, true) },
+      new Object[] { new PostOperationPluginResult(true, true) },
+    };
+  }
+
+
+
+  /**
+   * Tests the <CODE>connectionTerminated</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testConnectionTerminated(PostOperationPluginResult result)
+  {
+    result.connectionTerminated();
+  }
+
+
+
+  /**
+   * Tests the <CODE>continuePluginProcessing</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testContinuePluginProcessing(PostOperationPluginResult result)
+  {
+    result.continuePluginProcessing();
+  }
+
+
+
+  /**
+   * Tests the <CODE>toString</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testToString(PostOperationPluginResult result)
+  {
+    assertNotNull(result.toString());
+  }
+}
+
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/PostResponsePluginResultTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/PostResponsePluginResultTestCase.java
new file mode 100644
index 0000000..8a633b8
--- /dev/null
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/PostResponsePluginResultTestCase.java
@@ -0,0 +1,101 @@
+/*
+ * 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
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ * 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/opends/resource/legal-notices/OpenDS.LICENSE.  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
+ *
+ *
+ *      Portions Copyright 2006 Sun Microsystems, Inc.
+ */
+package org.opends.server.api.plugin;
+
+
+
+import org.testng.annotations.Test;
+import org.testng.annotations.DataProvider;
+
+import static org.testng.Assert.*;
+
+
+
+/**
+ * A set of test cases for the post-response plugin result type.
+ */
+public class PostResponsePluginResultTestCase
+       extends PluginAPITestCase
+{
+  /**
+   * Retrieves a set of post-resposne plugin result instances.
+   *
+   * @return  A set of post-response plugin result instances.
+   */
+  @DataProvider(name = "instances")
+  public Object[][] getInstances()
+  {
+    return new Object[][]
+    {
+      new Object[] { PostResponsePluginResult.SUCCESS },
+      new Object[] { new PostResponsePluginResult(false, false) },
+      new Object[] { new PostResponsePluginResult(true, false) },
+      new Object[] { new PostResponsePluginResult(false, true) },
+      new Object[] { new PostResponsePluginResult(true, true) },
+    };
+  }
+
+
+
+  /**
+   * Tests the <CODE>connectionTerminated</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testConnectionTerminated(PostResponsePluginResult result)
+  {
+    result.connectionTerminated();
+  }
+
+
+
+  /**
+   * Tests the <CODE>continuePluginProcessing</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testContinuePluginProcessing(PostResponsePluginResult result)
+  {
+    result.continuePluginProcessing();
+  }
+
+
+
+  /**
+   * Tests the <CODE>toString</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testToString(PostResponsePluginResult result)
+  {
+    assertNotNull(result.toString());
+  }
+}
+
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/PreOperationPluginResultTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/PreOperationPluginResultTestCase.java
new file mode 100644
index 0000000..a3ab71e
--- /dev/null
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/PreOperationPluginResultTestCase.java
@@ -0,0 +1,118 @@
+/*
+ * 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
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ * 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/opends/resource/legal-notices/OpenDS.LICENSE.  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
+ *
+ *
+ *      Portions Copyright 2006 Sun Microsystems, Inc.
+ */
+package org.opends.server.api.plugin;
+
+
+
+import org.testng.annotations.Test;
+import org.testng.annotations.DataProvider;
+
+import static org.testng.Assert.*;
+
+
+
+/**
+ * A set of test cases for the pre-operation plugin result type.
+ */
+public class PreOperationPluginResultTestCase
+       extends PluginAPITestCase
+{
+  /**
+   * Retrieves a set of pre-operation plugin result instances.
+   *
+   * @return  A set of pre-operation plugin result instances.
+   */
+  @DataProvider(name = "instances")
+  public Object[][] getInstances()
+  {
+    return new Object[][]
+    {
+      new Object[] { PreOperationPluginResult.SUCCESS },
+      new Object[] { new PreOperationPluginResult(false, false, false) },
+      new Object[] { new PreOperationPluginResult(true, false, false) },
+      new Object[] { new PreOperationPluginResult(false, true, false) },
+      new Object[] { new PreOperationPluginResult(false, false, true) },
+      new Object[] { new PreOperationPluginResult(true, true, false) },
+      new Object[] { new PreOperationPluginResult(true, false, true) },
+      new Object[] { new PreOperationPluginResult(false, true, true) },
+      new Object[] { new PreOperationPluginResult(true, true, true) },
+    };
+  }
+
+
+
+  /**
+   * Tests the <CODE>connectionTerminated</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testConnectionTerminated(PreOperationPluginResult result)
+  {
+    result.connectionTerminated();
+  }
+
+
+
+  /**
+   * Tests the <CODE>continuePluginProcessing</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testContinuePluginProcessing(PreOperationPluginResult result)
+  {
+    result.continuePluginProcessing();
+  }
+
+
+
+  /**
+   * Tests the <CODE>sendResponseImmediately</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testSendResponseImmediately(PreOperationPluginResult result)
+  {
+    result.sendResponseImmediately();
+  }
+
+
+
+  /**
+   * Tests the <CODE>toString</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testToString(PreOperationPluginResult result)
+  {
+    assertNotNull(result.toString());
+  }
+}
+
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/PreParsePluginResultTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/PreParsePluginResultTestCase.java
new file mode 100644
index 0000000..2eb0c5c
--- /dev/null
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/PreParsePluginResultTestCase.java
@@ -0,0 +1,118 @@
+/*
+ * 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
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ * 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/opends/resource/legal-notices/OpenDS.LICENSE.  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
+ *
+ *
+ *      Portions Copyright 2006 Sun Microsystems, Inc.
+ */
+package org.opends.server.api.plugin;
+
+
+
+import org.testng.annotations.Test;
+import org.testng.annotations.DataProvider;
+
+import static org.testng.Assert.*;
+
+
+
+/**
+ * A set of test cases for the pre-parse plugin result type.
+ */
+public class PreParsePluginResultTestCase
+       extends PluginAPITestCase
+{
+  /**
+   * Retrieves a set of pre-parse plugin result instances.
+   *
+   * @return  A set of pre-parse plugin result instances.
+   */
+  @DataProvider(name = "instances")
+  public Object[][] getInstances()
+  {
+    return new Object[][]
+    {
+      new Object[] { PreParsePluginResult.SUCCESS },
+      new Object[] { new PreParsePluginResult(false, false, false) },
+      new Object[] { new PreParsePluginResult(true, false, false) },
+      new Object[] { new PreParsePluginResult(false, true, false) },
+      new Object[] { new PreParsePluginResult(false, false, true) },
+      new Object[] { new PreParsePluginResult(true, true, false) },
+      new Object[] { new PreParsePluginResult(true, false, true) },
+      new Object[] { new PreParsePluginResult(false, true, true) },
+      new Object[] { new PreParsePluginResult(true, true, true) },
+    };
+  }
+
+
+
+  /**
+   * Tests the <CODE>connectionTerminated</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testConnectionTerminated(PreParsePluginResult result)
+  {
+    result.connectionTerminated();
+  }
+
+
+
+  /**
+   * Tests the <CODE>continuePluginProcessing</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testContinuePluginProcessing(PreParsePluginResult result)
+  {
+    result.continuePluginProcessing();
+  }
+
+
+
+  /**
+   * Tests the <CODE>sendResponseImmediately</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testSendResponseImmediately(PreParsePluginResult result)
+  {
+    result.sendResponseImmediately();
+  }
+
+
+
+  /**
+   * Tests the <CODE>toString</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testToString(PreParsePluginResult result)
+  {
+    assertNotNull(result.toString());
+  }
+}
+
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/SearchEntryPluginResultTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/SearchEntryPluginResultTestCase.java
new file mode 100644
index 0000000..da968d1
--- /dev/null
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/SearchEntryPluginResultTestCase.java
@@ -0,0 +1,140 @@
+/*
+ * 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
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ * 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/opends/resource/legal-notices/OpenDS.LICENSE.  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
+ *
+ *
+ *      Portions Copyright 2006 Sun Microsystems, Inc.
+ */
+package org.opends.server.api.plugin;
+
+
+
+import org.testng.annotations.Test;
+import org.testng.annotations.DataProvider;
+
+import static org.testng.Assert.*;
+
+
+
+/**
+ * A set of test cases for the search entry plugin result type.
+ */
+public class SearchEntryPluginResultTestCase
+       extends PluginAPITestCase
+{
+  /**
+   * Retrieves a set of search entry plugin result instances.
+   *
+   * @return  A set of search entry plugin result instances.
+   */
+  @DataProvider(name = "instances")
+  public Object[][] getInstances()
+  {
+    return new Object[][]
+    {
+      new Object[] { SearchEntryPluginResult.SUCCESS },
+      new Object[] { new SearchEntryPluginResult(false, false, false, false) },
+      new Object[] { new SearchEntryPluginResult(true, false, false, false) },
+      new Object[] { new SearchEntryPluginResult(false, true, false, false) },
+      new Object[] { new SearchEntryPluginResult(false, false, true, false) },
+      new Object[] { new SearchEntryPluginResult(false, false, false, true) },
+      new Object[] { new SearchEntryPluginResult(true, true, false, false) },
+      new Object[] { new SearchEntryPluginResult(true, false, true, false) },
+      new Object[] { new SearchEntryPluginResult(true, false, false, true) },
+      new Object[] { new SearchEntryPluginResult(false, true, true, false) },
+      new Object[] { new SearchEntryPluginResult(false, true, false, true) },
+      new Object[] { new SearchEntryPluginResult(false, false, true, true) },
+      new Object[] { new SearchEntryPluginResult(true, true, true, false) },
+      new Object[] { new SearchEntryPluginResult(true, true, false, true) },
+      new Object[] { new SearchEntryPluginResult(true, false, true, true) },
+      new Object[] { new SearchEntryPluginResult(false, true, true, true) },
+      new Object[] { new SearchEntryPluginResult(true, true, true, true) }
+    };
+  }
+
+
+
+  /**
+   * Tests the <CODE>connectionTerminated</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testConnectionTerminated(SearchEntryPluginResult result)
+  {
+    result.connectionTerminated();
+  }
+
+
+
+  /**
+   * Tests the <CODE>continuePluginProcessing</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testContinuePluginProcessing(SearchEntryPluginResult result)
+  {
+    result.continuePluginProcessing();
+  }
+
+
+
+  /**
+   * Tests the <CODE>sendEntry</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testSendEntry(SearchEntryPluginResult result)
+  {
+    result.sendEntry();
+  }
+
+
+
+  /**
+   * Tests the <CODE>continueSearch</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testContinueSearch(SearchEntryPluginResult result)
+  {
+    result.continueSearch();
+  }
+
+
+
+
+  /**
+   * Tests the <CODE>toString</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testToString(SearchEntryPluginResult result)
+  {
+    assertNotNull(result.toString());
+  }
+}
+
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/SearchReferencePluginResultTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/SearchReferencePluginResultTestCase.java
new file mode 100644
index 0000000..6a983a6
--- /dev/null
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/SearchReferencePluginResultTestCase.java
@@ -0,0 +1,156 @@
+/*
+ * 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
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ * 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/opends/resource/legal-notices/OpenDS.LICENSE.  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
+ *
+ *
+ *      Portions Copyright 2006 Sun Microsystems, Inc.
+ */
+package org.opends.server.api.plugin;
+
+
+
+import org.testng.annotations.Test;
+import org.testng.annotations.DataProvider;
+
+import static org.testng.Assert.*;
+
+
+
+/**
+ * A set of test cases for the search reference plugin result type.
+ */
+public class SearchReferencePluginResultTestCase
+       extends PluginAPITestCase
+{
+  /**
+   * Retrieves a set of search reference plugin result instances.
+   *
+   * @return  A set of search reference plugin result instances.
+   */
+  @DataProvider(name = "instances")
+  public Object[][] getInstances()
+  {
+    return new Object[][]
+    {
+      new Object[] { SearchReferencePluginResult.SUCCESS },
+      new Object[] { new SearchReferencePluginResult(false, false, false,
+                                                     false) },
+      new Object[] { new SearchReferencePluginResult(true, false, false,
+                                                     false) },
+      new Object[] { new SearchReferencePluginResult(false, true, false,
+                                                     false) },
+      new Object[] { new SearchReferencePluginResult(false, false, true,
+                                                     false) },
+      new Object[] { new SearchReferencePluginResult(false, false, false,
+                                                     true) },
+      new Object[] { new SearchReferencePluginResult(true, true, false,
+                                                     false) },
+      new Object[] { new SearchReferencePluginResult(true, false, true,
+                                                     false) },
+      new Object[] { new SearchReferencePluginResult(true, false, false,
+                                                     true) },
+      new Object[] { new SearchReferencePluginResult(false, true, true,
+                                                     false) },
+      new Object[] { new SearchReferencePluginResult(false, true, false,
+                                                     true) },
+      new Object[] { new SearchReferencePluginResult(false, false, true,
+                                                     true) },
+      new Object[] { new SearchReferencePluginResult(true, true, true,
+                                                     false) },
+      new Object[] { new SearchReferencePluginResult(true, true, false,
+                                                     true) },
+      new Object[] { new SearchReferencePluginResult(true, false, true,
+                                                     true) },
+      new Object[] { new SearchReferencePluginResult(false, true, true,
+                                                     true) },
+      new Object[] { new SearchReferencePluginResult(true, true, true,
+                                                     true) }
+    };
+  }
+
+
+
+  /**
+   * Tests the <CODE>connectionTerminated</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testConnectionTerminated(SearchReferencePluginResult result)
+  {
+    result.connectionTerminated();
+  }
+
+
+
+  /**
+   * Tests the <CODE>continuePluginProcessing</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testContinuePluginProcessing(SearchReferencePluginResult result)
+  {
+    result.continuePluginProcessing();
+  }
+
+
+
+  /**
+   * Tests the <CODE>sendReference</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testSendReference(SearchReferencePluginResult result)
+  {
+    result.sendReference();
+  }
+
+
+
+  /**
+   * Tests the <CODE>continueSearch</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testContinueSearch(SearchReferencePluginResult result)
+  {
+    result.continueSearch();
+  }
+
+
+
+
+  /**
+   * Tests the <CODE>toString</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testToString(SearchReferencePluginResult result)
+  {
+    assertNotNull(result.toString());
+  }
+}
+
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/StartupPluginResultTestCase.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/StartupPluginResultTestCase.java
new file mode 100644
index 0000000..2813c49
--- /dev/null
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/api/plugin/StartupPluginResultTestCase.java
@@ -0,0 +1,139 @@
+/*
+ * 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
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ * 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/opends/resource/legal-notices/OpenDS.LICENSE.  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
+ *
+ *
+ *      Portions Copyright 2006 Sun Microsystems, Inc.
+ */
+package org.opends.server.api.plugin;
+
+
+
+import org.testng.annotations.Test;
+import org.testng.annotations.DataProvider;
+
+import static org.testng.Assert.*;
+
+
+
+/**
+ * A set of test cases for the startup plugin result type.
+ */
+public class StartupPluginResultTestCase
+       extends PluginAPITestCase
+{
+  /**
+   * Retrieves a set of startup plugin result instances.
+   *
+   * @return  A set of startup plugin result instances.
+   */
+  @DataProvider(name = "instances")
+  public Object[][] getInstances()
+  {
+    return new Object[][]
+    {
+      new Object[] { StartupPluginResult.SUCCESS },
+      new Object[] { new StartupPluginResult(false, false, 0, null) },
+      new Object[] { new StartupPluginResult(true, false, 0, null) },
+      new Object[] { new StartupPluginResult(false, true, 0, null) },
+      new Object[] { new StartupPluginResult(true, true, 0, null) },
+      new Object[] { new StartupPluginResult(false, false, 1, null) },
+      new Object[] { new StartupPluginResult(true, false, 1, null) },
+      new Object[] { new StartupPluginResult(false, true, 1, null) },
+      new Object[] { new StartupPluginResult(true, true, 1, null) },
+      new Object[] { new StartupPluginResult(false, false, 0, "foo") },
+      new Object[] { new StartupPluginResult(true, false, 0, "foo") },
+      new Object[] { new StartupPluginResult(false, true, 0, "foo") },
+      new Object[] { new StartupPluginResult(true, true, 0, "foo") },
+      new Object[] { new StartupPluginResult(false, false, 1, "foo") },
+      new Object[] { new StartupPluginResult(true, false, 1, "foo") },
+      new Object[] { new StartupPluginResult(false, true, 1, "foo") },
+      new Object[] { new StartupPluginResult(true, true, 1, "foo") },
+    };
+  }
+
+
+
+  /**
+   * Tests the <CODE>completedSuccessfully</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testCompletedSuccessfully(StartupPluginResult result)
+  {
+    result.completedSuccessfully();
+  }
+
+
+
+  /**
+   * Tests the <CODE>continueStartup</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testContinueStartup(StartupPluginResult result)
+  {
+    result.continueStartup();
+  }
+
+
+
+  /**
+   * Tests the <CODE>getErrorID</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testGetErrorID(StartupPluginResult result)
+  {
+    result.getErrorID();
+  }
+
+
+
+  /**
+   * Tests the <CODE>getErrorMessage</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testGetErrorMessage(StartupPluginResult result)
+  {
+    result.getErrorMessage();
+  }
+
+
+
+  /**
+   * Tests the <CODE>toString</CODE> method.
+   *
+   * @param  result  The result instance to test.
+   */
+  @Test(dataProvider = "instances")
+  public void testToString(StartupPluginResult result)
+  {
+    assertNotNull(result.toString());
+  }
+}
+
diff --git a/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/NullPlugin.java b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/NullPlugin.java
new file mode 100644
index 0000000..0db230b
--- /dev/null
+++ b/opendj-sdk/opends/tests/unit-tests-testng/src/server/org/opends/server/plugins/NullPlugin.java
@@ -0,0 +1,81 @@
+/*
+ * 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
+ * trunk/opends/resource/legal-notices/OpenDS.LICENSE
+ * or https://OpenDS.dev.java.net/OpenDS.LICENSE.
+ * 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/opends/resource/legal-notices/OpenDS.LICENSE.  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
+ *
+ *
+ *      Portions Copyright 2006 Sun Microsystems, Inc.
+ */
+package org.opends.server.plugins;
+
+
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+import org.opends.server.api.plugin.DirectoryServerPlugin;
+import org.opends.server.api.plugin.PluginType;
+import org.opends.server.api.plugin.PreOperationPluginResult;
+import org.opends.server.config.ConfigEntry;
+import org.opends.server.config.ConfigException;
+import org.opends.server.protocols.asn1.ASN1Long;
+import org.opends.server.protocols.asn1.ASN1OctetString;
+import org.opends.server.protocols.ldap.LDAPControl;
+import org.opends.server.types.Control;
+import org.opends.server.types.ResultCode;
+import org.opends.server.types.operation.*;
+
+
+
+/**
+ * This class defines a Directory Server plugin that doesn't do anything.  It
+ * just passes through all non-abstract methods to the superclass
+ * implementation (which will throw exceptions for all plugin operations).
+ */
+public class NullPlugin
+       extends DirectoryServerPlugin
+{
+  /**
+   * Creates a new instance of this Directory Server plugin.  Every
+   * plugin must implement a default constructor (it is the only one
+   * that will be used to create plugins defined in the
+   * configuration), and every plugin constructor must call
+   * <CODE>super()</CODE> as its first element.
+   */
+  public NullPlugin()
+  {
+    super();
+  }
+
+
+
+  /**
+   * {@inheritDoc}
+   */
+  @Override()
+  public void initializePlugin(Set<PluginType> pluginTypes,
+                               ConfigEntry configEntry)
+  {
+    // No implementation required.
+  }
+}
+

--
Gitblit v1.10.0