Microsoft.Protocols.TestSuites.MS_OXCNOTIF.S02_SubscribeAndReceiveNotifications.VerifyTableRowAddedNotificationElements C# (CSharp) Method

VerifyTableRowAddedNotificationElements() private method

This method is used to verify RopNotify response elements for TableRowAdded event.
private VerifyTableRowAddedNotificationElements ( RopNotifyResponse notifyResponse ) : void
notifyResponse RopNotifyResponse The notification response
return void
        private void VerifyTableRowAddedNotificationElements(RopNotifyResponse notifyResponse)
        {
            // The value 0x0003 of TableEventType means this notification is for TableRowAdded event, 
            // this method is called after notification for TableRowAdded to verify response elements.
            // Add the debug information
            this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCNOTIF_R12401");

            // Verify MS-OXCNOTIF requirement: MS-OXCNOTIF_R12401
            // The value 0x0100 of NotificationType means that notification is for a TableModified event, cause TableRowAdded is one of the TableModified events.
            // So if the TableEventType in the response is not null, this requirement can be verified.
            this.Site.CaptureRequirementIfIsNotNull(
                notifyResponse.NotificationData.TableEventType,
                12401,
                @"[In NotificationData Structure] This field [TableEventType] is available if the NotificationType value in the NotificationFlags field is 0x0100.");

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

            // Verify MS-OXCNOTIF requirement: MS-OXCNOTIF_R17101
            // The value 0x0100 of NotificationType means that notification is for a TableModified event, cause TableRowAdded is one of the TableModified events.
            // So if the FolderId in the response is null, this requirement can be verified.
            this.Site.CaptureRequirementIfIsNull(
                notifyResponse.NotificationData.FolderId,
                17101,
                @"[In NotificationData Structure] This field [FolderId] is not available if the NotificationType value in the NotificationFlags field is 0x0100.");

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

            // Verify MS-OXCNOTIF requirement: MS-OXCNOTIF_R17502
            // The value 0x0100 of NotificationType means that notification is for a TableModified event, cause TableRowAdded is one of the TableModified events.
            // So if the MessageId in the response is null, this requirement can be verified.
            this.Site.CaptureRequirementIfIsNull(
                notifyResponse.NotificationData.MessageId,
                17502,
                @"[In NotificationData Structure] This field [MessageId] is not available if the NotificationType value in the NotificationFlags field is 0x0100.");

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

            // Verify MS-OXCNOTIF requirement: MS-OXCNOTIF_R14201
            // TableEventType with value 0x0003 means the notification is for TableRowAdded event, so if the TableRowFolderID is not null, this requirement can be verified.
            this.Site.CaptureRequirementIfIsNotNull(
                notifyResponse.NotificationData.TableRowFolderID,
                14201,
                @"[In NotificationData Structure] This field [TableRowFolderID] is available if the TableEventType field is available and is 0x0003.");

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

            // Verify MS-OXCNOTIF requirement: MS-OXCNOTIF_R15401
            // TableEventType with value 0x0003 means the notification is for TableRowAdded event, so if the InsertAfterTableRowFolderID is not null, this requirement can be verified.
            this.Site.CaptureRequirementIfIsNotNull(
                notifyResponse.NotificationData.InsertAfterTableRowFolderID,
                15401,
                @"[In NotificationData Structure] This field [InsertAfterTableRowFolderID] is available if the TableEventType field is available and is 0x0003.");

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

            // Verify MS-OXCNOTIF requirement: MS-OXCNOTIF_R16401
            // TableEventType with value 0x0003 means the notification is for TableRowAdded event, so if the TableRowDataSize is not null, this requirement can be verified.
            this.Site.CaptureRequirementIfIsNotNull(
                notifyResponse.NotificationData.TableRowDataSize,
                16401,
                @"[In NotificationData Structure] This field [TableRowDataSize] is available if the TableEventType field is available and is 0x0003.");

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

            // Verify MS-OXCNOTIF requirement: MS-OXCNOTIF_R16701
            // TableEventType with value 0x0003 means the notification is for TableRowAdded event, so if the TableRowData is not null, this requirement can be verified.
            this.Site.CaptureRequirementIfIsNotNull(
                notifyResponse.NotificationData.TableRowData,
                16701,
                @"[In NotificationData Structure] This field [TableRowData] is available if the TableEventType field is available and is 0x0003.");

            // FlagsBit.M is 0x8000. If FlagsBit.M & NotificationFlags is itself, indicate that M bit is set. 
            if ((notifyResponse.NotificationData.NotificationFlags & (ushort)FlagsBit.M) == (ushort)FlagsBit.M)
            {
                // Add the debug information
                this.Site.Log.Add(LogEntryKind.Debug, "Verify MS-OXCNOTIF_R14601");

                // Verify MS-OXCNOTIF requirement: MS-OXCNOTIF_R14601
                // TableEventType with value 0x0003 means the notification is for TableRowAdded event, so if the TableRowMessageID is not null, this requirement can be verified.
                this.Site.CaptureRequirementIfIsNotNull(
                    notifyResponse.NotificationData.TableRowMessageID,
                    14601,
                    @"[In NotificationData Structure] This field [TableRowMessageID] is available if bit 0x8000 is set in the NotificationFlags field and if the TableEventType field is available and is 0x0003.");

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

                // Verify MS-OXCNOTIF requirement: MS-OXCNOTIF_R15001
                // TableEventType with value 0x0003 means the notification is for TableRowAdded event, so if the TableRowInstance is not null, this requirement can be verified.
                this.Site.CaptureRequirementIfIsNotNull(
                    notifyResponse.NotificationData.TableRowInstance,
                    15001,
                    @"[In NotificationData Structure] This field [TableRowInstance] is available if bit 0x8000 is set in the NotificationFlags field and if the TableEventType field is available and is 0x0003.");

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

                // Verify MS-OXCNOTIF requirement: MS-OXCNOTIF_R15801
                this.Site.CaptureRequirementIfIsNotNull(
                    notifyResponse.NotificationData.InsertAfterTableRowID,
                    15801,
                    @"[In NotificationData Structure] This field [InsertAfterTableRowID] is available if bit 0x8000 is set in the NotificationFlags field and if the TableEventType field is available and is 0x0003.");
            }
        }
S02_SubscribeAndReceiveNotifications