From 88992b173c274afd27c4bfaddeeeeeea620b1f92 Mon Sep 17 00:00:00 2001
From: matthew_swift <matthew_swift@localhost>
Date: Wed, 06 Sep 2006 12:32:29 +0000
Subject: [PATCH] Add remaining ChangeRecordEntry test classes.

---
 opends/src/server/org/opends/server/util/AddChangeRecordEntry.java                                  |    2 
 opends/tests/unit-tests-testng/src/server/org/opends/server/util/TestModifyDNChangeRecordEntry.java |  181 +++++++++++++++
 opends/src/server/org/opends/server/tools/LDAPModify.java                                           |    4 
 opends/tests/unit-tests-testng/src/server/org/opends/server/util/TestDeleteChangeRecordEntry.java   |  145 ++++++++++++
 opends/src/server/org/opends/server/util/ChangeRecordEntry.java                                     |   17 
 opends/src/server/org/opends/server/util/DeleteChangeRecordEntry.java                               |   12 
 opends/tests/unit-tests-testng/src/server/org/opends/server/util/TestChangeRecordEntry.java         |  152 ++++++++++++
 opends/tests/unit-tests-testng/src/server/org/opends/server/util/TestAddChangeRecordEntry.java      |   21 +
 opends/src/server/org/opends/server/util/ModifyDNChangeRecordEntry.java                             |   21 
 opends/tests/unit-tests-testng/src/server/org/opends/server/util/TestModifyChangeRecordEntry.java   |  146 ++++++++++++
 opends/src/server/org/opends/server/util/ModifyChangeRecordEntry.java                               |   10 
 11 files changed, 670 insertions(+), 41 deletions(-)

diff --git a/opends/src/server/org/opends/server/tools/LDAPModify.java b/opends/src/server/org/opends/server/tools/LDAPModify.java
index c5cc387..0eff754 100644
--- a/opends/src/server/org/opends/server/tools/LDAPModify.java
+++ b/opends/src/server/org/opends/server/tools/LDAPModify.java
@@ -265,13 +265,13 @@
           operationType = "MODIFY DN";
           ModifyDNChangeRecordEntry modDNEntry =
             (ModifyDNChangeRecordEntry) entry;
-          if(modDNEntry.getNewSuperiorRDN() != null)
+          if(modDNEntry.getNewSuperiorDN() != null)
           {
             protocolOp = new ModifyDNRequestProtocolOp(asn1OctetStr,
                  new ASN1OctetString(modDNEntry.getNewRDN().toString()),
                  modDNEntry.deleteOldRDN(),
                  new ASN1OctetString(
-                          modDNEntry.getNewSuperiorRDN().toString()));
+                          modDNEntry.getNewSuperiorDN().toString()));
           } else
           {
             protocolOp = new ModifyDNRequestProtocolOp(asn1OctetStr,
diff --git a/opends/src/server/org/opends/server/util/AddChangeRecordEntry.java b/opends/src/server/org/opends/server/util/AddChangeRecordEntry.java
index e916974..41aa150 100644
--- a/opends/src/server/org/opends/server/util/AddChangeRecordEntry.java
+++ b/opends/src/server/org/opends/server/util/AddChangeRecordEntry.java
@@ -46,7 +46,7 @@
  * an add operation.  It includes a DN and a set of attributes, as well as
  * methods to decode the entry.
  */
-public class AddChangeRecordEntry extends ChangeRecordEntry
+public final class AddChangeRecordEntry extends ChangeRecordEntry
 {
   /**
    * The fully-qualified name of this class for debugging purposes.
diff --git a/opends/src/server/org/opends/server/util/ChangeRecordEntry.java b/opends/src/server/org/opends/server/util/ChangeRecordEntry.java
index 393db27..944abbf 100644
--- a/opends/src/server/org/opends/server/util/ChangeRecordEntry.java
+++ b/opends/src/server/org/opends/server/util/ChangeRecordEntry.java
@@ -28,18 +28,15 @@
 
 
 
+import static org.opends.server.loggers.Debug.debugConstructor;
+import static org.opends.server.loggers.Debug.debugEnter;
+
 import java.util.ArrayList;
 import java.util.LinkedList;
 
 import org.opends.server.types.DN;
 import org.opends.server.types.RDN;
 
-import static org.opends.server.loggers.Debug.*;
-import static org.opends.server.messages.CoreMessages.*;
-import static org.opends.server.messages.MessageHandler.*;
-import static org.opends.server.util.ServerConstants.*;
-import static org.opends.server.util.StaticUtils.*;
-
 
 
 /**
@@ -66,7 +63,7 @@
    * @param  dn      The distinguished name for this entry.
    * @param  reader  The LDIF reader.
    */
-  public ChangeRecordEntry(DN dn, LDIFReader reader)
+  protected ChangeRecordEntry(DN dn, LDIFReader reader)
   {
     assert debugConstructor(CLASS_NAME, String.valueOf(dn),
                             String.valueOf(reader));
@@ -89,7 +86,7 @@
    *
    * @param  dn  The distinguished name for this change record entry.
    */
-  public ChangeRecordEntry(DN dn)
+  protected ChangeRecordEntry(DN dn)
   {
     assert debugConstructor(CLASS_NAME, String.valueOf(dn));
 
@@ -109,7 +106,7 @@
    *
    * @return  The distinguished name for this entry.
    */
-  public DN getDN()
+  public final DN getDN()
   {
     assert debugEnter(CLASS_NAME, "getDN");
 
@@ -123,7 +120,7 @@
    *
    * @param  dn  The distinguished name for this entry.
    */
-  public void setDN(DN dn)
+  public final void setDN(DN dn)
   {
     assert debugEnter(CLASS_NAME, "setDN", String.valueOf(dn));
 
diff --git a/opends/src/server/org/opends/server/util/DeleteChangeRecordEntry.java b/opends/src/server/org/opends/server/util/DeleteChangeRecordEntry.java
index 98e7404..83a416a 100644
--- a/opends/src/server/org/opends/server/util/DeleteChangeRecordEntry.java
+++ b/opends/src/server/org/opends/server/util/DeleteChangeRecordEntry.java
@@ -28,15 +28,15 @@
 
 
 
+import static org.opends.server.loggers.Debug.debugConstructor;
+import static org.opends.server.loggers.Debug.debugEnter;
+import static org.opends.server.messages.MessageHandler.getMessage;
+import static org.opends.server.messages.UtilityMessages.*;
+
 import java.util.LinkedList;
 
 import org.opends.server.types.DN;
 
-import static org.opends.server.loggers.Debug.*;
-import static org.opends.server.messages.CoreMessages.*;
-import static org.opends.server.messages.MessageHandler.*;
-import static org.opends.server.messages.UtilityMessages.*;
-
 
 
 
@@ -45,7 +45,7 @@
  * an delete operation.  It includes a DN and a set of attributes, as well as
  * methods to decode the entry.
  */
-public class DeleteChangeRecordEntry extends ChangeRecordEntry
+public final class DeleteChangeRecordEntry extends ChangeRecordEntry
 {
   /**
    * The fully-qualified name of this class for debugging purposes.
diff --git a/opends/src/server/org/opends/server/util/ModifyChangeRecordEntry.java b/opends/src/server/org/opends/server/util/ModifyChangeRecordEntry.java
index 173e0fe..f6ce024 100644
--- a/opends/src/server/org/opends/server/util/ModifyChangeRecordEntry.java
+++ b/opends/src/server/org/opends/server/util/ModifyChangeRecordEntry.java
@@ -28,6 +28,10 @@
 
 
 
+import static org.opends.server.loggers.Debug.debugEnter;
+import static org.opends.server.messages.MessageHandler.getMessage;
+import static org.opends.server.messages.UtilityMessages.*;
+
 import java.util.ArrayList;
 import java.util.LinkedHashSet;
 import java.util.LinkedList;
@@ -39,10 +43,6 @@
 import org.opends.server.types.DN;
 import org.opends.server.types.ModificationType;
 
-import static org.opends.server.loggers.Debug.*;
-import static org.opends.server.messages.UtilityMessages.*;
-import static org.opends.server.messages.MessageHandler.*;
-
 
 
 /**
@@ -50,7 +50,7 @@
  * an modify operation.  It includes a DN and a set of attributes, as well as
  * methods to decode the entry.
  */
-public class ModifyChangeRecordEntry extends ChangeRecordEntry
+public final class ModifyChangeRecordEntry extends ChangeRecordEntry
 {
   /**
    * The fully-qualified name of this class for debugging purposes.
diff --git a/opends/src/server/org/opends/server/util/ModifyDNChangeRecordEntry.java b/opends/src/server/org/opends/server/util/ModifyDNChangeRecordEntry.java
index bf0eed6..85c0726 100644
--- a/opends/src/server/org/opends/server/util/ModifyDNChangeRecordEntry.java
+++ b/opends/src/server/org/opends/server/util/ModifyDNChangeRecordEntry.java
@@ -28,6 +28,12 @@
 
 
 
+import static org.opends.server.loggers.Debug.debugConstructor;
+import static org.opends.server.loggers.Debug.debugEnter;
+import static org.opends.server.loggers.Debug.debugException;
+import static org.opends.server.messages.MessageHandler.getMessage;
+import static org.opends.server.messages.UtilityMessages.*;
+
 import java.util.LinkedHashSet;
 import java.util.LinkedList;
 
@@ -37,11 +43,6 @@
 import org.opends.server.types.DN;
 import org.opends.server.types.RDN;
 
-import static org.opends.server.loggers.Debug.*;
-import static org.opends.server.messages.UtilityMessages.*;
-import static org.opends.server.messages.MessageHandler.*;
-import static org.opends.server.util.StaticUtils.*;
-
 
 
 /**
@@ -49,7 +50,7 @@
  * an modifyDN operation.  It includes a DN and a set of attributes, as well as
  * methods to decode the entry.
  */
-public class ModifyDNChangeRecordEntry extends ChangeRecordEntry
+public final class ModifyDNChangeRecordEntry extends ChangeRecordEntry
 {
   /**
    * The fully-qualified name of this class for debugging purposes.
@@ -100,14 +101,14 @@
 
 
   /**
-   * Get the new superior RDN for the requested modify DN operation.
+   * Get the new superior DN for the requested modify DN operation.
    *
-   * @return the new superior RDN.
+   * @return the new superior DN.
    *
    */
-  public DN getNewSuperiorRDN()
+  public DN getNewSuperiorDN()
   {
-    assert debugEnter(CLASS_NAME, "getNewSuperiorRDN");
+    assert debugEnter(CLASS_NAME, "getNewSuperiorDN");
     return newSuperiorDN;
   }
 
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/util/TestAddChangeRecordEntry.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/util/TestAddChangeRecordEntry.java
index ab7230a..0d0663d 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/util/TestAddChangeRecordEntry.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/util/TestAddChangeRecordEntry.java
@@ -27,9 +27,9 @@
 package org.opends.server.util;
 
 import java.io.ByteArrayInputStream;
-import java.io.IOException;
 import java.io.InputStream;
 
+import org.opends.server.TestCaseUtils;
 import org.opends.server.types.DN;
 import org.opends.server.types.LDIFImportConfig;
 import org.testng.Assert;
@@ -39,6 +39,10 @@
 /**
  * This class defines a set of tests for the
  * {@link org.opends.server.util.AddChangeRecordEntry} class.
+ * <p>
+ * Note that we test shared behaviour with the abstract
+ * {@link org.opends.server.util.ChangeRecordEntry} class in case it has
+ * been overridden.
  */
 public final class TestAddChangeRecordEntry extends UtilTestCase {
   // An empty LDIF reader.
@@ -47,11 +51,15 @@
   /**
    * Once-only initialization.
    * 
-   * @throws IOException
-   *           If an I/O error occurred.
+   * @throws Exception
+   *           If an unexpected error occurred.
    */
   @BeforeClass
-  public void setUp() throws IOException {
+  public void setUp() throws Exception {
+    // This test suite depends on having the schema available, so we'll
+    // start the server.
+    TestCaseUtils.startServer();
+
     InputStream stream = new ByteArrayInputStream(new byte[0]);
     LDIFImportConfig config = new LDIFImportConfig(stream);
     emptyReader = new LDIFReader(config);
@@ -129,9 +137,8 @@
    */
   @Test(enabled = false)
   public void testGetAttributes() throws Exception {
-    // FIXME: Due to tight coupling between the parse() method and the
-    // LDIFReader it is not easy to test the getAttributes() method.
-    // Instead, we'll test that in the LDIFReader test suite.
+    // FIXME: fix tight-coupling between parse() and LDIFReader.
+    Assert.assertTrue(false);
   }
 
 }
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/util/TestChangeRecordEntry.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/util/TestChangeRecordEntry.java
new file mode 100644
index 0000000..8c4d3ff
--- /dev/null
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/util/TestChangeRecordEntry.java
@@ -0,0 +1,152 @@
+/*
+ * 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.util;
+
+import java.util.LinkedList;
+
+import org.opends.server.TestCaseUtils;
+import org.opends.server.types.DN;
+import org.testng.Assert;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
+/**
+ * This class defines a set of tests for the abstract
+ * {@link org.opends.server.util.ChangeRecordEntry} class.
+ * <p>
+ * Since the class is abstract and cannot be abstract, this test suite
+ * will run tests against a derived inner class.
+ */
+public final class TestChangeRecordEntry extends UtilTestCase {
+  /**
+   * Perform tests against this inner class.
+   */
+  private static final class MyChangeRecordEntry extends ChangeRecordEntry {
+
+    /**
+     * Create a new test record.
+     * 
+     * @param dn
+     *          The test record's DN.
+     */
+    public MyChangeRecordEntry(DN dn) {
+      super(dn);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public ChangeOperationType getChangeOperationType() {
+      // Will not use.
+      return null;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    @Override
+    public void parse(LinkedList<StringBuilder> lines, long lineNumber)
+        throws LDIFException {
+      // Will not use.
+    }
+  }
+
+  /**
+   * Once-only initialization.
+   * 
+   * @throws Exception
+   *           If an unexpected error occurred.
+   */
+  @BeforeClass
+  public void setUp() throws Exception {
+    // This test suite depends on having the schema available, so we'll
+    // start the server.
+    TestCaseUtils.startServer();
+  }
+  
+  /**
+   * Tests the constructor with null DN.
+   * 
+   * @throws Exception
+   *           If the test failed unexpectedly.
+   */
+  @Test
+  public void testConstructorNullDN() throws Exception {
+    MyChangeRecordEntry entry = new MyChangeRecordEntry(null);
+
+    Assert.assertEquals(entry.getDN(), new DN());
+  }
+
+  /**
+   * Tests the constructor with empty DN.
+   * 
+   * @throws Exception
+   *           If the test failed unexpectedly.
+   */
+  @Test
+  public void testConstructorEmptyDN() throws Exception {
+    MyChangeRecordEntry entry = new MyChangeRecordEntry(new DN());
+
+    Assert.assertEquals(entry.getDN(), new DN());
+  }
+
+  /**
+   * Tests the constructor with non-null DN.
+   * 
+   * @throws Exception
+   *           If the test failed unexpectedly.
+   */
+  @Test
+  public void testConstructorNonNullDN() throws Exception {
+    DN testDN1 = DN.decode("dc=hello, dc=world");
+    DN testDN2 = DN.decode("dc=hello, dc=world");
+
+    MyChangeRecordEntry entry = new MyChangeRecordEntry(testDN1);
+
+    Assert.assertEquals(entry.getDN(), testDN2);
+  }
+
+  /**
+   * Tests the set DN method.
+   * 
+   * @throws Exception
+   *           If the test failed unexpectedly.
+   */
+  @Test(dependsOnMethods = { "testConstructorNonNullDN" })
+  public void testSetDN() throws Exception {
+    DN testDN1 = DN.decode("dc=hello, dc=world");
+    DN testDN2 = DN.decode("dc=goodbye, dc=world");
+    DN testDN3 = DN.decode("dc=goodbye, dc=world");
+
+    MyChangeRecordEntry entry = new MyChangeRecordEntry(testDN1);
+
+    entry.setDN(testDN2);
+
+    Assert.assertEquals(entry.getDN(), testDN3);
+  }
+}
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/util/TestDeleteChangeRecordEntry.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/util/TestDeleteChangeRecordEntry.java
new file mode 100644
index 0000000..9bf751d
--- /dev/null
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/util/TestDeleteChangeRecordEntry.java
@@ -0,0 +1,145 @@
+/*
+ * 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.util;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+
+import org.opends.server.TestCaseUtils;
+import org.opends.server.types.DN;
+import org.opends.server.types.LDIFImportConfig;
+import org.testng.Assert;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
+/**
+ * This class defines a set of tests for the
+ * {@link org.opends.server.util.DeleteChangeRecordEntry} class.
+ * <p>
+ * Note that we test shared behaviour with the abstract
+ * {@link org.opends.server.util.ChangeRecordEntry} class in case it has
+ * been overridden.
+ */
+public final class TestDeleteChangeRecordEntry extends UtilTestCase {
+  // An empty LDIF reader.
+  private LDIFReader emptyReader;
+
+  /**
+   * Once-only initialization.
+   * 
+   * @throws Exception
+   *           If an unexpected error occurred.
+   */
+  @BeforeClass
+  public void setUp() throws Exception {
+    // This test suite depends on having the schema available, so we'll
+    // start the server.
+    TestCaseUtils.startServer();
+
+    InputStream stream = new ByteArrayInputStream(new byte[0]);
+    LDIFImportConfig config = new LDIFImportConfig(stream);
+    emptyReader = new LDIFReader(config);
+  }
+
+  /**
+   * Tests the constructor with null DN.
+   * 
+   * @throws Exception
+   *           If the test failed unexpectedly.
+   */
+  @Test
+  public void testConstructorNullDN() throws Exception {
+    DeleteChangeRecordEntry entry = new DeleteChangeRecordEntry(null,
+        emptyReader);
+
+    Assert.assertEquals(entry.getDN(), new DN());
+  }
+
+  /**
+   * Tests the constructor with empty DN.
+   * 
+   * @throws Exception
+   *           If the test failed unexpectedly.
+   */
+  @Test
+  public void testConstructorEmptyDN() throws Exception {
+    DeleteChangeRecordEntry entry = new DeleteChangeRecordEntry(new DN(),
+        emptyReader);
+
+    Assert.assertEquals(entry.getDN(), new DN());
+  }
+
+  /**
+   * Tests the constructor with non-null DN.
+   * 
+   * @throws Exception
+   *           If the test failed unexpectedly.
+   */
+  @Test
+  public void testConstructorNonNullDN() throws Exception {
+    DN testDN1 = DN.decode("dc=hello, dc=world");
+    DN testDN2 = DN.decode("dc=hello, dc=world");
+
+    DeleteChangeRecordEntry entry = new DeleteChangeRecordEntry(testDN1,
+        emptyReader);
+
+    Assert.assertEquals(entry.getDN(), testDN2);
+  }
+
+  /**
+   * Tests the change operation type is correct.
+   * 
+   * @throws Exception
+   *           If the test failed unexpectedly.
+   */
+  @Test
+  public void testChangeOperationType() throws Exception {
+    DeleteChangeRecordEntry entry = new DeleteChangeRecordEntry(null,
+        emptyReader);
+
+    Assert.assertEquals(entry.getChangeOperationType(),
+        ChangeOperationType.DELETE);
+  }
+
+  /**
+   * Tests parse method.
+   * <p>
+   * Due to tight coupling between the
+   * {@link DeleteChangeRecordEntry#parse(java.util.LinkedList, long)}
+   * method and the {@link LDIFReader} class we'll test this method in
+   * the {@link LDIFReader} test suite.
+   * 
+   * @throws Exception
+   *           If the test failed unexpectedly.
+   */
+  @Test(enabled = false)
+  public void testParse() throws Exception {
+    // FIXME: fix tight-coupling between parse() and LDIFReader.
+    Assert.assertTrue(false);
+  }
+
+}
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/util/TestModifyChangeRecordEntry.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/util/TestModifyChangeRecordEntry.java
new file mode 100644
index 0000000..c8682cc
--- /dev/null
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/util/TestModifyChangeRecordEntry.java
@@ -0,0 +1,146 @@
+/*
+ * 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.util;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+
+import org.opends.server.TestCaseUtils;
+import org.opends.server.types.DN;
+import org.opends.server.types.LDIFImportConfig;
+import org.testng.Assert;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
+/**
+ * This class defines a set of tests for the
+ * {@link org.opends.server.util.ModifyChangeRecordEntry} class.
+ * <p>
+ * Note that we test shared behaviour with the abstract
+ * {@link org.opends.server.util.ChangeRecordEntry} class in case it has
+ * been overridden.
+ */
+public final class TestModifyChangeRecordEntry extends UtilTestCase {
+  // An empty LDIF reader.
+  private LDIFReader emptyReader;
+
+  /**
+   * Once-only initialization.
+   * 
+   * @throws Exception
+   *           If an unexpected error occurred.
+   */
+  @BeforeClass
+  public void setUp() throws Exception {
+    // This test suite depends on having the schema available, so we'll
+    // start the server.
+    TestCaseUtils.startServer();
+
+    InputStream stream = new ByteArrayInputStream(new byte[0]);
+    LDIFImportConfig config = new LDIFImportConfig(stream);
+    emptyReader = new LDIFReader(config);
+  }
+
+  /**
+   * Tests the constructor with null DN.
+   * 
+   * @throws Exception
+   *           If the test failed unexpectedly.
+   */
+  @Test
+  public void testConstructorNullDN() throws Exception {
+    ModifyChangeRecordEntry entry = new ModifyChangeRecordEntry(null,
+        emptyReader);
+
+    Assert.assertEquals(entry.getDN(), new DN());
+  }
+
+  /**
+   * Tests the constructor with empty DN.
+   * 
+   * @throws Exception
+   *           If the test failed unexpectedly.
+   */
+  @Test
+  public void testConstructorEmptyDN() throws Exception {
+    ModifyChangeRecordEntry entry = new ModifyChangeRecordEntry(new DN(),
+        emptyReader);
+
+    Assert.assertEquals(entry.getDN(), new DN());
+  }
+
+  /**
+   * Tests the constructor with non-null DN.
+   * 
+   * @throws Exception
+   *           If the test failed unexpectedly.
+   */
+  @Test
+  public void testConstructorNonNullDN() throws Exception {
+    DN testDN1 = DN.decode("dc=hello, dc=world");
+    DN testDN2 = DN.decode("dc=hello, dc=world");
+
+    ModifyChangeRecordEntry entry = new ModifyChangeRecordEntry(testDN1,
+        emptyReader);
+
+    Assert.assertEquals(entry.getDN(), testDN2);
+  }
+
+  /**
+   * Tests the change operation type is correct.
+   * 
+   * @throws Exception
+   *           If the test failed unexpectedly.
+   */
+  @Test
+  public void testChangeOperationType() throws Exception {
+    ModifyChangeRecordEntry entry = new ModifyChangeRecordEntry(null,
+        emptyReader);
+
+    Assert.assertEquals(entry.getChangeOperationType(),
+        ChangeOperationType.MODIFY);
+  }
+
+  /**
+   * Tests parse and getAttributes methods.
+   * <p>
+   * Due to tight coupling between the
+   * {@link ModifyChangeRecordEntry#parse(java.util.LinkedList, long)}
+   * method and the {@link LDIFReader} class it is not easy to test the
+   * {@link ModifyChangeRecordEntry#getModifications()} method. Instead,
+   * we'll test that in the {@link LDIFReader} test suite.
+   * 
+   * @throws Exception
+   *           If the test failed unexpectedly.
+   */
+  @Test(enabled = false)
+  public void testGetModifications() throws Exception {
+    // FIXME: fix tight-coupling between parse() and LDIFReader.
+    Assert.assertTrue(false);
+  }
+
+}
diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/util/TestModifyDNChangeRecordEntry.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/util/TestModifyDNChangeRecordEntry.java
new file mode 100644
index 0000000..d16d3fe
--- /dev/null
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/util/TestModifyDNChangeRecordEntry.java
@@ -0,0 +1,181 @@
+/*
+ * 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.util;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+
+import org.opends.server.TestCaseUtils;
+import org.opends.server.types.DN;
+import org.opends.server.types.LDIFImportConfig;
+import org.testng.Assert;
+import org.testng.annotations.BeforeClass;
+import org.testng.annotations.Test;
+
+/**
+ * This class defines a set of tests for the
+ * {@link org.opends.server.util.ModifyDNChangeRecordEntry} class.
+ * <p>
+ * Note that we test shared behaviour with the abstract
+ * {@link org.opends.server.util.ChangeRecordEntry} class in case it has
+ * been overridden.
+ */
+public final class TestModifyDNChangeRecordEntry extends UtilTestCase {
+  // An empty LDIF reader.
+  private LDIFReader emptyReader;
+
+  /**
+   * Once-only initialization.
+   * 
+   * @throws Exception
+   *           If an unexpected error occurred.
+   */
+  @BeforeClass
+  public void setUp() throws Exception {
+    // This test suite depends on having the schema available, so we'll
+    // start the server.
+    TestCaseUtils.startServer();
+
+    InputStream stream = new ByteArrayInputStream(new byte[0]);
+    LDIFImportConfig config = new LDIFImportConfig(stream);
+    emptyReader = new LDIFReader(config);
+  }
+
+  /**
+   * Tests the constructor with null DN.
+   * 
+   * @throws Exception
+   *           If the test failed unexpectedly.
+   */
+  @Test
+  public void testConstructorNullDN() throws Exception {
+    ModifyDNChangeRecordEntry entry = new ModifyDNChangeRecordEntry(null,
+        emptyReader);
+
+    Assert.assertEquals(entry.getDN(), new DN());
+  }
+
+  /**
+   * Tests the constructor with empty DN.
+   * 
+   * @throws Exception
+   *           If the test failed unexpectedly.
+   */
+  @Test
+  public void testConstructorEmptyDN() throws Exception {
+    ModifyDNChangeRecordEntry entry = new ModifyDNChangeRecordEntry(
+        new DN(), emptyReader);
+
+    Assert.assertEquals(entry.getDN(), new DN());
+  }
+
+  /**
+   * Tests the constructor with non-null DN.
+   * 
+   * @throws Exception
+   *           If the test failed unexpectedly.
+   */
+  @Test
+  public void testConstructorNonNullDN() throws Exception {
+    DN testDN1 = DN.decode("dc=hello, dc=world");
+    DN testDN2 = DN.decode("dc=hello, dc=world");
+
+    ModifyDNChangeRecordEntry entry = new ModifyDNChangeRecordEntry(
+        testDN1, emptyReader);
+
+    Assert.assertEquals(entry.getDN(), testDN2);
+  }
+
+  /**
+   * Tests the change operation type is correct.
+   * 
+   * @throws Exception
+   *           If the test failed unexpectedly.
+   */
+  @Test
+  public void testChangeOperationType() throws Exception {
+    ModifyDNChangeRecordEntry entry = new ModifyDNChangeRecordEntry(null,
+        emptyReader);
+
+    Assert.assertEquals(entry.getChangeOperationType(),
+        ChangeOperationType.MODIFY_DN);
+  }
+
+  /**
+   * Tests parse and getNewRDN methods.
+   * <p>
+   * Due to tight coupling between the
+   * {@link ModifyDNChangeRecordEntry#parse(java.util.LinkedList, long)}
+   * method and the {@link LDIFReader} class it is not easy to test the
+   * {@link ModifyDNChangeRecordEntry#getNewRDN()} method. Instead,
+   * we'll test that in the {@link LDIFReader} test suite.
+   * 
+   * @throws Exception
+   *           If the test failed unexpectedly.
+   */
+  @Test(enabled = false)
+  public void testGetNewRDN() throws Exception {
+    // FIXME: fix tight-coupling between parse() and LDIFReader.
+    Assert.assertTrue(false);
+  }
+
+  /**
+   * Tests parse and getNewSuperiorDN methods.
+   * <p>
+   * Due to tight coupling between the
+   * {@link ModifyDNChangeRecordEntry#parse(java.util.LinkedList, long)}
+   * method and the {@link LDIFReader} class it is not easy to test the
+   * {@link ModifyDNChangeRecordEntry#getNewSuperiorDN()} method.
+   * Instead, we'll test that in the {@link LDIFReader} test suite.
+   * 
+   * @throws Exception
+   *           If the test failed unexpectedly.
+   */
+  @Test(enabled = false)
+  public void testGetNewSuperiorDN() throws Exception {
+    // FIXME: fix tight-coupling between parse() and LDIFReader.
+    Assert.assertTrue(false);
+  }
+
+  /**
+   * Tests parse and deleteOldRDN methods.
+   * <p>
+   * Due to tight coupling between the
+   * {@link ModifyDNChangeRecordEntry#parse(java.util.LinkedList, long)}
+   * method and the {@link LDIFReader} class it is not easy to test the
+   * {@link ModifyDNChangeRecordEntry#deleteOldRDN()} method. Instead,
+   * we'll test that in the {@link LDIFReader} test suite.
+   * 
+   * @throws Exception
+   *           If the test failed unexpectedly.
+   */
+  @Test(enabled = false)
+  public void testDeleteOldRDN() throws Exception {
+    // FIXME: fix tight-coupling between parse() and LDIFReader.
+    Assert.assertTrue(false);
+  }
+}

--
Gitblit v1.10.0