/// <summary> /// Verify RopExpandRow Failure Response /// </summary> /// <param name="ropExpandRowResponse">The response of RopExpandRow request</param> /// <param name="inputHandleIndex">The field of InputHandleIndex in RopExpandRow request</param> private void VerifyRopExpandRowFailureResponse(RopExpandRowResponse ropExpandRowResponse, byte inputHandleIndex) { // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R1561"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R1561 Site.CaptureRequirementIfAreEqual<Type>( typeof(byte), ropExpandRowResponse.RopId.GetType(), 1561, @"[In RopExpandRow ROP Failure Response Buffer] RopId (1 byte): An unsigned integer."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R1563"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R1563 Site.CaptureRequirementIfAreEqual<byte>( (byte)RopId.RopExpandRow, ropExpandRowResponse.RopId, 1563, @"[In RopExpandRow ROP Failure Response Buffer] RopId (1 byte): For this operation[RopExpandRow], this field[RopId (1 byte)] is set to 0x59."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R1564"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R1564 Site.CaptureRequirementIfAreEqual<Type>( typeof(byte), ropExpandRowResponse.InputHandleIndex.GetType(), 1564, @"[In RopExpandRow ROP Failure Response Buffer] InputHandleIndex (1 byte): An unsigned integer."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R1565"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R1565 Site.CaptureRequirementIfAreEqual<byte>( inputHandleIndex, ropExpandRowResponse.InputHandleIndex, 1565, @"[In RopExpandRow 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_R1566"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R1566 Site.CaptureRequirementIfAreEqual<Type>( typeof(uint), ropExpandRowResponse.ReturnValue.GetType(), 1566, @"[In RopExpandRow ROP Failure Response Buffer] ReturnValue (4 bytes): An unsigned integer."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R1568"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R1568 Site.CaptureRequirementIfAreNotEqual<uint>( SuccessReturnValue, ropExpandRowResponse.ReturnValue, 1568, @"[In RopExpandRow ROP Failure Response Buffer] ReturnValue (4 bytes): For this response[Failure Response], this field is set to a value other than 0x00000000."); }
/// <summary> /// Verify ropExpandRow /// </summary> /// <param name="expandRowResponse">RopExpandRowResponse structure data that needs verification</param> /// <param name="theValueMaxRowCountInExpandRowrequest">The value of the MaxRowCount field in the ROP request buffer</param> private void VerifyRopExpandRowResponse(RopExpandRowResponse expandRowResponse, ushort theValueMaxRowCountInExpandRowrequest) { this.VerifyRPCLayerRequirement(); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCTABL_R278"); // Verify MS-OXCTABL requirement: MS-OXCTABL_R278 Site.CaptureRequirementIfAreEqual<Type>( typeof(ushort), expandRowResponse.RowCount.GetType(), 278, @"[In RopExpandRow ROP Response Buffer] ExpandedRowCount (4 bytes): An unsigned integer that specifies the total number of rows that are in the expanded category."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCTABL_R279"); // Verify MS-OXCTABL requirement: MS-OXCTABL_R279 Site.CaptureRequirementIfAreEqual<Type>( typeof(ushort), expandRowResponse.RowCount.GetType(), 279, @"[In RopExpandRow ROP Response Buffer] RowCount (2 bytes): An unsigned integer that specifies the number of PropertyRow structures, as specified in [MS-OXCDATA] section 2.8.1, that are contained in the RowData field."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCTABL_R280: the value of the RowCount field in the response for RopExpandRow is set to {0}", expandRowResponse.RowCount); // Verify MS-OXCTABL requirement: MS-OXCTABL_R280 bool isVerifyR280 = expandRowResponse.RowCount <= theValueMaxRowCountInExpandRowrequest; Site.CaptureRequirementIfIsTrue( isVerifyR280, 280, @"[In RopExpandRow ROP Response Buffer] The value of this field [RowCount] MUST be less than or equal to the value of the MaxRowCount field in the ROP request buffer."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCTABL_R281: the value of the RowCount field is:{0}, and ExpandedRowCount is:{1}", expandRowResponse.RowCount, expandRowResponse.ExpandedRowCount); // Verify MS-OXCTABL requirement: MS-OXCTABL_R281 bool isVerifyR281 = expandRowResponse.RowCount <= expandRowResponse.ExpandedRowCount; Site.CaptureRequirementIfIsTrue( isVerifyR281, 281, @"[In RopExpandRow ROP Response Buffer] The value of this field [RowCount] MUST be less than or equal to the value of the ExpandedRowCount field in the ROP response buffer."); }
/// <summary> /// Verify RopExpandRow Success Response /// </summary> /// <param name="ropExpandRowResponse">The response of RopExpandRow request</param> /// <param name="inputHandleIndex">The field of InputHandleIndex in RopExpandRow request</param> /// <param name="propertyTags">Array of PropertyTag structures specifies the property values that are visible in table rows, set by a RopSetColumns request</param> private void VerifyRopExpandRowSuccessResponse(RopExpandRowResponse ropExpandRowResponse, byte inputHandleIndex, PropertyTag[] propertyTags) { // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R1545"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R1545 Site.CaptureRequirementIfAreEqual<Type>( typeof(byte), ropExpandRowResponse.RopId.GetType(), 1545, @"[In RopExpandRow ROP Success Response Buffer] RopId (1 byte): An unsigned integer."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R1547"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R1547 Site.CaptureRequirementIfAreEqual<byte>( (byte)RopId.RopExpandRow, ropExpandRowResponse.RopId, 1547, @"[In RopExpandRow ROP Success Response Buffer] RopId (1 byte): For this operation[RopExpandRow], this field[RopId (1 byte)] is set to 0x59."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R1548"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R1548 Site.CaptureRequirementIfAreEqual<Type>( typeof(byte), ropExpandRowResponse.InputHandleIndex.GetType(), 1548, @"[In RopExpandRow ROP Success Response Buffer] InputHandleIndex (1 byte): An unsigned integer."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R1549"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R1549 Site.CaptureRequirementIfAreEqual<byte>( inputHandleIndex, ropExpandRowResponse.InputHandleIndex, 1549, @"[In RopExpandRow 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_R1550"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R1550 Site.CaptureRequirementIfAreEqual<Type>( typeof(uint), ropExpandRowResponse.ReturnValue.GetType(), 1550, @"[In RopExpandRow ROP Success Response Buffer] ReturnValue (4 bytes): An unsigned integer."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R1552"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R1552 Site.CaptureRequirementIfAreEqual<uint>( SuccessReturnValue, ropExpandRowResponse.ReturnValue, 1552, @"[In RopExpandRow 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_R1553"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R1553 Site.CaptureRequirementIfAreEqual<Type>( typeof(uint), ropExpandRowResponse.ExpandedRowCount.GetType(), 1553, @"[In RopExpandRow ROP Success Response Buffer] ExpandedRowCount (4 bytes): An unsigned integer."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R1555"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R1555 Site.CaptureRequirementIfAreEqual<Type>( typeof(ushort), ropExpandRowResponse.RowCount.GetType(), 1555, @"[In RopExpandRow ROP Success Response Buffer] RowCount (2 bytes): An unsigned integer."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R1558"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R1558 Site.CaptureRequirementIfAreEqual<ushort>( ropExpandRowResponse.RowCount, (ushort)ropExpandRowResponse.RowData.Count, 1558, @"[In RopExpandRow ROP Success Response Buffer] RowData (variable): The number of structures contained in this field is specified by the RowCount field."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R1560,the actual value of the RowData is {0}", ropExpandRowResponse.RowData); // Verify MS-OXCROPS requirement: MS-OXCROPS_R1560 // Assume the result is true. If one of rows element's count not equal columns count, then false. bool isVerifyR1560 = true; foreach (PropertyRow propertyRow in ropExpandRowResponse.RowData.PropertyRows) { isVerifyR1560 = isVerifyR1560 && (propertyRow.PropertyValues.Count == propertyTags.Length); // If one row element's count not equal columns count then break the iteration if (!isVerifyR1560) { break; } } Site.CaptureRequirementIfIsTrue( isVerifyR1560, 1560, @"[In RopExpandRow ROP Success Response Buffer] RowData (variable): The columns used for these rows were those previously set on this table by a RopSetColumns ROP request (section 2.2.5.1)."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R1557"); // Verify MS-OXCROPS requirement: MS-OXCROPS_R1557 Site.CaptureRequirementIfAreEqual<Type>( ropExpandRowResponse.RowData.PropertyRows.GetType(), typeof(List<PropertyRow>), 1557, @"[In RopExpandRow ROP Success Response Buffer] RowData (variable): A list of PropertyRow structures."); foreach (PropertyRow propertyRow in ropExpandRowResponse.RowData.PropertyRows) { // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCDATA_R76"); // Verify MS-OXCROPS requirement: MS-OXCDATA_R76 Site.CaptureRequirementIfAreEqual<Type>( typeof(byte), propertyRow.Flag.GetType(), "MS-OXCDATA", 76, @"[In FlaggedPropertyRow Structure] Flag (1 byte): An unsigned integer."); // Add the debug information Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCDATA_R80"); // Verify MS-OXCROPS requirement: MS-OXCDATA_R80 Site.CaptureRequirementIfAreEqual<Type>( typeof(List<PropertyValue>), propertyRow.PropertyValues.GetType(), "MS-OXCDATA", 80, @"[In FlaggedPropertyRow Structure] ValueArray (variable): An array of variable-sized structures."); } }