/// <summary>
        ///  Set common object properties in order to test whether each of them is read-only.
        /// </summary>
        /// <param name="commonProperty">The nine Common Object Properties defined in section 2.2.1</param>
        /// <param name="error">When a property is specified as "read-only for the client", the server MUST
        /// return an error and ignore any request to change the value of that property.</param>
        public void SetCommonObjectProperties(CommonObjectProperty commonProperty, out CPRPTErrorCode error)
        {
            PropertyTag[] proTag = new PropertyTag[1];

            proTag[0] = this.commonProperties[commonProperty];

            this.RopGetPropertiesSpecific(this.cprptCurrentHandle, ConstValues.PropertySizeLimitNone, ConstValues.WantUnicodeNo, proTag);

            error = CPRPTErrorCode.None;
            TaggedPropertyValue[] tags = new TaggedPropertyValue[1];
            tags[0] = new TaggedPropertyValue
            {
                PropertyTag = this.commonProperties[commonProperty]
            };

            switch ((PropertyTypeName)tags[0].PropertyTag.PropertyType)
            {
                case PropertyTypeName.PtypInteger32:
                    tags[0].Value = BitConverter.GetBytes(Convert.ToInt32(CommonValue));
                    break;
                case PropertyTypeName.PtypBinary:
                    tags[0].Value = Common.AddInt16LengthBeforeBinaryArray(Encoding.Unicode.GetBytes(CommonValue));
                    break;
                case PropertyTypeName.PtypTime:
                    tags[0].Value = new byte[ConstValues.PtypTimeSizeInByte];
                    for (int i = 0; i < ConstValues.PtypTimeSizeInByte; i++)
                    {
                        tags[0].Value[i] = (byte)i;
                    }

                    break;
                case PropertyTypeName.PtypString:
                    tags[0].Value = Encoding.Unicode.GetBytes(CommonValue + '\0');
                    break;
                default:
                    break;
            }

            RopSetPropertiesResponse setPtyRes = this.RopSetProperties(this.cprptCurrentHandle, tags, false);
            if (setPtyRes.ReturnValue != (uint)CPRPTErrorCode.None)
            {
                if (setPtyRes.ReturnValue == (uint)CPRPTErrorCode.AccessDenied)
                {
                    error = CPRPTErrorCode.AccessDenied;
                }
                else
                {
                    error = CPRPTErrorCode.Other;
                }
            }
            else
            {
                if (this.cprptCurrentType == ServerObjectType.Message)
                {
                    RopSaveChangesMessageResponse saveChangesMsgRes = this.RopSaveChangesMessage(this.cprptCurrentHandle, false);
                    if (saveChangesMsgRes.ReturnValue == (uint)CPRPTErrorCode.GeneralFailure)
                    {
                        error = CPRPTErrorCode.GeneralFailure;
                    }
                    else
                    {
                        this.RopGetPropertiesSpecific(this.cprptCurrentHandle, ConstValues.PropertySizeLimitNone, ConstValues.WantUnicodeNo, proTag);
                    }
                }
                else if (this.cprptCurrentType == ServerObjectType.Attachment)
                {
                    RopSaveChangesAttachmentResponse saveAttachmentRes = this.RopSaveChangesAttachment(this.cprptCurrentHandle, false);
                    if (saveAttachmentRes.ReturnValue == (uint)CPRPTErrorCode.GeneralFailure)
                    {
                        error = CPRPTErrorCode.GeneralFailure;
                    }
                    else
                    {
                        this.RopGetPropertiesSpecific(this.cprptCurrentHandle, ConstValues.PropertySizeLimitNone, ConstValues.WantUnicodeNo, proTag);
                    }
                }
            }
        }
 public static void SetCommonObjectProperties(CommonObjectProperty commonProperty, out CPRPTErrorCode error)
 {
     error = CPRPTErrorCode.None;
 }
        /// <summary>
        ///   Get common object properties in order to test their type.
        /// </summary>
        /// <param name="commonProperty">The nine Common Object Properties defined in section 2.2.1.</param>
        public void GetCommonObjectProperties(CommonObjectProperty commonProperty)
        {
            PropertyTag[] proTag = new PropertyTag[1];

            proTag[0] = this.commonProperties[commonProperty];
            RopGetPropertiesSpecificResponse getPropertiesSecificResponse = this.RopGetPropertiesSpecific(this.cprptCurrentHandle, ConstValues.PropertySizeLimitNone, ConstValues.WantUnicodeNo, proTag);

            if (getPropertiesSecificResponse.ReturnValue == (uint)CPRPTErrorCode.None)
            {
                this.VerifyCommonProperties(proTag[0], getPropertiesSecificResponse, this.cprptCurrentType);
                this.VerifyCommonPropertiesInOXCDATA(proTag[0], getPropertiesSecificResponse);
                this.VerifyTypeOfCommonPropertiesInOXPROPS(proTag[0], getPropertiesSecificResponse);
            }
        }
 public static void GetCommonObjectProperties(CommonObjectProperty commonProperty)
 {
     Condition.IsTrue(isInitialized);
 }