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(); }
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"); }
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)); }
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"); }
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)); }