/// <summary>
        /// Verify RopDeletePropertiesNoReplicate Failure Response
        /// </summary>
        /// <param name="ropDeletePropertiesNoReplicateResponse">The failure response of RopDeletePropertiesNoReplicate request</param>
        /// <param name="inputHandleIndex">The field of InputHandleIndex in RopDeletePropertiesNoReplicate request</param>
        private void VerifyRopDeletePropertiesNoReplicateFailureResponse(RopDeletePropertiesNoReplicateResponse ropDeletePropertiesNoReplicateResponse, byte inputHandleIndex)
        {
            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2944");

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R2944
            Site.CaptureRequirementIfAreEqual<Type>(
                typeof(byte),
                ropDeletePropertiesNoReplicateResponse.RopId.GetType(),
                2944,
                @"[In RopDeletePropertiesNoReplicate ROP Failure Response Buffer]RopId (1 byte): An unsigned integer.");

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R2946
            Site.CaptureRequirementIfAreEqual<byte>(
                (byte)RopId.RopDeletePropertiesNoReplicate,
                ropDeletePropertiesNoReplicateResponse.RopId,
                2946,
                @"[In RopDeletePropertiesNoReplicate ROP Failure Response Buffer,RopId (1 byte)]For this operation[RopDeletePropertiesNoReplicate], this field is set to 0x7A.");

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R2947
            Site.CaptureRequirementIfAreEqual<Type>(
                typeof(byte),
                ropDeletePropertiesNoReplicateResponse.InputHandleIndex.GetType(),
                2947,
                @"[In RopDeletePropertiesNoReplicate ROP Failure Response Buffer]InputHandleIndex (1 byte): An unsigned integer.");

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R2948
            Site.CaptureRequirementIfAreEqual<byte>(
                inputHandleIndex,
                ropDeletePropertiesNoReplicateResponse.InputHandleIndex,
                2948,
                @"[In RopDeletePropertiesNoReplicate 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_R2950");

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R2950
            Site.CaptureRequirementIfAreEqual<Type>(
                typeof(uint),
                ropDeletePropertiesNoReplicateResponse.ReturnValue.GetType(),
                2950,
                @"[In RopDeletePropertiesNoReplicate ROP Failure Response Buffer]ReturnValue (4 bytes): An unsigned integer.");

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R2952
            Site.CaptureRequirementIfAreNotEqual<uint>(
                SuccessReturnValue,
                ropDeletePropertiesNoReplicateResponse.ReturnValue,
                2952,
                @"[In RopDeletePropertiesNoReplicate ROP Failure Response Buffer,ReturnValue (4 bytes)]For this response[Failure Response], this field is set to a value other than 0x00000000.");
        }
Ejemplo n.º 2
0
        /// <summary>
        /// Verify the RopDeletePropertiesNoReplicate operation related requirements.
        /// </summary>
        /// <param name="ropDeletePropertiesNoReplicateResponse">The RopDeletePropertiesNoReplicate response buffer structure.</param>
        /// <param name="objectType">Indicates which object type the RopDeletePropertiesNoReplicate operation is acting on.</param>
        private void VerifyRopDeletePropertiesNoReplicate(RopDeletePropertiesNoReplicateResponse ropDeletePropertiesNoReplicateResponse, ServerObjectType objectType)
        {
            if (ropDeletePropertiesNoReplicateResponse.ReturnValue.Equals((uint)CPRPTErrorCode.None))
            {
                if (objectType == ServerObjectType.Message)
                {
                    // If the object type this operation acting on is Message object and this operation is performed successfully, then the following requirement can be captured.
                    Site.CaptureRequirement(
                        837,
                        @"[In RopDeletePropertiesNoReplicate] This ROP is supported for Message objects.");
                }

                if (objectType == ServerObjectType.Folder)
                {
                    // If the object type this operation acting on is Folder object and this operation is performed successfully, then the following requirement can be captured.
                    Site.CaptureRequirement(
                        839,
                        @"[In RopDeletePropertiesNoReplicate] This ROP is supported for Folder objects.");
                }

                if (objectType == ServerObjectType.Attachment)
                {
                    // If the object type this operation acting on is Attachment object and this operation is performed successfully, then the following requirement can be captured.
                    Site.CaptureRequirement(
                        841,
                        @"[In RopDeletePropertiesNoReplicate] This ROP is supported for Attachment objects.");
                }

                if (objectType == ServerObjectType.Logon)
                {
                    // If the object type this operation acting on is Logon object and this operation is performed successfully, then the following requirement can be captured.
                    Site.CaptureRequirement(
                        843,
                        @"[In RopDeletePropertiesNoReplicate] This ROP is supported for Logon objects.");
                }

                if (ropDeletePropertiesNoReplicateResponse.PropertyProblemCount != 0)
                {
                    // The parser has ensured the field satisfied the format, otherwise the response cannot be received.
                    Site.CaptureRequirement(
                        84407,
                         @"[In RopDeletePropertiesNoReplicate ROP Response Buffer] PropertyProblems (variable): An array of PropertyProblem structures ([MS-OXCDATA] section 2.7).");
                }

                // The parser has ensured the field satisfied the format, otherwise the response cannot be received.
                Site.CaptureRequirement(
                      84405,
                      @"[In RopDeletePropertiesNoReplicate ROP Response Buffer] PropertyProblemCount: 2 bytes integer.");
            }

            if (ropDeletePropertiesNoReplicateResponse.ReturnValue == 0x8004010F)
            {
                // The parser has ensured the field satisfied the format, otherwise the response cannot be received.
                Site.CaptureRequirement(
                        "MS-OXCDATA",
                        2055,
                        @"[In Additional Error Codes] The numeric value (hex) for error code NotFound is 0x8004010F, %x0F.01.04.80.");
            }

            ushort numberOfPropertyProblem = 0;

            if (ropDeletePropertiesNoReplicateResponse.PropertyProblemCount > 0)
            {
                for (int counter = 0; counter < ropDeletePropertiesNoReplicateResponse.PropertyProblems.Length; counter++)
                {
                    this.VerifyPropertyProblemSturctureInCDATA();
                }

                numberOfPropertyProblem = (ushort)ropDeletePropertiesNoReplicateResponse.PropertyProblems.Length;
            }

            Site.CaptureRequirementIfAreEqual<ushort>(
                numberOfPropertyProblem,
                ropDeletePropertiesNoReplicateResponse.PropertyProblemCount,
                84406,
                @"[In RopDeletePropertiesNoReplicate ROP Response Buffer] PropertyProblemCount: An integer that specifies the number of elements contained in the PropertyProblems field.");
        }
        /// <summary>
        /// Verify RopDeletePropertiesNoReplicate Success Response
        /// </summary>
        /// <param name="ropDeletePropertiesNoReplicateResponse">The success response of RopDeletePropertiesNoReplicate request</param>
        /// <param name="inputHandleIndex">The field of InputHandleIndex in RopDeletePropertiesNoReplicate request</param>
        private void VerifyRopDeletePropertiesNoReplicateSuccessResponse(RopDeletePropertiesNoReplicateResponse ropDeletePropertiesNoReplicateResponse, byte inputHandleIndex)
        {
            // Add the debug information
            Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2930");

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R2930
            Site.CaptureRequirementIfAreEqual<Type>(
                typeof(byte),
                ropDeletePropertiesNoReplicateResponse.RopId.GetType(),
                2930,
                @"[In RopDeletePropertiesNoReplicate ROP Success Response Buffer]RopId (1 byte): An unsigned integer.");

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R2932
            Site.CaptureRequirementIfAreEqual<byte>(
                (byte)RopId.RopDeletePropertiesNoReplicate,
                ropDeletePropertiesNoReplicateResponse.RopId,
                2932,
                @"[In RopDeletePropertiesNoReplicate ROP Success Response Buffer,RopId (1 byte)]For this operation[RopDeletePropertiesNoReplicate], this field is set to 0x7A.");

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R2933
            Site.CaptureRequirementIfAreEqual<Type>(
                typeof(byte),
                ropDeletePropertiesNoReplicateResponse.InputHandleIndex.GetType(),
                2933,
                @"[In RopDeletePropertiesNoReplicate ROP Success Response Buffer]InputHandleIndex (1 byte): An unsigned integer.");

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R2934
            Site.CaptureRequirementIfAreEqual<byte>(
                inputHandleIndex,
                ropDeletePropertiesNoReplicateResponse.InputHandleIndex,
                2934,
                @"[In RopDeletePropertiesNoReplicate 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_R2936");

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R2936
            Site.CaptureRequirementIfAreEqual<Type>(
                typeof(uint),
                ropDeletePropertiesNoReplicateResponse.ReturnValue.GetType(),
                2936,
                @"[In RopDeletePropertiesNoReplicate ROP Success Response Buffer]ReturnValue (4 bytes): An unsigned integer.");

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

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R2938
            Site.CaptureRequirementIfAreEqual<uint>(
                SuccessReturnValue,
                ropDeletePropertiesNoReplicateResponse.ReturnValue,
                2938,
                @"[In RopDeletePropertiesNoReplicate 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_R2939");

            // Verify MS-OXCROPS requirement: MS-OXCROPS_R2939
            Site.CaptureRequirementIfAreEqual<Type>(
                typeof(ushort),
                ropDeletePropertiesNoReplicateResponse.PropertyProblemCount.GetType(),
                2939,
                @"[In RopDeletePropertiesNoReplicate ROP Success Response Buffer]PropertyProblemCount (2 bytes): An unsigned integer.");

            // According to the de-serialize approach of ropDeletePropertiesNoReplicateResponse,if the PropertyProblemCount's value is greater than 0, the error operation occurs.
            if (ropDeletePropertiesNoReplicateResponse.PropertyProblemCount > 0)
            {
                // Add the debug information
                Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCROPS_R2941");

                // Verify MS-OXCROPS requirement: MS-OXCROPS_R2941
                Site.CaptureRequirementIfAreEqual<Type>(
                    typeof(PropertyProblem[]),
                    ropDeletePropertiesNoReplicateResponse.PropertyProblems.GetType(),
                    2941,
                    @"[In RopDeletePropertiesNoReplicate ROP Success Response Buffer]PropertyProblems (variable): An array of PropertyProblem structures.");

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

                // Verify MS-OXCROPS requirement: MS-OXCROPS_R2942
                Site.CaptureRequirementIfAreEqual<int>(
                    ropDeletePropertiesNoReplicateResponse.PropertyProblemCount,
                    ropDeletePropertiesNoReplicateResponse.PropertyProblems.Length,
                    2942,
                    @"[In RopDeletePropertiesNoReplicate ROP Success Response Buffer,PropertyProblems (variable)]The number of structures contained in this field is specified by the PropertyProblemCount field.");

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

                // Verify MS-OXCROPS requirement: MS-OXCROPS_R2940
                Site.CaptureRequirementIfAreEqual<int>(
                    ropDeletePropertiesNoReplicateResponse.PropertyProblems.Length,
                    ropDeletePropertiesNoReplicateResponse.PropertyProblemCount,
                    2940,
                    @"[In RopDeletePropertiesNoReplicate ROP Success Response Buffer,PropertyProblemCount (2 bytes)]This value specifies the number of PropertyProblem structures in the PropertyProblems field.");

                foreach (PropertyProblem propertyProblem in ropDeletePropertiesNoReplicateResponse.PropertyProblems)
                {
                    // Add the debug information
                    Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCDATA_R46");

                    // Verify MS-OXCROPS requirement: MS-OXCDATA_R46
                    Site.CaptureRequirementIfAreEqual<Type>(
                        typeof(ushort),
                        propertyProblem.Index.GetType(),
                        "MS-OXCDATA",
                        46,
                        @"[In PropertyProblem Structure] Index (2 bytes): An unsigned integer.");

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

                    // Verify MS-OXCROPS requirement: MS-OXCDATA_R48
                    Site.CaptureRequirementIfAreEqual<Type>(
                        typeof(PropertyTag),
                        propertyProblem.PropertyTag.GetType(),
                        "MS-OXCDATA",
                        48,
                        @"[In PropertyProblem Structure] PropertyTag (4 bytes): A PropertyTag structure, as specified in section 2.9.");

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

                    // Verify MS-OXCROPS requirement: MS-OXCDATA_R50
                    Site.CaptureRequirementIfAreEqual<Type>(
                        typeof(uint),
                        propertyProblem.ErrorCode.GetType(),
                        "MS-OXCDATA",
                        50,
                        @"[In PropertyProblem Structure] ErrorCode (4 bytes): An unsigned integer.");
                }
            }
        }