public void MSOXCROPS_S06_TC05_TestRopsSetProperties()
        {
            this.CheckTransportIsSupported();

            this.cropsAdapter.RpcConnect(
                Common.GetConfigurationPropertyValue("SutComputerName", this.Site),
                ConnectionType.PrivateMailboxServer,
                Common.GetConfigurationPropertyValue("UserEssdn", this.Site),
                Common.GetConfigurationPropertyValue("Domain", this.Site),
                Common.GetConfigurationPropertyValue("AdminUserName", this.Site),
                Common.GetConfigurationPropertyValue("PassWord", this.Site));

            // Step 1: Preparations-Create message and get the created message handle.
            #region Preparations

            // Log on to a private mailbox.
            RopLogonResponse logonResponse = Logon(LogonType.Mailbox, this.userDN, out inputObjHandle);

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Step 1:Call GetCreatedMessageHandle method to create message and get the created message handle.");

            // Call GetCreatedMessageHandle method to create message and get the created message handle.
            uint messageHandle = GetCreatedMessageHandle(logonResponse.FolderIds[4], inputObjHandle);

            int size = 0;
            TaggedPropertyValue[] taggedPropertyValueArray = this.CreateMessageTaggedPropertyValueArray(out size);

            #endregion

            // Step 2: Send the RopSetProperties request and verify the success response.
            #region RopSetProperties success response

            RopSetPropertiesRequest setPropertiesRequest = new RopSetPropertiesRequest();
            RopSetPropertiesResponse setPropertiesResponse;

            setPropertiesRequest.RopId = (byte)RopId.RopSetProperties;
            setPropertiesRequest.LogonId = TestSuiteBase.LogonId;
            setPropertiesRequest.InputHandleIndex = TestSuiteBase.InputHandleIndex0;
            setPropertiesRequest.PropertyValueSize = (ushort)(size + 2);
            setPropertiesRequest.PropertyValueCount = (ushort)taggedPropertyValueArray.Length;
            setPropertiesRequest.PropertyValues = taggedPropertyValueArray;

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Step 2: Begin to send the RopSetProperties request.");

            // Send the RopSetProperties request and verify the success response.
            this.responseSOHs = cropsAdapter.ProcessSingleRop(
                setPropertiesRequest,
                messageHandle,
                ref this.response,
                ref this.rawData,
                RopResponseType.SuccessResponse);
            setPropertiesResponse = (RopSetPropertiesResponse)response;

            Site.Assert.AreEqual<uint>(
                TestSuiteBase.SuccessReturnValue,
                setPropertiesResponse.ReturnValue,
                "if ROP succeeds, ReturnValue of its response will be 0 (success)");

            #endregion

            // Step 3: Send the RopSetProperties request and verify the failure response.
            #region RopSetProperties failure response

            setPropertiesRequest.InputHandleIndex = TestSuiteBase.InputHandleIndex1;

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Step 3: Begin to send the RopSetProperties request.");

            this.responseSOHs = cropsAdapter.ProcessSingleRop(
                setPropertiesRequest,
                messageHandle,
                ref this.response,
                ref this.rawData,
                RopResponseType.FailureResponse);
            setPropertiesResponse = (RopSetPropertiesResponse)response;

            Site.Assert.AreNotEqual<uint>(
                TestSuiteBase.SuccessReturnValue,
                setPropertiesResponse.ReturnValue,
                "if ROP failure, ReturnValue of its response will not be 0 (success)");
            Site.Assert.AreNotEqual<uint>(
                MS_OXCROPSAdapter.ReturnValueForRopQueryNamedProperties,
                setPropertiesResponse.ReturnValue,
                "if ROP failure, ReturnValue of its response will not be 0x00040380 (success)");

            #endregion

            // Step 4: Send the RopSetPropertiesNoReplicate request and verify the success response.
            #region RopSetPropertiesNoReplicate success response

            RopSetPropertiesNoReplicateRequest setPropertiesNoReplicateRequest = new RopSetPropertiesNoReplicateRequest();
            RopSetPropertiesNoReplicateResponse setPropertiesNoReplicateResponse;

            setPropertiesNoReplicateRequest.RopId = (byte)RopId.RopSetPropertiesNoReplicate;
            setPropertiesNoReplicateRequest.LogonId = TestSuiteBase.LogonId;
            setPropertiesNoReplicateRequest.InputHandleIndex = TestSuiteBase.InputHandleIndex0;
            setPropertiesNoReplicateRequest.PropertyValueSize = (ushort)(size + 2);
            setPropertiesNoReplicateRequest.PropertyValueCount = (ushort)taggedPropertyValueArray.Length;
            setPropertiesNoReplicateRequest.PropertyValues = taggedPropertyValueArray;

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Step 4: Begin to send the RopSetPropertiesNoReplicate request.");

            // Send the RopSetPropertiesNoReplicate request and verify the success response.
            this.responseSOHs = cropsAdapter.ProcessSingleRop(
                setPropertiesNoReplicateRequest,
                messageHandle,
                ref this.response,
                ref this.rawData,
                RopResponseType.SuccessResponse);
            setPropertiesNoReplicateResponse = (RopSetPropertiesNoReplicateResponse)response;

            Site.Assert.AreEqual<uint>(
                TestSuiteBase.SuccessReturnValue,
                setPropertiesNoReplicateResponse.ReturnValue,
                "If ROP succeeds, the ReturnValue of its response is 0(success).");

            #endregion

            // Step 5: Send the RopSetPropertiesNoReplicate request and verify the failure response.
            #region RopSetPropertiesNoReplicate failure response

            setPropertiesNoReplicateRequest.InputHandleIndex = TestSuiteBase.InputHandleIndex1;

            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Step 5: Begin to send the RopSetPropertiesNoReplicate request.");

            // Send the RopSetPropertiesNoReplicate request and verify the failure response.
            this.responseSOHs = cropsAdapter.ProcessSingleRop(
                setPropertiesNoReplicateRequest,
                messageHandle,
                ref this.response,
                ref this.rawData,
                RopResponseType.FailureResponse);
            setPropertiesNoReplicateResponse = (RopSetPropertiesNoReplicateResponse)response;

            Site.Assert.AreNotEqual<uint>(
                TestSuiteBase.SuccessReturnValue,
                setPropertiesNoReplicateResponse.ReturnValue,
                "If ROP failure, the ReturnValue of its response is not 0(success).");

            #endregion
        }