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); }