From 4322b2dfeb3c710d9ecf1f8b30e7643b05c2f978 Mon Sep 17 00:00:00 2001
From: boli <boli@localhost>
Date: Wed, 18 Feb 2009 19:57:56 +0000
Subject: [PATCH] Fix for issue 3803

---
 opends/tests/unit-tests-testng/src/server/org/opends/server/controls/VLVControlTestCase.java |   40 +++++++++++++++++++++++++++++++++++++++-
 1 files changed, 39 insertions(+), 1 deletions(-)

diff --git a/opends/tests/unit-tests-testng/src/server/org/opends/server/controls/VLVControlTestCase.java b/opends/tests/unit-tests-testng/src/server/org/opends/server/controls/VLVControlTestCase.java
index e48897d..011483a 100644
--- a/opends/tests/unit-tests-testng/src/server/org/opends/server/controls/VLVControlTestCase.java
+++ b/opends/tests/unit-tests-testng/src/server/org/opends/server/controls/VLVControlTestCase.java
@@ -22,7 +22,7 @@
  * CDDL HEADER END
  *
  *
- *      Copyright 2008 Sun Microsystems, Inc.
+ *      Copyright 2008-2009 Sun Microsystems, Inc.
  */
 package org.opends.server.controls;
 
@@ -44,6 +44,10 @@
 import org.opends.server.protocols.internal.InternalSearchOperation;
 import org.opends.server.protocols.ldap.LDAPResultCode;
 import org.opends.server.protocols.ldap.LDAPControl;
+import org.opends.server.protocols.asn1.ASN1Writer;
+import org.opends.server.protocols.asn1.ASN1;
+import org.opends.server.protocols.asn1.ASN1Reader;
+import org.opends.server.protocols.asn1.ASN1Constants;
 import org.opends.server.types.*;
 import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
@@ -383,7 +387,41 @@
     assertNotNull(vlvRequest.toString());
   }
 
+  /**
+   * Tests the ASN.1 encoding for the response control.
+   *
+   * @throws  Exception  If an unexpected problem occurs.
+   */
+  @Test()
+  public void testASN1ValueEncoding()
+         throws Exception
+  {
+    ByteStringBuilder builder = new ByteStringBuilder();
+    ASN1Writer writer = ASN1.getWriter(builder);
+    VLVResponseControl vlvResponse = new VLVResponseControl(true, 0, 15, 0,
+        ByteString.valueOf("foo"));
+    vlvResponse.writeValue(writer);
 
+    ASN1Reader reader = ASN1.getReader(builder.toByteString());
+    // Should start as an octet string with a nested sequence
+    assertEquals(reader.peekType(), ASN1Constants.UNIVERSAL_OCTET_STRING_TYPE);
+    reader.readStartSequence();
+    // Should be an sequence start
+    assertEquals(reader.peekType(), ASN1Constants.UNIVERSAL_SEQUENCE_TYPE);
+    reader.readStartSequence();
+    // Should be an integer with targetPosition
+    assertEquals(reader.peekType(), ASN1Constants.UNIVERSAL_INTEGER_TYPE);
+    assertEquals(reader.readInteger(), 0);
+    // Should be an integer with contentCount
+    assertEquals(reader.peekType(), ASN1Constants.UNIVERSAL_INTEGER_TYPE);
+    assertEquals(reader.readInteger(), 15);
+    // Should be an enumerated with virtualListViewResult
+    assertEquals(reader.peekType(), ASN1Constants.UNIVERSAL_ENUMERATED_TYPE);
+    assertEquals(reader.readEnumerated(), 0);
+    // Should be an octet string with contextID
+    assertEquals(reader.peekType(), ASN1Constants.UNIVERSAL_OCTET_STRING_TYPE);
+    assertEquals(reader.readOctetStringAsString(), "foo");
+  }
 
   /**
    * Tests the first constructor for the response control.

--
Gitblit v1.10.0