A class indicates the property that contains long property id.
        public void MSOXCMSG_S04_TC07_NamedPropertiesOnMessageObject()
        {
            this.CheckMapiHttpIsSupported();
            this.ConnectToServer(ConnectionType.PrivateMailboxServer);
            List<PropertyNameObject> propertyNameList = new List<PropertyNameObject>
            {
                new PropertyNameObject(PropertyNames.PidLidPrivate, (uint)PropertyLID.PidLidPrivate, PropertySet.PSETIDCommon, PropertyType.PtypBoolean),
                new PropertyNameObject(PropertyNames.PidLidClassification, (uint)PropertyLID.PidLidClassification, PropertySet.PSETIDCommon, PropertyType.PtypString),
                new PropertyNameObject(PropertyNames.PidLidClassificationDescription, (uint)PropertyLID.PidLidClassificationDescription, PropertySet.PSETIDCommon, PropertyType.PtypString),
                new PropertyNameObject(PropertyNames.PidLidClassified, (uint)PropertyLID.PidLidClassified, PropertySet.PSETIDCommon, PropertyType.PtypBoolean),
                new PropertyNameObject(PropertyNames.PidLidInfoPathFormName, (uint)PropertyLID.PidLidInfoPathFormName, PropertySet.PSETIDCommon, PropertyType.PtypString),
                new PropertyNameObject(PropertyNames.PidLidCurrentVersion, (uint)PropertyLID.PidLidCurrentVersion, PropertySet.PSETIDCommon, PropertyType.PtypInteger32), new PropertyNameObject(PropertyNames.PidLidCurrentVersionName, (uint)PropertyLID.PidLidCurrentVersionName, PropertySet.PSETIDCommon, PropertyType.PtypString),
                new PropertyNameObject(PropertyNames.PidLidAgingDontAgeMe, (uint)PropertyLID.PidLidAgingDontAgeMe, PropertySet.PSETIDCommon, PropertyType.PtypBoolean),
                new PropertyNameObject(PropertyNames.PidLidCommonStart, (uint)PropertyLID.PidLidCommonStart, PropertySet.PSETIDCommon, PropertyType.PtypTime),
                new PropertyNameObject(PropertyNames.PidLidCommonEnd, (uint)PropertyLID.PidLidCommonEnd, PropertySet.PSETIDCommon, PropertyType.PtypTime),
                new PropertyNameObject(PropertyNames.PidLidSmartNoAttach, (uint)PropertyLID.PidLidSmartNoAttach, PropertySet.PSETIDCommon, PropertyType.PtypBoolean)
            };

            #region Call RopLogon to logon the private mailbox.
            RopLogonResponse logonResponse = this.Logon(LogonType.Mailbox, out this.insideObjHandle);
            #endregion

            #region Call RopCreateMessage to create Message object.
            uint targetMessageHandle = this.CreatedMessage(logonResponse.FolderIds[4], this.insideObjHandle);
            #endregion

            #region Set specified properties of message created by above step.
            PropertyNameObject propertyName = new PropertyNameObject(PropertyNames.PidLidPrivate, (uint)PropertyLID.PidLidPrivate, PropertySet.PSETIDCommon, PropertyType.PtypBoolean);
            this.SetNamedProperty(targetMessageHandle, propertyName, BitConverter.GetBytes(true));
            propertyName = new PropertyNameObject(PropertyNames.PidLidClassification, (uint)PropertyLID.PidLidClassification, PropertySet.PSETIDCommon, PropertyType.PtypString);
            this.SetNamedProperty(targetMessageHandle, propertyName, Common.GetBytesFromUnicodeString("Classification"));
            propertyName = new PropertyNameObject(PropertyNames.PidLidClassificationDescription, (uint)PropertyLID.PidLidClassificationDescription, PropertySet.PSETIDCommon, PropertyType.PtypString);
            this.SetNamedProperty(targetMessageHandle, propertyName, Common.GetBytesFromUnicodeString("Classification description"));
            propertyName = new PropertyNameObject(PropertyNames.PidLidClassified, (uint)PropertyLID.PidLidClassified, PropertySet.PSETIDCommon, PropertyType.PtypBoolean);
            this.SetNamedProperty(targetMessageHandle, propertyName, BitConverter.GetBytes(true));
            propertyName = new PropertyNameObject(PropertyNames.PidLidInfoPathFormName, (uint)PropertyLID.PidLidInfoPathFormName, PropertySet.PSETIDCommon, PropertyType.PtypString);
            this.SetNamedProperty(targetMessageHandle, propertyName, Common.GetBytesFromUnicodeString(TestDataOfInfoPath));
            propertyName = new PropertyNameObject(PropertyNames.PidLidCurrentVersion, (uint)PropertyLID.PidLidCurrentVersion, PropertySet.PSETIDCommon, PropertyType.PtypInteger32);
            this.SetNamedProperty(targetMessageHandle, propertyName, BitConverter.GetBytes(0x00000001));
            propertyName = new PropertyNameObject(PropertyNames.PidLidCurrentVersionName, (uint)PropertyLID.PidLidCurrentVersionName, PropertySet.PSETIDCommon, PropertyType.PtypString);
            this.SetNamedProperty(targetMessageHandle, propertyName, Common.GetBytesFromUnicodeString("Current version name"));
            propertyName = new PropertyNameObject(PropertyNames.PidLidSmartNoAttach, (uint)PropertyLID.PidLidSmartNoAttach, PropertySet.PSETIDCommon, PropertyType.PtypBoolean);
            this.SetNamedProperty(targetMessageHandle, propertyName, BitConverter.GetBytes(false));
            propertyName = new PropertyNameObject(PropertyNames.PidLidCommonStart, (uint)PropertyLID.PidLidCommonStart, PropertySet.PSETIDCommon, PropertyType.PtypTime);
            this.SetNamedProperty(targetMessageHandle, propertyName, BitConverter.GetBytes(DateTime.Parse(TestDataOfDateTime).ToFileTimeUtc()));
            propertyName = new PropertyNameObject(PropertyNames.PidLidCommonEnd, (uint)PropertyLID.PidLidCommonEnd, PropertySet.PSETIDCommon, PropertyType.PtypTime);
            this.SetNamedProperty(targetMessageHandle, propertyName, BitConverter.GetBytes(DateTime.Parse(TestDataOfDateTime).ToFileTimeUtc()));
            propertyName = new PropertyNameObject(PropertyNames.PidLidAgingDontAgeMe, (uint)PropertyLID.PidLidAgingDontAgeMe, PropertySet.PSETIDCommon, PropertyType.PtypBoolean);
            this.SetNamedProperty(targetMessageHandle, propertyName, BitConverter.GetBytes(true));
            #endregion

            #region Get properties value in message
            Dictionary<PropertyNames, byte[]> propertyValues = this.MSOXCMSGAdapter.GetNamedPropertyValues(propertyNameList, targetMessageHandle);

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

            // Verify MS-OXCMSG requirement: MS-OXCMSG_R1654
            this.Site.CaptureRequirementIfIsTrue(
                BitConverter.ToBoolean(propertyValues[PropertyNames.PidLidAgingDontAgeMe], 0),
                1654,
                @"[In PidLidAgingDontAgeMe Property] This property [PidLidAgingDontAgeMe] is set to ""TRUE"" if the message will not be automatically archived.");

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

            // Verify MS-OXCMSG requirement: MS-OXCMSG_R91
            this.Site.CaptureRequirementIfIsFalse(
                 BitConverter.ToBoolean(propertyValues[PropertyNames.PidLidSmartNoAttach], 0),
                91,
                @"[In PidLidSmartNoAttach Property] If this property is unset, a default value of FALSE (0x00) is used.");

            #endregion

            #region Set specified properties of message created by above step.
            propertyName = new PropertyNameObject(PropertyNames.PidLidAgingDontAgeMe, (uint)PropertyLID.PidLidAgingDontAgeMe, PropertySet.PSETIDCommon, PropertyType.PtypBoolean);
            this.SetNamedProperty(targetMessageHandle, propertyName, BitConverter.GetBytes(false));

            #endregion

            #region Get properties value in message
            propertyValues = this.MSOXCMSGAdapter.GetNamedPropertyValues(propertyNameList, targetMessageHandle);

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

            // Verify MS-OXCMSG requirement: MS-OXCMSG_R1655
            this.Site.CaptureRequirementIfIsFalse(
                BitConverter.ToBoolean(propertyValues[PropertyNames.PidLidAgingDontAgeMe], 0),
                1655,
                @"[In PidLidAgingDontAgeMe Property] otherwise [the message will be automatically archived], [this property is set to] ""FALSE"".");
            #endregion

            this.ReleaseRop(targetMessageHandle);

            propertyNameList = new List<PropertyNameObject>();
            PropertyNameObject contentBaseName = new PropertyNameObject(PropertyNames.PidNameContentBase, "Content-Base", PropertySet.PSINTERNETHEADERS, PropertyType.PtypString);
            propertyNameList.Add(contentBaseName);
            PropertyNameObject acceptLanguageName = new PropertyNameObject(PropertyNames.PidNameAcceptLanguage, "Accept-Language", PropertySet.PSINTERNETHEADERS, PropertyType.PtypString);
            propertyNameList.Add(acceptLanguageName);
            PropertyNameObject contentClassName = new PropertyNameObject(PropertyNames.PidNameContentClass, "Content-Class", PropertySet.PSINTERNETHEADERS, PropertyType.PtypString);
            propertyNameList.Add(contentClassName);
            PropertyNameObject contentType = new PropertyNameObject(PropertyNames.PidNameContentType, "Content-Type", PropertySet.PSINTERNETHEADERS, PropertyType.PtypString);
            propertyNameList.Add(contentType);
            PropertyNameObject keywords = new PropertyNameObject(PropertyNames.PidNameKeywords, "Keywords", PropertySet.PSPUBLICSTRINGS, PropertyType.PtypMultipleString);
            propertyNameList.Add(keywords);

            #region Call RopCreateMessage to create Message object.
            targetMessageHandle = this.CreatedMessage(logonResponse.FolderIds[4], this.insideObjHandle);
            #endregion

            #region Set specified properties of message created by above step.
            this.SetNamedProperty(targetMessageHandle, contentBaseName, Common.GetBytesFromUnicodeString(TestDataOfPidNameContentBase));
            this.SetNamedProperty(targetMessageHandle, acceptLanguageName, Common.GetBytesFromUnicodeString(TestDataOfPidNameAcceptLanguage));
            this.SetNamedProperty(targetMessageHandle, contentClassName, Common.GetBytesFromUnicodeString(TestDataOfPidNameContentClass));
            this.SetNamedProperty(targetMessageHandle, contentType, Common.GetBytesFromUnicodeString(TestDataOfPidNameContentType));
            this.SetNamedProperty(targetMessageHandle, keywords, Common.GetBytesFromMutiUnicodeString(new string[] { TestDataOfPidNameKeywords }));
            #endregion

            #region Get properties value in message
            propertyValues = this.MSOXCMSGAdapter.GetNamedPropertyValues(propertyNameList, targetMessageHandle);
            string contentBaseValue = Encoding.Unicode.GetString(propertyValues[PropertyNames.PidNameContentBase], 0, propertyValues[PropertyNames.PidNameContentBase].Length - 2);

            // Add the debug information
            this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCMSG_R1208, The value of PidNameContentBase is {0}.", contentBaseValue);

            // Verify MS-OXCMSG requirement: MS-OXCMSG_R1208
            bool isVerifiedR1208 = Uri.IsWellFormedUriString(contentBaseValue, UriKind.RelativeOrAbsolute);

            this.Site.CaptureRequirementIfIsTrue(
                isVerifiedR1208,
                1208,
                @"[In PidNameContentBase Property] The PidNameContentBase property ([MS-OXPROPS] section 2.406) specifies the value of the Content-Base header (2), which defines the base Uniform Resource Identifier (URI) for resolving relative URLs contained within the message body.");

            string acceptLanguageValue = Encoding.Unicode.GetString(propertyValues[PropertyNames.PidNameAcceptLanguage], 0, propertyValues[PropertyNames.PidNameAcceptLanguage].Length - 2);

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

            // Verify MS-OXCMSG requirement: MS-OXCMSG_R1210
            this.Site.CaptureRequirementIfAreEqual<string>(
                TestDataOfPidNameAcceptLanguage,
                acceptLanguageValue,
                1210,
                @"[In PidNameAcceptLanguage Property] The PidNameAcceptLanguage property ([MS-OXPROPS] section 2.366) contains the value of the Accept-Language header (2), which defines the natural languages in which the sender prefers to receive a response.");

            string contentTypeValue = Encoding.Unicode.GetString(propertyValues[PropertyNames.PidNameContentType], 0, propertyValues[PropertyNames.PidNameContentType].Length - 2);

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

            // Verify MS-OXCMSG requirement: MS-OXCMSG_R2038
            this.Site.CaptureRequirementIfAreEqual<string>(
                TestDataOfPidNameContentType,
                contentTypeValue,
                2038,
                @"[In PidNameContentType Property] The PidNameContentType property ([MS-OXPROPS] section 2.408) contains the value of the Content-Type header (2), which defines the type of the body part's content.");           
        
            #endregion

            #region Call RopSaveMessage to commit the message changes
            RopSaveChangesMessageResponse saveChangesResposne = this.SaveMessage(targetMessageHandle, (byte)SaveFlags.ForceSave);
            Site.Assert.AreEqual<uint>(TestSuiteBase.Success, saveChangesResposne.ReturnValue, "Call RopSaveChangesMessage ROP should success.");
            ulong messageId = saveChangesResposne.MessageId;
            #endregion

            #region Call RopOpenMessage which OpenModeFlags is read-write to open created message.
            RopOpenMessageResponse openMessageResp;
            this.OpenSpecificMessage(logonResponse.FolderIds[4], messageId, this.insideObjHandle, MessageOpenModeFlags.ReadOnly, out openMessageResp);

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

            // Verify MS-OXCMSG requirement: MS-OXCMSG_R1799
            this.Site.CaptureRequirementIfIsTrue(
                Convert.ToBoolean(openMessageResp.HasNamedProperties),
                1799,
                @"[In PidTagHasNamedProperties Property] The PidTagHasNamedProperties property is set to ""TRUE"" if this Message object supports named properties.");
            #endregion

            this.ReleaseRop(targetMessageHandle);
        }
        /// <summary>
        /// Set the value of properties identified by long ID or name in message.
        /// </summary>
        /// <param name="messageHandle">The specified message handle.</param>
        /// <param name="property">The PropertyName of specified property.</param>
        /// <param name="value">The value of specified property.</param>
        private void SetNamedProperty(uint messageHandle, PropertyNameObject property, byte[] value)
        {
            #region Call RopGetPropertyIdsFromNames to get property ID.
            PropertyName[] propertyNames = new PropertyName[1];
            propertyNames[0] = property.PropertyName;

            RopGetPropertyIdsFromNamesRequest getPropertyIdsFromNamesRequest = new RopGetPropertyIdsFromNamesRequest()
            {
                RopId = (byte)RopId.RopGetPropertyIdsFromNames,
                LogonId = CommonLogonId,
                InputHandleIndex = CommonInputHandleIndex,
                Flags = (byte)GetPropertyIdsFromNamesFlags.Create,
                PropertyNameCount = (ushort)propertyNames.Length,
                PropertyNames = propertyNames,
            };
            this.ResponseSOHs = this.MSOXCMSGAdapter.DoRopCall(getPropertyIdsFromNamesRequest, messageHandle, ref this.response, ref this.rawData, GetPropertiesFlags.None);
            RopGetPropertyIdsFromNamesResponse getPropertyIdsFromNamesResponse = (RopGetPropertyIdsFromNamesResponse)this.response;
            Site.Assert.AreEqual<uint>(TestSuiteBase.Success, getPropertyIdsFromNamesResponse.ReturnValue, "Call RopGetPropertyIdsFromNames should success.");
            #endregion

            #region Set property value.

            List<TaggedPropertyValue> taggedPropertyValues = new List<TaggedPropertyValue>();

            int valueSize = 0;
            PropertyTag propertyTag = new PropertyTag
            {
                PropertyId = getPropertyIdsFromNamesResponse.PropertyIds[0].ID,
                PropertyType = (ushort)property.PropertyType
            };
            TaggedPropertyValue taggedPropertyValue = new TaggedPropertyValue
            {
                PropertyTag = propertyTag,
                Value = value
            };
            valueSize += taggedPropertyValue.Size();
            taggedPropertyValues.Add(taggedPropertyValue);

            RopSetPropertiesRequest rpmSetRequest = new RopSetPropertiesRequest()
            {
                RopId = (byte)RopId.RopSetProperties,
                LogonId = CommonLogonId,
                InputHandleIndex = CommonInputHandleIndex,
                PropertyValueCount = (ushort)taggedPropertyValues.Count,
                PropertyValueSize = (ushort)(valueSize + 2),
                PropertyValues = taggedPropertyValues.ToArray()
            };
            this.ResponseSOHs = this.MSOXCMSGAdapter.DoRopCall(rpmSetRequest, messageHandle, ref this.response, ref this.rawData, GetPropertiesFlags.None);

            RopSetPropertiesResponse rpmSetResponse = (RopSetPropertiesResponse)this.response;
            Site.Assert.AreEqual<uint>(TestSuiteBase.Success, rpmSetResponse.PropertyProblemCount, "If ROP succeeds, the PropertyProblemCount of its response is 0(success).");
            #endregion
        }
        public void MSOXCMSG_S04_TC06_PidLidSideEffectsProperty()
        {
            this.CheckMapiHttpIsSupported();
            this.ConnectToServer(ConnectionType.PrivateMailboxServer);

            List<PropertyNameObject> propertyNameList = new List<PropertyNameObject>
            {
                new PropertyNameObject(PropertyNames.PidLidSideEffects, (uint)PropertyLID.PidLidSideEffects, PropertySet.PSETIDCommon, PropertyType.PtypInteger32)
            };

            PropertyNameObject propertyName = new PropertyNameObject(PropertyNames.PidLidSideEffects, (uint)PropertyLID.PidLidSideEffects, PropertySet.PSETIDCommon, PropertyType.PtypInteger32);

            #region Call RopLogon to logon the private mailbox.
            RopLogonResponse logonResponse = this.Logon(LogonType.Mailbox, out this.insideObjHandle);
            #endregion

            #region Call RopCreateMessage to create Message object.
            uint targetMessageHandle = this.CreatedMessage(logonResponse.FolderIds[4], this.insideObjHandle);
            #endregion

            #region Set PidLidSideEffects property to 0x00000001 in specified Message created by step 2.
            this.SetNamedProperty(targetMessageHandle, propertyName, BitConverter.GetBytes(0x00000001));
            #endregion

            #region Get PidLidSideEffects property value.
            Dictionary<PropertyNames, byte[]> propertyValues = this.MSOXCMSGAdapter.GetNamedPropertyValues(propertyNameList, targetMessageHandle);

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

            // Verify MS-OXCMSG requirement: MS-OXCMSG_R2008
            this.Site.CaptureRequirementIfAreEqual<int>(
                0x00000001,
                BitConverter.ToInt32(propertyValues[PropertyNames.PidLidSideEffects], 0),
                2008,
                @"[In PidLidSideEffects Property] [The value of flag seOpenToDelete is] 0x00000001.");
            #endregion

            #region Set PidLidSideEffects property to 0x00000008 in specified Message created by step 2.
            this.SetNamedProperty(targetMessageHandle, propertyName, BitConverter.GetBytes(0x00000008));
            #endregion

            #region Get PidLidSideEffects property value.
            propertyValues = this.MSOXCMSGAdapter.GetNamedPropertyValues(propertyNameList, targetMessageHandle);

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

            // Verify MS-OXCMSG requirement: MS-OXCMSG_R2009
            this.Site.CaptureRequirementIfAreEqual<int>(
                0x00000008,
                BitConverter.ToInt32(propertyValues[PropertyNames.PidLidSideEffects], 0),
                2009,
                @"[In PidLidSideEffects Property] [The value of flag seNoFrame is] 0x00000008.");
            #endregion

            #region Set PidLidSideEffects property to 0x00000010 in specified Message created by step 2.
            this.SetNamedProperty(targetMessageHandle, propertyName, BitConverter.GetBytes(0x00000010));
            #endregion

            #region Get PidLidSideEffects property value.
            propertyValues = this.MSOXCMSGAdapter.GetNamedPropertyValues(propertyNameList, targetMessageHandle);

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

            // Verify MS-OXCMSG requirement: MS-OXCMSG_R2010
            this.Site.CaptureRequirementIfAreEqual<int>(
                0x00000010,
                BitConverter.ToInt32(propertyValues[PropertyNames.PidLidSideEffects], 0),
                2010,
                @"[In PidLidSideEffects Property] [The value of flag seCoerceToInbox is] 0x00000010.");
            #endregion

            #region Set PidLidSideEffects property to 0x00000020 in specified Message created by step 2.
            this.SetNamedProperty(targetMessageHandle, propertyName, BitConverter.GetBytes(0x00000020));
            #endregion

            #region Get PidLidSideEffects property value.
            propertyValues = this.MSOXCMSGAdapter.GetNamedPropertyValues(propertyNameList, targetMessageHandle);

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

            // Verify MS-OXCMSG requirement: MS-OXCMSG_R2011
            this.Site.CaptureRequirementIfAreEqual<int>(
                0x00000020,
                BitConverter.ToInt32(propertyValues[PropertyNames.PidLidSideEffects], 0),
                2011,
                @"[In PidLidSideEffects Property] [The value of flag seOpenToCopy is] 0x00000020.");
            #endregion

            #region Set PidLidSideEffects property to 0x00000040 in specified Message created by step 2.
            this.SetNamedProperty(targetMessageHandle, propertyName, BitConverter.GetBytes(0x00000040));
            #endregion

            #region Get PidLidSideEffects property value.
            propertyValues = this.MSOXCMSGAdapter.GetNamedPropertyValues(propertyNameList, targetMessageHandle);

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

            // Verify MS-OXCMSG requirement: MS-OXCMSG_R2012
            this.Site.CaptureRequirementIfAreEqual<int>(
                0x00000040,
                BitConverter.ToInt32(propertyValues[PropertyNames.PidLidSideEffects], 0),
                2012,
                @"[In PidLidSideEffects Property] [The value of flag seOpenToMove is] 0x00000040.");
            #endregion

            #region Set PidLidSideEffects property to 0x00000100 in specified Message created by step 2.
            this.SetNamedProperty(targetMessageHandle, propertyName, BitConverter.GetBytes(0x00000100));
            #endregion

            #region Get PidLidSideEffects property value.
            propertyValues = this.MSOXCMSGAdapter.GetNamedPropertyValues(propertyNameList, targetMessageHandle);

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

            // Verify MS-OXCMSG requirement: MS-OXCMSG_R2013
            this.Site.CaptureRequirementIfAreEqual<int>(
                0x00000100,
                BitConverter.ToInt32(propertyValues[PropertyNames.PidLidSideEffects], 0),
                2013,
                @"[In PidLidSideEffects Property] [The value of flag seOpenForCtxMenu is] 0x00000100.");
            #endregion

            #region Set PidLidSideEffects property to 0x00000400 in specified Message created by step 2.
            this.SetNamedProperty(targetMessageHandle, propertyName, BitConverter.GetBytes(0x00000400));
            #endregion

            #region Get PidLidSideEffects property value.
            propertyValues = this.MSOXCMSGAdapter.GetNamedPropertyValues(propertyNameList, targetMessageHandle);

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

            // Verify MS-OXCMSG requirement: MS-OXCMSG_R2014
            this.Site.CaptureRequirementIfAreEqual<int>(
                0x00000400,
                BitConverter.ToInt32(propertyValues[PropertyNames.PidLidSideEffects], 0),
                2014,
                @"[In PidLidSideEffects Property] [The value of flag seCannotUndoDelete is] 0x00000400.");
            #endregion

            #region Set PidLidSideEffects property to 0x00000800 in specified Message created by step 2.
            this.SetNamedProperty(targetMessageHandle, propertyName, BitConverter.GetBytes(0x00000800));
            #endregion

            #region Get PidLidSideEffects property value.
            propertyValues = this.MSOXCMSGAdapter.GetNamedPropertyValues(propertyNameList, targetMessageHandle);

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

            // Verify MS-OXCMSG requirement: MS-OXCMSG_R2015
            this.Site.CaptureRequirementIfAreEqual<int>(
                0x00000800,
                BitConverter.ToInt32(propertyValues[PropertyNames.PidLidSideEffects], 0),
                2015,
                @"[In PidLidSideEffects Property] [The value of flag seCannotUndoCopy is] 0x00000800.");
            #endregion

            #region Set PidLidSideEffects property to 0x00001000 in specified Message created by step 2.
            this.SetNamedProperty(targetMessageHandle, propertyName, BitConverter.GetBytes(0x00001000));
            #endregion

            #region Get PidLidSideEffects property value.
            propertyValues = this.MSOXCMSGAdapter.GetNamedPropertyValues(propertyNameList, targetMessageHandle);

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

            // Verify MS-OXCMSG requirement: MS-OXCMSG_R2016
            this.Site.CaptureRequirementIfAreEqual<int>(
                0x00001000,
                BitConverter.ToInt32(propertyValues[PropertyNames.PidLidSideEffects], 0),
                2016,
                @"[In PidLidSideEffects Property] [The value of flag seCannotUndoMove is] 0x00001000.");
            #endregion

            #region Set PidLidSideEffects property to 0x00002000 in specified Message created by step 2.
            this.SetNamedProperty(targetMessageHandle, propertyName, BitConverter.GetBytes(0x00002000));
            #endregion

            #region Get PidLidSideEffects property value.
            propertyValues = this.MSOXCMSGAdapter.GetNamedPropertyValues(propertyNameList, targetMessageHandle);

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

            // Verify MS-OXCMSG requirement: MS-OXCMSG_R2017
            this.Site.CaptureRequirementIfAreEqual<int>(
                0x00002000,
                BitConverter.ToInt32(propertyValues[PropertyNames.PidLidSideEffects], 0),
                2017,
                @"[In PidLidSideEffects Property] [The value of flag seHasScript is] 0x00002000.");
            #endregion

            #region Set PidLidSideEffects property to 0x00004000 in specified Message created by step 2.
            this.SetNamedProperty(targetMessageHandle, propertyName, BitConverter.GetBytes(0x00004000));
            #endregion

            #region Get PidLidSideEffects property value.
            propertyValues = this.MSOXCMSGAdapter.GetNamedPropertyValues(propertyNameList, targetMessageHandle);

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

            // Verify MS-OXCMSG requirement: MS-OXCMSG_R2018
            this.Site.CaptureRequirementIfAreEqual<int>(
                0x00004000,
                BitConverter.ToInt32(propertyValues[PropertyNames.PidLidSideEffects], 0),
                2018,
                @"[In PidLidSideEffects Property] [The value of flag seOpenToPermDelete is] 0x00004000.");
            #endregion

            this.ReleaseRop(targetMessageHandle);
        }