/// <summary>
        /// Verify the PermanentEntryID structure.
        /// </summary>
        /// <param name="permanentEntryID">A PermanentEntryID to be verified.</param>
        private void VerifyPermanentEntryID(PermanentEntryID permanentEntryID)
        {
            // The Permanent Entry ID is parsed from the PtypBinary property type. So if the codes can reach here, this requirement can be captured directly.
            this.Site.CaptureRequirement(
                384,
                @"[In PermanentEntryID] Permanent Entry IDs are transmitted in the protocol as values with the PtypBinary property type.");

            // Add the debug information
            this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXNSPI_R392");

            // Verify MS-OXNSPI requirement: MS-OXNSPI_R392
            this.Site.CaptureRequirementIfAreEqual<int>(
                1,
                Marshal.SizeOf(permanentEntryID.IDType),
                392,
                @"[In PermanentEntryID] ID Type (1 byte): The type of this ID.");

            // Add the debug information
            this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXNSPI_R393");

            // Verify MS-OXNSPI requirement: MS-OXNSPI_R393
            this.Site.CaptureRequirementIfAreEqual<byte>(
                0x00,
                permanentEntryID.IDType,
                393,
                @"[In PermanentEntryID] [ID Type] The value is the constant 0x00.");

            // Add the debug information
            this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXNSPI_R395");

            // Verify MS-OXNSPI requirement: MS-OXNSPI_R395
            this.Site.CaptureRequirementIfAreEqual<int>(
                1,
                Marshal.SizeOf(permanentEntryID.R1),
                395,
                @"[In PermanentEntryID] R1 (1 byte): [means that this field is] Reserved.");

            // Add the debug information
            this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXNSPI_R1717");

            // Verify MS-OXNSPI requirement: MS-OXNSPI_R1717
            this.Site.CaptureRequirementIfAreEqual<byte>(
                0x00,
                permanentEntryID.R1,
                1717,
                @"[In PermanentEntryID] Server MUST set this value[R1] to the constant 0x00.");

            // Add the debug information
            this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXNSPI_R397");

            // Verify MS-OXNSPI requirement: MS-OXNSPI_R397
            this.Site.CaptureRequirementIfAreEqual<int>(
                1,
                Marshal.SizeOf(permanentEntryID.R2),
                397,
                @"[In PermanentEntryID] R2 (1 byte): [means that this field is] Reserved.");

            // Add the debug information
            this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXNSPI_R1718");

            // Verify MS-OXNSPI requirement: MS-OXNSPI_R1718
            this.Site.CaptureRequirementIfAreEqual<byte>(
                0x00,
                permanentEntryID.R2,
                1718,
                @"[In PermanentEntryID] [R2] All servers MUST set this value to the constant 0x00.");

            // Add the debug information
            this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXNSPI_R399");

            // Verify MS-OXNSPI requirement: MS-OXNSPI_R399
            this.Site.CaptureRequirementIfAreEqual<int>(
                1,
                Marshal.SizeOf(permanentEntryID.R3),
                399,
                @"[In PermanentEntryID] R3 (1 byte): [means that this field is] Reserved.");

            // Add the debug information
            this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXNSPI_R1719");

            // Verify MS-OXNSPI requirement: MS-OXNSPI_R1719
            this.Site.CaptureRequirementIfAreEqual<byte>(
                0x00,
                permanentEntryID.R3,
                1719,
                @"[In PermanentEntryID] Server MUST set this value [R3] to the constant 0x00.");

            // Add the debug information
            this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXNSPI_R401.");

            byte[] guidNSPI = { 0xDC, 0xA7, 0x40, 0xC8, 0xC0, 0x42, 0x10, 0x1A, 0xB4, 0xB9, 0x08, 0x00, 0x2B, 0x2F, 0xE1, 0x82 };
            bool isGUIDContained = true;
            if (guidNSPI.Length != permanentEntryID.ProviderUID.Ab.Length)
            {
                isGUIDContained = false;
            }
            else
            {
                for (int i = 0; i < guidNSPI.Length; i++)
                {
                    if (guidNSPI[i] != permanentEntryID.ProviderUID.Ab[i])
                    {
                        isGUIDContained = false;
                        break;
                    }
                }
            }

            // Verify MS-OXNSPI requirement: MS-OXNSPI_R401
            this.Site.CaptureRequirementIfIsTrue(
                isGUIDContained,
                401,
                @"[In PermanentEntryID] ProviderUID (16 bytes): A FlatUID_r value that contains the constant GUID specified in Permanent Entry ID GUID, as specified in section 2.2.1.7.");

            this.VerifyFlatUID_r();

            // Verify MS-OXNSPI requirement: MS-OXNSPI_R1664
            // If MS-OXNSPI_R401 has been verified, MS-OXNSPI_R1664 can be verified directly.
            this.Site.CaptureRequirement(
                1664,
                @"[In Permanent Entry ID GUID] GUID_NSPI ({0xDC, 0xA7, 0x40, 0xC8, 0xC0, 0x42, 0x10, 0x1A, 0xB4, 0xB9, 0x08, 0x00, 0x2B, 0x2F, 0xE1, 0x82}): Represents the Exchange Server NSPI Protocol in Permanent Entry IDs.");

            // Add the debug information
            this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXNSPI_R403");

            // Verify MS-OXNSPI requirement: MS-OXNSPI_R403
            this.Site.CaptureRequirementIfAreEqual<int>(
                4,
                Marshal.SizeOf(permanentEntryID.R4),
                403,
                @"[In PermanentEntryID] R4 (4 bytes): [means that this field is] Reserved.");

            // Add the debug information
            this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXNSPI_R1720");

            // Verify MS-OXNSPI requirement: MS-OXNSPI_R1720
            this.Site.CaptureRequirementIfAreEqual<uint>(
                0x1,
                permanentEntryID.R4,
                1720,
                @"[In PermanentEntryID] Server MUST set this value[R4] to the constant 0x00000001.");

            // Verify MS-OXNSPI requirement: MS-OXNSPI_R405
            // This test suite parses code according to this definition. So if the codes can reach here, this requirement can be captured directly.
            this.Site.CaptureRequirement(
                405,
                @"[In PermanentEntryID] Display Type string (4 bytes): The display type of the object specified by this Permanent Entry ID.");

            // This test suite parses code according to this definition. So if the codes can reach here, this requirement can be captured directly.
            this.Site.CaptureRequirement(
                604,
                @"[In Object Identity] [Permanent Identifier] The display type of the object is included in the Permanent Identifier.");

            // This test suite parses code according to this definition. So if the codes can reach here, this requirement can be captured directly.
            this.Site.CaptureRequirement(
                406,
                @"[In PermanentEntryID] [Display Type String] This value is expressed in little-endian format.");

            bool isValidDisplayType = false;
            if (permanentEntryID.DisplayTypeString == DisplayTypeValue.DT_ADDRESS_TEMPLATE
                || permanentEntryID.DisplayTypeString == DisplayTypeValue.DT_AGENT
                || permanentEntryID.DisplayTypeString == DisplayTypeValue.DT_CONTAINER
                || permanentEntryID.DisplayTypeString == DisplayTypeValue.DT_DISTLIST
                || permanentEntryID.DisplayTypeString == DisplayTypeValue.DT_FORUM
                || permanentEntryID.DisplayTypeString == DisplayTypeValue.DT_MAILUSER
                || permanentEntryID.DisplayTypeString == DisplayTypeValue.DT_ORGANIZATION
                || permanentEntryID.DisplayTypeString == DisplayTypeValue.DT_PRIVATE_DISTLIST
                || permanentEntryID.DisplayTypeString == DisplayTypeValue.DT_REMOTE_MAILUSER
                || permanentEntryID.DisplayTypeString == DisplayTypeValue.DT_SEARCH
                || permanentEntryID.DisplayTypeString == DisplayTypeValue.DT_TEMPLATE)
            {
                isValidDisplayType = true;
            }

            // Add the debug information
            this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXNSPI_R409: [In PermanentEntryID] [Display Type String] the value the server set in this field is {0}.", permanentEntryID.DisplayTypeString);

            // Verify MS-OXNSPI requirement: MS-OXNSPI_R409
            this.Site.CaptureRequirementIfIsTrue(
                isValidDisplayType,
                409,
                @"[In PermanentEntryID] [Display Type String] A server MUST set this field when this data structure is returned in an output parameter.");

            // Add the debug information
            this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXNSPI_R411.");

            // Verify MS-OXNSPI requirement: MS-OXNSPI_R411
            this.Site.CaptureRequirementIfIsNotNull(
                permanentEntryID.DistinguishedName,
                411,
                @"[In PermanentEntryID] Distinguished Name (variable): The DN of the object specified by this Permanent Entry ID.");

        }
        public void MSOXNSPI_S01_TC03_GetSpecialTableSuccess()
        {
            this.CheckProductSupported();
            this.CheckMAPIHTTPTransportSupported();

            #region Call NspiBind to initiate a session between the client and the server.
            uint flags = 0;
            STAT stat = new STAT();
            stat.InitiateStat();
            FlatUID_r? serverGuid = null;

            this.Result = this.ProtocolAdatper.NspiBind(flags, stat, ref serverGuid);
            Site.Assert.AreEqual<ErrorCodeValue>(ErrorCodeValue.Success, this.Result, "NspiBind method should return Success.");
            #endregion

            #region Call NspiGetSpecialTable method with dwFlags set to "NspiAddressCreationTemplates".
            uint flagsOfGetSpecialTable = (uint)NspiGetSpecialTableFlags.NspiAddressCreationTemplates;
            uint version = 0;
            stat.InitiateStat();
            stat.CodePage = (uint)RequiredCodePage.CP_TELETEX;
            PropertyRowSet_r? rows;
            this.Result = this.ProtocolAdatper.NspiGetSpecialTable(flagsOfGetSpecialTable, ref stat, ref version, out rows);
            Site.Assert.AreEqual<ErrorCodeValue>(ErrorCodeValue.Success, this.Result, "NspiGetSpecialTable method should return Success.");

            #region Capture code
            // According to section 2.2.1 in [MS-OXOABKT], the table of the available address creation templates consists of these tags:
            // PidTagAddressType, PidTagDisplayName, PidTagDisplayType, PidTagEntryId, PidTagDepth, PidTagSelectabl and PidTagInstanceKey. 
            bool isPidTagAddressTypeExist = false;
            bool isPidTagDisplayNameExist = false;
            bool isPidTagDisplayTypeExist = false;
            bool isPidTagEntryIdExist = false;
            bool isPidTagDepthExist = false;
            bool isPidTagSelectableExist = false;
            bool isPidTagInstanceKeyExist = false;
            bool isAddressCreationTemplatesTable = false;

            // To inquiry each tags in rows
            foreach (PropertyValue_r propertyValue in rows.Value.ARow[0].LpProps)
            {
                Site.Log.Add(LogEntryKind.Debug, "The PropTag value is {0}.", (AulProp)propertyValue.PropTag);
                switch ((AulProp)propertyValue.PropTag)
                {
                    case AulProp.PidTagAddressType:
                        isPidTagAddressTypeExist = true;
                        break;

                    case AulProp.PidTagDisplayName:
                        isPidTagDisplayNameExist = true;
                        break;

                    case AulProp.PidTagDisplayType:
                        isPidTagDisplayTypeExist = true;
                        break;

                    case AulProp.PidTagEntryId:
                        isPidTagEntryIdExist = true;
                        break;

                    case AulProp.PidTagDepth:
                        isPidTagDepthExist = true;
                        break;

                    case AulProp.PidTagSelectable:
                        isPidTagSelectableExist = true;
                        break;

                    case AulProp.PidTagInstanceKey:
                        isPidTagInstanceKeyExist = true;
                        break;

                    default:
                        break;
                }
            }

            // If all these properties exist, the table is an address creation templates table.
            isAddressCreationTemplatesTable = isPidTagAddressTypeExist && isPidTagDisplayNameExist
                                           && isPidTagDisplayTypeExist && isPidTagEntryIdExist
                                           && isPidTagDepthExist && isPidTagSelectableExist
                                           && isPidTagInstanceKeyExist;

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXNSPI_R109");

            // Verify MS-OXNSPI requirement: MS-OXNSPI_R109
            Site.CaptureRequirementIfIsTrue(
                isAddressCreationTemplatesTable,
                109,
                @"[In NspiGetSpecialTable Flags] NspiAddressCreationTemplates (0x00000002): Specifies that the server MUST return the table of the available address creation templates.");

            // Add the debug information
            this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXNSPI_R752", "The rows returned from server is {0}.", rows.Value.CRows);

            // Verify MS-OXNSPI requirement: MS-OXNSPI_R752
            // If all the properties listed above are returned, the table is an address creation templates table.
            // If there are rows returned from server, the client is requesting the rows of an address creation table.
            this.Site.CaptureRequirementIfIsTrue(
                isAddressCreationTemplatesTable && rows.Value.CRows != 0,
                752,
                @"[In NspiGetSpecialTable] [Server Processing Rules: Upon receiving message NspiGetSpecialTable, the server MUST process the data from the message subject to the following constraints:] [Constraint 9] If the input parameter dwFlags contains the value ""NspiAddressCreationTemplates"", the client is requesting the rows of an address creation table, as specified in section 3.1.4.4.3.2.");

            bool isDT_ADDRESS_TEMPLATETypeCorrect = false;
            PermanentEntryID perEntryId = new PermanentEntryID();

            foreach (PropertyRow_r row in rows.Value.ARow)
            {
                foreach (PropertyValue_r val in row.LpProps)
                {
                    if (val.PropTag == (uint)AulProp.PidTagEntryId)
                    {
                        perEntryId = AdapterHelper.ParsePermanentEntryIDFromBytes(val.Value.Bin.Lpb);
                        break;
                    }
                }

                if (perEntryId.DisplayTypeString == DisplayTypeValue.DT_ADDRESS_TEMPLATE)
                {
                    isDT_ADDRESS_TEMPLATETypeCorrect = true;
                    break;
                }
            }

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXNSPI_R60");

            // Verify MS-OXNSPI requirement: MS-OXNSPI_R60
            Site.CaptureRequirementIfIsTrue(
                isDT_ADDRESS_TEMPLATETypeCorrect,
                60,
                @"[In Display Type Values] DT_ADDRESS_TEMPLATE display type with 0x00000102 value means An address creation template.");
            #endregion
            #endregion

            #region Call NspiGetSpecialTable method with TemplateLocale field of stat set to a value which does not maintain an address creation table.
            stat.TemplateLocale = 0;
            flagsOfGetSpecialTable = (uint)NspiGetSpecialTableFlags.NspiAddressCreationTemplates;
            this.Result = this.ProtocolAdatper.NspiGetSpecialTable(flagsOfGetSpecialTable, ref stat, ref version, out rows);

            #region Capture code
            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXNSPI_R757: The value of CRows is {0}.", rows.Value.CRows);

            // Verify MS-OXNSPI requirement: MS-OXNSPI_R757
            Site.CaptureRequirementIfIsTrue(
                (rows.Value.CRows == 0) && (rows.Value.ARow == null),
                757,
                @"[In NspiGetSpecialTable] [Server Processing Rules: Upon receiving message NspiGetSpecialTable, the server MUST process the data from the message subject to the following constraints:] [Constraint 11] If the server does not maintain an address creation table for that LCID [the LCID specified by TemplateLocale field of the input parameter pStat], the server MUST proceed as if it [server] maintained an address creation table with no rows for that LCID [the LCID specified by TemplateLocale field of the input parameter pStat].");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXNSPI_R758");

            // Verify MS-OXNSPI requirement: MS-OXNSPI_R758
            Site.CaptureRequirementIfAreEqual<ErrorCodeValue>(
                ErrorCodeValue.Success,
                this.Result,
                758,
                @"[In NspiGetSpecialTable] [Server Processing Rules: Upon receiving message NspiGetSpecialTable, the server MUST process the data from the message subject to the following constraints:] [Constraint 11] That is, the server MUST NOT return an error code if it [server] does not maintain an address creation table for that LCID.");
            #endregion
            #endregion

            #region Call NspiGetSpecialTable method with dwFlags set to "NspiUnicodeStrings".
            flagsOfGetSpecialTable = (uint)NspiGetSpecialTableFlags.NspiUnicodeStrings;
            stat.TemplateLocale = (uint)DefaultLCID.NSPI_DEFAULT_LOCALE;
            stat.CodePage = (uint)RequiredCodePage.CP_TELETEX;
            this.Result = this.ProtocolAdatper.NspiGetSpecialTable(flagsOfGetSpecialTable, ref stat, ref version, out rows);
            Site.Assert.AreEqual<ErrorCodeValue>(ErrorCodeValue.Success, this.Result, "NspiGetSpecialTable should return Success.");

            #region Capture code

            for (int i = 0; i < rows.Value.CRows; i++)
            {
                PropertyValue_r[] propertyValue = rows.Value.ARow[i].LpProps;
                bool isStringValueFound = false;

                // The first four bytes are the property ID and the last four bytes are the property type.
                // Property ID 0x3001 indicates that it is a property PidTagDisplayName, and property type 0x0000001F indicates the property is a string.
                // According to MS-OXPROPS, the native type of property PidTagDisplayName is a string.
                for (int j = 0; j < propertyValue.Length; j++)
                {
                    if ((propertyValue[j].PropTag & 0xFFFF0000) == 0x30010000)
                    {
                        isStringValueFound = true;

                        // Add the debug information
                        this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXNSPI_R1966");

                        // Verify MS-OXNSPI requirement: MS-OXNSPI_R1966
                        // 0x0000001F means that the property type is string.
                        this.Site.CaptureRequirementIfAreEqual<uint>(
                            0x0000001F,
                            propertyValue[j].PropTag & 0x0000FFFF,
                            1966,
                            @"[In Conversion Rules for String Values Specified by the Server to the Client] In NspiGetSpecialTable method, String values can be returned in Unicode representation in the output parameter ppRows.");

                        break;
                    }
                }

                if (!isStringValueFound)
                {
                    Site.Assert.Fail("Property PidTagDisplayName with display type string is not found.");
                }
            }

            // Add the debug information
            this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXNSPI_R743");

            // Verify MS-OXNSPI requirement: MS-OXNSPI_R743
            // In this step, dwFlags is set to NspiUnicodeStrings to request the rows of the server's address book hierarchy table.
            // So if the returned rows are not null, it specifies that server returns the rows of the address book hierarchy table.
            this.Site.CaptureRequirementIfAreNotEqual<uint>(
                0,
                rows.Value.CRows,
                743,
                @"[In NspiGetSpecialTable] [Server Processing Rules: Upon receiving message NspiGetSpecialTable, the server MUST process the data from the message subject to the following constraints:] [Constraint 5] If the input parameter dwFlags does not contain the value ""NspiAddressCreationTemplates"", the client is requesting the rows of the server's address book hierarchy table, as specified in section 3.1.4.4.3.1.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXNSPI_R111");

            // Verify MS-OXNSPI requirement: MS-OXNSPI_R111
            Site.CaptureRequirementIfIsTrue(
                AdapterHelper.IsPtypString(rows.Value),
                111,
                @"[In NspiGetSpecialTable Flags] NspiUnicodeStrings (0x00000004): Specifies that the server MUST return all strings as Unicode representations rather than as multibyte strings in the client's code page.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXNSPI_R56");

            // Verify MS-OXNSPI requirement: MS-OXNSPI_R56
            Site.CaptureRequirementIfIsTrue(
                AdapterHelper.IsDT_CONTAINERTypeCorrect(rows),
                56,
                @"[In Display Type Values] DT_CONTAINER display type with 0x00000100 value means An address book hierarchy table container.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXNSPI_R760");

            // Verify MS-OXNSPI requirement: MS-OXNSPI_R760
            // If isVerifyR760 is true, the property type of the string type is PtypString other than PtypString8.
            Site.CaptureRequirementIfIsTrue(
                AdapterHelper.IsPtypString(rows.Value),
                760,
                @"[In NspiGetSpecialTable] [Server Processing Rules: Upon receiving message NspiGetSpecialTable, the server MUST process the data from the message subject to the following constraints:] [Constraint 12] If the input parameter dwFlags contains the value ""NspiUnicodeStrings"" and the client is requesting the rows of the server's address book hierarchy table, the server MUST express string-valued properties in the table as Unicode values, as specified in section 3.1.4.3.");
            #endregion
            #endregion

            #region Call NspiGetSpecialTable method with dwFlags that does not contain the value "NspiUnicodeStrings (0x04)" and CodePage field of the stat that does not contain the value "CP_WINUNICODE (0x04B0)".
            flagsOfGetSpecialTable = 0;
            stat.TemplateLocale = (uint)DefaultLCID.NSPI_DEFAULT_LOCALE;
            stat.CodePage = (uint)RequiredCodePage.CP_TELETEX;
            this.Result = this.ProtocolAdatper.NspiGetSpecialTable(flagsOfGetSpecialTable, ref stat, ref version, out rows);

            #region Capture code
            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXNSPI_R762");

            // Verify MS-OXNSPI requirement: MS-OXNSPI_R762
            // If isVerifyR762 is true, all property type of string is PtypString8 other than PtypString.
            Site.CaptureRequirementIfIsTrue(
                AdapterHelper.IsPtypString8(rows.Value),
                762,
                @"[In NspiGetSpecialTable] [Server Processing Rules: Upon receiving message NspiGetSpecialTable, the server MUST process the data from the message subject to the following constraints:] [Constraint 13] If the input parameter dwFlags does not contain the value ""NspiUnicodeStrings"" and the client is requesting the rows of the server's hierarchy table, and the CodePage field of the input parameter pStat does not contain the value CP_WINUNICODE, the server MUST express string-valued properties as 8-bit strings in the code page specified by the field CodePage in the input parameter pStat.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXNSPI_R765");

            // Verify MS-OXNSPI requirement: MS-OXNSPI_R765
            // The return rows is not null means that field rows contains the rows of the table
            Site.CaptureRequirementIfIsNotNull(
                rows,
                765,
                @"[In NspiGetSpecialTable] [Server Processing Rules: Upon receiving message NspiGetSpecialTable, the server MUST process the data from the message subject to the following constraints:] [Constraint 17] Subject to the prior constraints, the server returns the rows of the table requested by the client in the output parameter ppRows.");

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXNSPI_R767");

            // Verify MS-OXNSPI requirement: MS-OXNSPI_R767
            Site.CaptureRequirementIfAreEqual<ErrorCodeValue>(
                ErrorCodeValue.Success,
                this.Result,
                767,
                @"[In NspiGetSpecialTable] [Server Processing Rules: Upon receiving message NspiGetSpecialTable, the server MUST process the data from the message subject to the following constraints:] [Constraint 18] If no error condition has been specified by the previous constraints, the server MUST return the value ""Success"".");
            #endregion
            #endregion

            #region Call NspiUnbind to destroy the context handle.
            uint reserved = 0;
            uint returnValue = this.ProtocolAdatper.NspiUnbind(reserved);
            Site.Assert.AreEqual<uint>(1, returnValue, "NspiUnbind method should return 1 (Success).");
            #endregion
        }