/// <summary> /// Verify the message of RopGetMessageStatus. /// </summary> /// <param name="retuResponse">The response of RopGetMessageStatus</param> private void VerifyGetMessageStatusResponse(RopSetMessageStatusResponse retuResponse) { // Add the debug information this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCMSG_R793"); // Verify MS-OXCMSG requirement: MS-OXCMSG_R793 this.Site.CaptureRequirementIfAreEqual<int>( 4, retuResponse.MessageStatusFlags.ToString().Length, 793, @"[In RopGetMessageStatus ROP Response Buffer] MessageStatusFlags: 4 bytes indicating the status of the Message object."); // Add the debug information this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCMSG_R794. The value of MessageStatusFlags is {0}.", retuResponse.MessageStatusFlags); // Verify MS-OXCMSG requirement: MS-OXCMSG_R794 bool isVerifiedR794 = false; uint messageStatusFlags = retuResponse.MessageStatusFlags; uint value = 0 | 0x00001000 | 0x00000800 | 0x00002000; if ((messageStatusFlags | value) == value) { isVerifiedR794 = true; } this.Site.CaptureRequirementIfIsTrue( isVerifiedR794, 794, @"[In RopGetMessageStatus ROP Response Buffer] [MessageStatusFlags] This field contains a bitwise OR of zero or more values from the table in section 2.2.1.8."); }
/// <summary> /// Verify RopSetMessageStatus Failure Response /// </summary> /// <param name="ropSetMessageStatusResponse">The response of RopSetMessageStatus request</param> /// <param name="inputHandleIndex">The field of InputHandleIndex in RopSetMessageStatus request</param> private void VerifyRopSetMessageStatusFailureResponse(RopSetMessageStatusResponse ropSetMessageStatusResponse, byte inputHandleIndex) { // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2025"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2025 Site.CaptureRequirementIfAreEqual<Type>( typeof(byte), ropSetMessageStatusResponse.RopId.GetType(), 2025, @"[In RopSetMessageStatus ROP Failure Response Buffer]RopId (1 byte): An unsigned integer."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2027"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2027 Site.CaptureRequirementIfAreEqual<byte>( (byte)RopId.RopSetMessageStatus, ropSetMessageStatusResponse.RopId, 2027, @"[In RopSetMessageStatus ROP Failure Response Buffer,RopId (1 byte)]For this operation[RopSetMessageStatus], this field is set to 0x20."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2028"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2028 Site.CaptureRequirementIfAreEqual<Type>( typeof(byte), ropSetMessageStatusResponse.InputHandleIndex.GetType(), 2028, @"[In RopSetMessageStatus ROP Failure Response Buffer]InputHandleIndex (1 byte): An unsigned integer."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2029"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2029 Site.CaptureRequirementIfAreEqual<byte>( inputHandleIndex, ropSetMessageStatusResponse.InputHandleIndex, 2029, @"[In RopSetMessageStatus ROP Failure Response Buffer,InputHandleIndex (1 byte)]This index MUST be set to the value specified in the InputHandleIndex field in the request."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2031"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2031 Site.CaptureRequirementIfAreEqual<Type>( typeof(uint), ropSetMessageStatusResponse.ReturnValue.GetType(), 2031, @"[In RopSetMessageStatus ROP Failure Response Buffer]ReturnValue (4 bytes): An unsigned integer."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2033"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2033 Site.CaptureRequirementIfAreNotEqual<uint>( SuccessReturnValue, ropSetMessageStatusResponse.ReturnValue, 2033, @"[In RopSetMessageStatus ROP Failure Response Buffer,ReturnValue (4 bytes)]For this response[Failure Response ], this field is set to a value other than 0x00000000."); }
/// <summary> /// Verify the property of MessageStatusFlags /// </summary> /// <param name="retuResponse"> The response of RopSetMessageStatus.</param> private void VerifyMessageSyntaxMessageStatusFlags(RopSetMessageStatusResponse retuResponse) { uint messageStatusFlags = retuResponse.MessageStatusFlags; // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCMSG_R807"); // Verify MS-OXCMSG requirement: MS-OXCMSG_R807 bool isVerifyR807 = false; uint value = 0 | 0x00001000 | 0x00000800 | 0x00002000; if ((messageStatusFlags | value) == value) { isVerifyR807 = true; } Site.CaptureRequirementIfIsTrue( isVerifyR807, 807, @"[In RopSetMessageStatus ROP Response Buffer] [MessageStatusFlags] This field MUST contain a bitwise OR of zero or more values from the table in section 2.2.1.8."); }
/// <summary> /// Verify RopSetMessageStatus Success Response /// </summary> /// <param name="ropSetMessageStatusResponse">The response of RopSetMessageStatus request</param> /// <param name="inputHandleIndex">The field of InputHandleIndex in RopSetMessageStatus request</param> private void VerifyRopSetMessageStatusSuccessResponse(RopSetMessageStatusResponse ropSetMessageStatusResponse, byte inputHandleIndex) { // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2013"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2013 Site.CaptureRequirementIfAreEqual<Type>( typeof(byte), ropSetMessageStatusResponse.RopId.GetType(), 2013, @"[In RopSetMessageStatus ROP Success Response Buffer]RopId (1 byte): An unsigned integer."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2015"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2015 Site.CaptureRequirementIfAreEqual<byte>( (byte)RopId.RopSetMessageStatus, ropSetMessageStatusResponse.RopId, 2015, @"[In RopSetMessageStatus ROP Success Response Buffer,RopId (1 byte)]For this operation[RopSetMessageStatus], this field is set to 0x20."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2016"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2016 Site.CaptureRequirementIfAreEqual<Type>( typeof(byte), ropSetMessageStatusResponse.InputHandleIndex.GetType(), 2016, @"[In RopSetMessageStatus ROP Success Response Buffer]InputHandleIndex (1 byte): An unsigned integer."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2017"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2017 Site.CaptureRequirementIfAreEqual<byte>( inputHandleIndex, ropSetMessageStatusResponse.InputHandleIndex, 2017, @"[In RopSetMessageStatus ROP Success Response Buffer,InputHandleIndex (1 byte)]This index MUST be set to the value specified in the InputHandleIndex field in the request."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2019"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2019 Site.CaptureRequirementIfAreEqual<Type>( typeof(uint), ropSetMessageStatusResponse.ReturnValue.GetType(), 2019, @"[In RopSetMessageStatus ROP Success Response Buffer]ReturnValue (4 bytes): An unsigned integer."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2021"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2021 Site.CaptureRequirementIfAreEqual<uint>( SuccessReturnValue, ropSetMessageStatusResponse.ReturnValue, 2021, @"[In RopSetMessageStatus ROP Success Response Buffer,ReturnValue (4 bytes)]For this response[Success Response], this field is set to 0x00000000."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2022"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2022 Site.CaptureRequirementIfAreEqual<int>( 4, Marshal.SizeOf(ropSetMessageStatusResponse.MessageStatusFlags), 2022, @"[In RopSetMessageStatus ROP Success Response Buffer]MessageStatusFlags (4 bytes): A flags structure."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2024,MessageStatusFlags:{0}", ropSetMessageStatusResponse.MessageStatusFlags); // Verify MS-OXCROPS requirement: MS-OXCROPS_R2024 bool isVerifyR2024 = (ropSetMessageStatusResponse.MessageStatusFlags == (uint)MessageStatusFlags.None) || ((ropSetMessageStatusResponse.MessageStatusFlags & (uint)MessageStatusFlags.MsRemoteDownload) == (uint)MessageStatusFlags.MsRemoteDownload) || ((ropSetMessageStatusResponse.MessageStatusFlags & (uint)MessageStatusFlags.MsInConflict) == (uint)MessageStatusFlags.MsInConflict) || ((ropSetMessageStatusResponse.MessageStatusFlags & (uint)MessageStatusFlags.MsRemoteDelete) == (uint)MessageStatusFlags.MsRemoteDelete); Site.CaptureRequirementIfIsTrue( isVerifyR2024, 2024, @"[In RopSetMessageStatus ROP Success Response Buffer,MessageStatusFlags (4 bytes)]The possible values[zero, the value of msRemoteDownload is 0x00001000, the value of msInConflict is 0x00000800 and the value of msRemoteDelete is 0x00002000] are specified in [MS-OXCMSG] section 2.2.3.8.2."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R20004"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R20004 this.Site.CaptureRequirementIfAreEqual<byte>( 0x20, ropSetMessageStatusResponse.RopId, 20004, @"[In RopGetMessageStatus ROP Response Buffers] The value of the RopId field for RopGetMessageStatus responses MUST be 0x20, which is the same as that for the RopSetMessageStatus responses."); }