public async Task Subscribe_FiltersOnObserverGenericType()
        {
            var eventManager = new MobileServiceEventManager();

            var testEvent          = new TestEvent <bool>(false);
            var mobileServiceEvent = new MobileServiceEvent <bool>("msevent", false);

            var mre = new ManualResetEventSlim();

            var observer = new MobileServiceEventObserver <TestEvent <bool> >(e => {
                e.Payload = true;
                mre.Set();
            });

            IDisposable testEventSubscription = eventManager.Subscribe(observer);

            await eventManager.PublishAsync(testEvent);

            bool eventSet = mre.Wait(500);

            Assert.True(eventSet);
            Assert.True(testEvent.Payload, "Test event was not handled");

            mre.Reset();
            await eventManager.PublishAsync(mobileServiceEvent);

            eventSet = mre.Wait(500);
            Assert.False(eventSet);
            Assert.False(mobileServiceEvent.Payload);

            testEventSubscription.Dispose();
        }
Пример #2
0
        public async Task PublishAsync_Throws_WhenEventIsNull()
        {
            var eventManager = new MobileServiceEventManager();
            ArgumentNullException exception = await AssertEx.Throws <ArgumentNullException>(() => eventManager.PublishAsync(null));

            Assert.AreEqual(exception.ParamName, "mobileServiceEvent", "Incorrect parameter name");
        }
Пример #3
0
        public void Constructor_Throws_WhenTrackingOptionsAreInvalid()
        {
            var store           = new MobileServiceLocalStoreMock();
            var trackingContext = new StoreTrackingContext(StoreOperationSource.Local, string.Empty, StoreTrackingOptions.None);
            var eventManager    = new MobileServiceEventManager();
            var settings        = new MobileServiceSyncSettingsManager(store);

            AssertEx.Throws <InvalidOperationException>(() => new LocalStoreChangeTracker(store, trackingContext, eventManager, settings));
        }
        public void Constructor_Throws_WhenTrackingOptionsAreInvalid()
        {
            var store = new MobileServiceLocalStoreMock();
            var trackingContext = new StoreTrackingContext(StoreOperationSource.Local, string.Empty, StoreTrackingOptions.None);
            var eventManager = new MobileServiceEventManager();
            var settings = new MobileServiceSyncSettingsManager(store);

            AssertEx.Throws<InvalidOperationException>(() => new LocalStoreChangeTracker(store, trackingContext, eventManager, settings));
        }
Пример #5
0
        public void Subscribe_Throws_WhenActionIsNull()
        {
            var eventManager = new MobileServiceEventManager();
            Action <IMobileServiceEvent> action = null;

            ArgumentNullException exception = AssertEx.Throws <ArgumentNullException>(() => eventManager.Subscribe(action));

            Assert.AreEqual(exception.ParamName, "next", "Incorrect parameter name");
        }
Пример #6
0
        public void Subscribe_Throws_WhenObserverIsNull()
        {
            var eventManager = new MobileServiceEventManager();
            IObserver <IMobileServiceEvent> observer = null;

            ArgumentNullException exception = AssertEx.Throws <ArgumentNullException>(() => eventManager.Subscribe(observer));

            Assert.AreEqual(exception.ParamName, "observer", "Incorrect parameter name");
        }
        private void AssertUntrackedStoreForSourceWithOptions(StoreOperationSource source, StoreTrackingOptions trackingOptions)
        {
            var store           = new MobileServiceLocalStoreMock();
            var trackingContext = new StoreTrackingContext(StoreOperationSource.Local, string.Empty, StoreTrackingOptions.None);
            var eventManager    = new MobileServiceEventManager();
            var settings        = new MobileServiceSyncSettingsManager(store);

            IMobileServiceLocalStore trackedStore = StoreChangeTrackerFactory.CreateTrackedStore(store, source, trackingOptions, eventManager, settings);

            Assert.NotNull(trackedStore);
            Assert.IsType <LocalStoreProxy>(trackedStore);
        }
        private void AssertUntrackedStoreForSourceWithOptions(StoreOperationSource source, StoreTrackingOptions trackingOptions)
        {
            var store = new MobileServiceLocalStoreMock();
            var trackingContext = new StoreTrackingContext(StoreOperationSource.Local, string.Empty, StoreTrackingOptions.None);
            var eventManager = new MobileServiceEventManager();
            var settings = new MobileServiceSyncSettingsManager(store);

            IMobileServiceLocalStore trackedStore = StoreChangeTrackerFactory.CreateTrackedStore(store, source, trackingOptions, eventManager, settings);

            Assert.IsNotNull(trackedStore);
            Assert.IsTrue(trackedStore is LocalStoreProxy);
        }
        public void Subscribe_FiltersOnGenericType()
        {
            var eventManager = new MobileServiceEventManager();

            var testEvent          = new TestEvent <bool>(false);
            var mobileServiceEvent = new MobileServiceEvent <bool>("msevent", false);

            IDisposable testEventSubscription = eventManager.Subscribe <TestEvent <bool> >(e => e.Payload = true);

            eventManager.PublishAsync(testEvent).Wait(1000);
            eventManager.PublishAsync(mobileServiceEvent).Wait(1000);

            Assert.True(testEvent.Payload, "Test event was not handled");
            Assert.False(mobileServiceEvent.Payload, "Mobile service event was not filtered");

            testEventSubscription.Dispose();
        }
        public void Subscribe_WithGenericType_DoesNotFilterDerivedTypes()
        {
            var eventManager = new MobileServiceEventManager();

            var testEventA = new DerivedEventA <bool>(false);
            var testEventB = new DerivedEventA <bool>(false);

            IDisposable testEventSubscription = eventManager.Subscribe <TestEvent <bool> >(e => e.Payload = true);

            eventManager.PublishAsync(testEventA).Wait(1000);
            eventManager.PublishAsync(testEventB).Wait(1000);

            Assert.True(testEventA.Payload, "Derived event A was not handled");
            Assert.True(testEventA.Payload, "Derived event B was not handled");

            testEventSubscription.Dispose();
        }
        public void Subscribe_OnSubscriptionHandler_Succeeds()
        {
            var eventManager = new MobileServiceEventManager();

            var         mobileServiceEvent = new MobileServiceEvent <bool>("msevent", false);
            bool        eventHandled       = false;
            IDisposable innerSubscription  = null;
            IDisposable outerSubscription  = eventManager
                                             .Subscribe <IMobileServiceEvent>(e => innerSubscription = eventManager.Subscribe <IMobileServiceEvent>(b => eventHandled = true));


            bool result = eventManager.PublishAsync(mobileServiceEvent).Wait(1000);

            Assert.True(result, "Subscribe failed");

            outerSubscription.Dispose();

            eventManager.PublishAsync(mobileServiceEvent).Wait(1000);
            Assert.True(eventHandled, "Subscribe failed");
        }
 public async Task PublishAsync_Throws_WhenEventIsNull()
 {
     var eventManager = new MobileServiceEventManager();
     await Assert.ThrowsAsync <ArgumentNullException>(() => eventManager.PublishAsync(null));
 }
        public void Subscribe_Throws_WhenActionIsNull()
        {
            var eventManager = new MobileServiceEventManager();

            Assert.Throws <ArgumentNullException>(() => eventManager.Subscribe <IMobileServiceEvent>(next: null));
        }
        public void Subscribe_Throws_WhenObserverIsNull()
        {
            var eventManager = new MobileServiceEventManager();

            Assert.Throws <ArgumentNullException>(() => eventManager.Subscribe(observer: null));
        }