void CompareCapabilities(Proxies.Event.EventServiceCapabilities serviceSapabilities, Proxies.Event.EventServiceCapabilities eventServiceCapabilities)
        {
            BeginStep("Compare Capabilities");

            StringBuilder dump  = new StringBuilder();
            bool          equal = true;

            bool local;

            List <TestUtils.CheckSettings <Proxies.Event.EventServiceCapabilities> > batch = new List <TestUtils.CheckSettings <Proxies.Event.EventServiceCapabilities> >();

            batch.Add(new TestUtils.CheckSettings <Proxies.Event.EventServiceCapabilities>()
            {
                FieldName = "WSPausableSubscriptionManagerInterfaceSupport", SpecifiedSelector = (S) => S.WSPausableSubscriptionManagerInterfaceSupportSpecified, ValueSelector = (S) => S.WSPausableSubscriptionManagerInterfaceSupport
            });
            batch.Add(new TestUtils.CheckSettings <Proxies.Event.EventServiceCapabilities>()
            {
                FieldName = "WSPullPointSupport", SpecifiedSelector = (S) => S.WSPullPointSupportSpecified, ValueSelector = (S) => S.WSPullPointSupport
            });
            batch.Add(new TestUtils.CheckSettings <Proxies.Event.EventServiceCapabilities>()
            {
                FieldName = "WSSubscriptionPolicySupport", SpecifiedSelector = (S) => S.WSSubscriptionPolicySupportSpecified, ValueSelector = (S) => S.WSSubscriptionPolicySupport
            });

            local = TestUtils.BatchCheckBoolean(serviceSapabilities, eventServiceCapabilities, "GetServices", "GetServiceCapabilities", batch, "", dump);
            equal = equal && local;

            if (!equal)
            {
                LogStepEvent(dump.ToStringTrimNewLine());
                throw new AssertException("Settings don't match");
            }

            StepPassed();
        }
        /*[Test(Name = "GET SERVICES AND EVENT SERVICE CAPABILITIES CONSISTENCY",
         *  Order = "05.01.02",
         *  Id = "5-1-2",
         *  Category = Category.EVENT,
         *  Path = PATH,
         *  Version = 2.1,
         *  RequirementLevel = RequirementLevel.Must,
         *  RequiredFeatures = new Feature[] { Feature.GetServices, Feature.GetCapabilities },
         *  FunctionalityUnderTest = new Functionality[] { Functionality.GetCapabilities, Functionality.GetServices })]
         */public void CapabilitiesAndEventsServiceCapabilitiesTest()
        {
            RunTest(() =>
            {
                Service[] services = GetServices(true);

                Service eventsService = services.FindService(Definitions.Onvif.OnvifService.EVENTS);

                Assert(eventsService != null, "No events service information returned", "Check that the DUT returned events service information");

                if (eventsService.Capabilities == null)
                {
                    LogTestEvent("No Capabilities information included, skip the test" + Environment.NewLine);
                }
                else
                {
                    Proxies.Event.EventServiceCapabilities eventServiceCapabilities = GetEventCapabilities();

                    Proxies.Event.EventServiceCapabilities serviceEventServiceCapabilities = ParseEventCapabilities(eventsService.Capabilities);

                    CompareCapabilities(serviceEventServiceCapabilities, eventServiceCapabilities);
                }
            },
                    () =>
            {
                CloseEventClient();
            });
        }
        protected Proxies.Event.EventServiceCapabilities GetEventCapabilities()
        {
            EventPortTypeClient client = EventClient;

            Proxies.Event.EventServiceCapabilities eventServiceCapabilities = null;
            RunStep(() => { eventServiceCapabilities = client.GetServiceCapabilities(); }, "Get Service Capabilities");
            return(eventServiceCapabilities);
        }
        /*[Test(Name = "EVENT SERVICE CAPABILITIES",
         *  Order = "05.01.01",
         *  Id = "5-1-1",
         *  Category = Category.EVENT,
         *  Path = PATH,
         *  Version = 2.1,
         *  RequirementLevel = RequirementLevel.Must,
         *  RequiredFeatures = new Feature[] { Feature.GetServices },
         *  FunctionalityUnderTest = new Functionality[] { Functionality.GetEventsServiceCapabilities })]
         */public void DeviceServiceCapabilitiesTest()
        {
            RunTest(() =>
            {
                // Initialize client
                EventPortTypeClient client = EventClient;

                Proxies.Event.EventServiceCapabilities eventServiceCapabilities = GetEventCapabilities();
            },
                    () =>
            {
                CloseEventClient();
            });
        }
        /*[Test(Name = "CAPABILITIES AND EVENT SERVICE CAPABILITIES CONSISTENCY",
         *  Order = "05.01.03",
         *  Id = "5-1-3",
         *  Category = Category.EVENT,
         *  Path = PATH,
         *  Version = 2.1,
         *  RequirementLevel = RequirementLevel.Must,
         *  RequiredFeatures = new Feature[] { Feature.GetServices },
         *  FunctionalityUnderTest = new Functionality[] { Functionality.GetEventsServiceCapabilities, Functionality.GetServices })]
         */public void EventsServiceCapabilitiesConsistencyTest()
        {
            RunTest(() =>
            {
                Proxies.Onvif.Capabilities capabilities = GetCapabilities(new CapabilityCategory[] { CapabilityCategory.Events });

                Assert(capabilities.Events != null, "Events field is empty", "Check that the DUT returned Events capabilities");

                Proxies.Event.EventServiceCapabilities serviceEventServiceCapabilities = GetEventCapabilities();

                // compare...
                CompareCapabilities(serviceEventServiceCapabilities, capabilities);
            },
                    () =>
            {
                CloseEventClient();
            });
        }
        void CompareCapabilities(Proxies.Event.EventServiceCapabilities serviceSapabilities, Proxies.Onvif.Capabilities capabilities)
        {
            BeginStep("Compare Capabilities");

            StringBuilder dump  = new StringBuilder();
            bool          equal = true;

            bool local;

            Proxies.Onvif.EventCapabilities events = capabilities.Events;


            local = CheckCapabilitiesField(serviceSapabilities.WSPausableSubscriptionManagerInterfaceSupportSpecified,
                                           serviceSapabilities.WSPausableSubscriptionManagerInterfaceSupport,
                                           events != null,
                                           events != null ? events.WSPausableSubscriptionManagerInterfaceSupport : false,
                                           "WSPausableSubscriptionManagerInterfaceSupport", dump);
            equal = equal && local;

            local = CheckCapabilitiesField(serviceSapabilities.WSPullPointSupportSpecified,
                                           serviceSapabilities.WSPullPointSupport,
                                           events != null,
                                           events != null ? events.WSPullPointSupport : false,
                                           "WSPullPointSupport", dump);
            equal = equal && local;
            local = CheckCapabilitiesField(serviceSapabilities.WSSubscriptionPolicySupportSpecified,
                                           serviceSapabilities.WSSubscriptionPolicySupport,
                                           events != null,
                                           events != null ? events.WSSubscriptionPolicySupport : false,
                                           "WSSubscriptionPolicySupport", dump);
            equal = equal && local;

            if (!equal)
            {
                LogStepEvent(dump.ToStringTrimNewLine());
                throw new AssertException("Settings don't match");
            }

            StepPassed();
        }