public async Task TestUnsubscribeAsync()
        {
            var subscribe = new MbedCloudSDK.Connect.Api.Subscribe.Subscribe();
            var items     = new List <DeviceEventData>();
            var observer1 = await subscribe.DeviceEventsAsync();

            observer1.OnNotify += res => items.Add(res);
            var observer2 = await subscribe.DeviceEventsAsync();

            observer2.OnNotify += res => items.Add(res);
            var observer3 = await subscribe.DeviceEventsAsync();

            observer3.OnNotify += res => items.Add(res);
            MockNotification(subscribe);
            MockNotification(subscribe);

            Assert.AreEqual(subscribe.DeviceEventObservers.Count, 3);

            Assert.AreEqual(items.Count, 216);

            items.Clear();

            observer1.Unsubscribe();

            MockNotification(subscribe);
            MockNotification(subscribe);

            Assert.AreEqual(subscribe.DeviceEventObservers.Count, 2);

            Assert.AreEqual(items.Count, 144);
        }
        public async Task TestAllEventsAsync()
        {
            var subscribe = new MbedCloudSDK.Connect.Api.Subscribe.Subscribe();
            var items     = new List <DeviceEventData>();
            var observer  = await subscribe.DeviceEventsAsync();

            observer.OnNotify += res => items.Add(res);

            MockNotification(subscribe);
            MockNotification(subscribe);

            Assert.AreEqual(72, items.Count);
        }
        public async Task TestMultipleSpecificAsync()
        {
            var subscribe = new MbedCloudSDK.Connect.Api.Subscribe.Subscribe();
            var items     = new List <DeviceEventData>();
            var observer  = (await subscribe.DeviceEventsAsync()).Filter(f => (f.Id == "1" || f.Id == "2") && (f.Event == DeviceEvent.Registration || f.Event == DeviceEvent.DeRegistration));

            observer.OnNotify += res => items.Add(res);

            MockNotification(subscribe);
            MockNotification(subscribe);

            Assert.AreEqual(16, items.Count);
        }
        public async Task TestOneStateAsync()
        {
            var subscribe = new MbedCloudSDK.Connect.Api.Subscribe.Subscribe();
            var items     = new List <DeviceEventData>();
            var observer  = (await subscribe.DeviceEventsAsync()).Filter(f => f.Event == DeviceEvent.Registration);

            observer.OnNotify += res => items.Add(res);

            MockNotification(subscribe);
            MockNotification(subscribe);

            Assert.AreEqual(18, items.Count);
            Assert.AreEqual(18, items.Where(d => d.State == DeviceEvent.Registration).ToList().Count);
        }
        public async Task TestMultipleDeviceIdAsync()
        {
            var subscribe = new MbedCloudSDK.Connect.Api.Subscribe.Subscribe();
            var items     = new List <DeviceEventData>();
            var observer  = (await subscribe.DeviceEventsAsync()).Filter(f => f.Id == "1" || f.Id == "2");

            observer.OnNotify += res => items.Add(res);

            MockNotification(subscribe);
            MockNotification(subscribe);

            Assert.AreEqual(32, items.Count);
            Assert.AreEqual(32, items.Where(d => d.DeviceId == "1" || d.DeviceId == "2").ToList().Count);
        }