public void Setup() { var eventStore = new TestEventStoreWithBugs(); var testEventPublisher = new TestEventPublisher(); _session = new Session(new Repository(eventStore, testEventPublisher)); }
public void Setup() { var eventStore = new TestEventStore(); var eventPublisher = new TestEventPublisher(); var snapshotStrategy = new DefaultSnapshotStrategy(); _rep = new Repository<TestAggregateNoParameterLessConstructor>(eventStore, null, eventPublisher, snapshotStrategy); }
public void WeakEventTest() { var listener1Success = false; var eventPublisher = new TestEventPublisher(); var listener1 = new LivetWeakEventListener <EventHandler, EventArgs>( h => new EventHandler(h), h => eventPublisher.EmptyEvent += h, h => eventPublisher.EmptyEvent -= h, (sender, e) => listener1Success = true); var listenerWeakReference = new WeakReference(listener1); //------------------ listener1Success.Is(false); eventPublisher.RaiseEmptyEvent(); listener1Success.Is(true); //------------------ listener1Success = false; listener1 = null; GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); eventPublisher.RaiseEmptyEvent(); listener1Success.Is(false); }
public void Setup() { var eventStore = new TestEventStore(); var testEventPublisher = new TestEventPublisher(); var snapshotStore = new NullSnapshotStore(); _rep = new Repository<TestAggregate>(eventStore, snapshotStore, testEventPublisher); }
public void Setup() { var eventStore = new TestInMemoryEventStore(); var eventPublisher = new TestEventPublisher(); _session = new Session(new Repository(eventStore, eventPublisher)); }
public void LifeCycleTest() { var listener1Success = false; var listener2Success = false; var eventPublisher = new TestEventPublisher(); var listener1 = GetEmptyListener(eventPublisher, (sender, e) => listener1Success = true); var listener2 = GetStringListener(eventPublisher, (sender, e) => listener2Success = true); //------------------ listener1Success.Is(false); listener2Success.Is(false); eventPublisher.RaiseEmptyEvent(); eventPublisher.RaiseStringEvent(string.Empty); listener1Success.Is(true); listener2Success.Is(true); //------------------ listener1Success = false; listener2Success = false; listener1.Dispose(); listener2.Dispose(); eventPublisher.RaiseEmptyEvent(); eventPublisher.RaiseStringEvent(string.Empty); listener1Success.Is(false); listener2Success.Is(false); }
public void BasicConstructorLifeCycleTest() { var listenerSuccess = false; var publisher = new TestEventPublisher(); var listener = new CollectionChangedWeakEventListener(publisher, (sender, e) => listenerSuccess = true); //------------------ listenerSuccess.Is(false); publisher.RaiseCollectionChanged(NotifyCollectionChangedAction.Add, null); listenerSuccess.Is(true); //------------------ listenerSuccess = false; listener.Dispose(); publisher.RaiseCollectionChanged(NotifyCollectionChangedAction.Add, null); listenerSuccess.Is(false); try { listener.RegisterHandler((sender, e) => listenerSuccess = true); } catch (Exception e) { e.GetType().Is(typeof(ObjectDisposedException)); } }
private EventListener <EventHandler> GetEmptyListener(TestEventPublisher publisher, EventHandler emptyHandler) { return(new EventListener <EventHandler>( h => publisher.EmptyEvent += h, h => publisher.EmptyEvent -= h, emptyHandler)); }
private EventListener <EventHandler <StringEventArgs> > GetStringListener(TestEventPublisher publisher, EventHandler <StringEventArgs> stringHandler) { return(new EventListener <EventHandler <StringEventArgs> >( h => publisher.StringEvent += h, h => publisher.StringEvent -= h, stringHandler)); }
public void WeakEventTest() { var listener1Success = false; var eventPublisher = new TestEventPublisher(); var listener1 = new CollectionChangedWeakEventListener(eventPublisher, (sender, e) => listener1Success = true); var listenerWeakReference = new WeakReference(listener1); //------------------ listener1Success.Is(false); eventPublisher.RaiseCollectionChanged(NotifyCollectionChangedAction.Add, null); listener1Success.Is(true); //------------------ listener1Success = false; listener1 = null; GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); eventPublisher.RaiseCollectionChanged(NotifyCollectionChangedAction.Add, null); listener1Success.Is(false); }
public void SourceReferenceMemoryLeakTest() { var handler1Called = false; var publisherStrongReference = new TestEventPublisher(); var publisherWeakReference = new WeakReference <TestEventPublisher>(publisherStrongReference); var listener = new PropertyChangedEventListener(publisherStrongReference); listener.RegisterHandler("Dummy1", (sender, e) => { e.PropertyName.Is("Dummy1"); handler1Called = true; }); publisherStrongReference.RaisePropertyChanged("Dummy1"); handler1Called.Is(true); listener.Dispose(); publisherStrongReference = null; GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); TestEventPublisher resultPublisher = null; publisherWeakReference.TryGetTarget(out resultPublisher).Is(false); resultPublisher.IsNull(); }
public void BasicConstructorLifeCycleTest() { var listenerSuccess = false; var publisher = new TestEventPublisher(); var listener = new PropertyChangedEventListener(publisher, (sender, e) => listenerSuccess = true); //------------------ listenerSuccess.Is(false); publisher.RaisePropertyChanged(string.Empty); listenerSuccess.Is(true); //------------------ listenerSuccess = false; listener.Dispose(); publisher.RaisePropertyChanged(string.Empty); listenerSuccess.Is(false); try { listener.RegisterHandler((sender, e) => listenerSuccess = true); } catch (Exception e) { e.GetType().Is(typeof(ObjectDisposedException)); } }
public void FilteredHandlerLifeCycleTest() { var handler1Called = false; var handler2Called = false; var handler3Called = false; var publisher = new TestEventPublisher(); var listener = new CollectionChangedWeakEventListener(publisher); //------------------ listener.RegisterHandler(NotifyCollectionChangedAction.Add, (sender, e) => { e.Action.Is(NotifyCollectionChangedAction.Add); handler1Called = true; }); listener.RegisterHandler(NotifyCollectionChangedAction.Remove, (sender, e) => { e.Action.Is(NotifyCollectionChangedAction.Remove); handler2Called = true; }); listener.RegisterHandler(NotifyCollectionChangedAction.Add, (sender, e) => { e.Action.Is(NotifyCollectionChangedAction.Add); handler3Called = true; }); publisher.RaiseCollectionChanged(NotifyCollectionChangedAction.Add, null); publisher.RaiseCollectionChanged(NotifyCollectionChangedAction.Remove, null); handler1Called.Is(true); handler2Called.Is(true); handler3Called.Is(true); //------------------ handler1Called = false; handler2Called = false; handler3Called = false; listener.Dispose(); publisher.RaiseCollectionChanged(NotifyCollectionChangedAction.Add, null); publisher.RaiseCollectionChanged(NotifyCollectionChangedAction.Remove, null); handler1Called.Is(false); handler2Called.Is(false); handler3Called.Is(false); }
public void LifeCycleTest() { var listener1Success = false; var eventPublisher = new TestEventPublisher(); var listener1 = new LivetWeakEventListener <EventHandler, EventArgs>( h => new EventHandler(h), h => eventPublisher.EmptyEvent += h, h => eventPublisher.EmptyEvent -= h, (sender, e) => listener1Success = true); //------------------ listener1Success.Is(false); eventPublisher.RaiseEmptyEvent(); listener1Success.Is(true); //------------------ listener1Success = false; listener1.Dispose(); eventPublisher.RaiseEmptyEvent(); listener1Success.Is(false); }
public void Setup() { var eventStore = new TestEventStore(); var eventPublisher = new TestEventPublisher(); _rep = new Repository <TestAggregateNoParameterLessConstructor>(eventStore, null, eventPublisher); }
public async Task PublishValueAsync_ValueIIdentifier() { ExecutionContext.Reset(); var start = Cleaner.Clean(DateTime.Now); var tep = new TestEventPublisher(); var v = new Entity { Id = 123 }; await tep.PublishValue(v, "domain.entity.123", "create").SendAsync().ConfigureAwait(false); Assert.AreEqual(1, tep.Events.Count); var ed = (EventData <Entity>)tep.Events[0]; Assert.IsNotNull(ed.EventId); Assert.IsNotNull(ed); Assert.AreEqual("domain.entity.123", ed.Subject); Assert.AreEqual("create", ed.Action); Assert.AreEqual(123, ed.Key); Assert.IsTrue(ed.HasValue); Assert.IsTrue(ed.Timestamp >= start); Assert.AreEqual(v, ed.Value); Assert.IsNull(ed.PartitionKey); }
public void SourceReferenceMemoryLeakTest() { var handler1Success = false; var publisherStrongReference = new TestEventPublisher(); var publisherWeakReference = new WeakReference <TestEventPublisher>(publisherStrongReference); var listener = new CollectionChangedWeakEventListener(publisherStrongReference); listener.RegisterHandler((sender, e) => handler1Success = true); publisherStrongReference.RaiseCollectionChanged(NotifyCollectionChangedAction.Add, null); handler1Success.Is(true); listener.Dispose(); publisherStrongReference = null; GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); TestEventPublisher resultPublisher = null; publisherWeakReference.TryGetTarget(out resultPublisher).Is(false); resultPublisher.IsNull(); }
public void FilteredHandlerLifeCycleTest() { var handler1Called = false; var handler2Called = false; var handler3Called = false; var publisher = new TestEventPublisher(); var listener = new PropertyChangedEventListener(publisher); listener.RegisterHandler("Dummy1", (sender, e) => { e.PropertyName.Is("Dummy1"); handler1Called = true; }); listener.RegisterHandler("Dummy2", (sender, e) => { e.PropertyName.Is("Dummy2"); handler2Called = true; }); listener.RegisterHandler("Dummy1", (sender, e) => { e.PropertyName.Is("Dummy1"); handler3Called = true; }); publisher.RaisePropertyChanged("Dummy1"); publisher.RaisePropertyChanged("Dummy2"); handler1Called.Is(true); handler2Called.Is(true); handler3Called.Is(true); //------------------ handler1Called = false; handler2Called = false; handler3Called = false; listener.Dispose(); publisher.RaisePropertyChanged("Dummy1"); publisher.RaisePropertyChanged("Dummy2"); handler1Called.Is(false); handler2Called.Is(false); handler3Called.Is(false); }
public void SetUp() { var aggregateFactory = new AggregateFactory(null); var eventStore = new TestInMemoryEventStore(); var eventPublisher = new TestEventPublisher(); _unitOfWork = new UnitOfWork <ISingleSignOnToken>(new Repository <ISingleSignOnToken>(aggregateFactory, eventStore, eventPublisher, new NullCorrelationIdHelper())); }
public void Setup() { _eventStore = new TestInMemoryEventStore(); _eventPublisher = new TestEventPublisher(); _rep = new Repository(_eventStore, _eventPublisher); _aggregate = new TestAggregate(Guid.Empty); }
public void Setup() { var eventStore = new TestEventStore(); var eventPublisher = new TestEventPublisher(); var snapshotStore = new NullSnapshotStore(); var rep = new Repository<TestSnapshotAggreagate>(eventStore, snapshotStore, eventPublisher); _aggregate = rep.Get(Guid.NewGuid()); }
public void Setup() { var eventStore = new TestEventStore(); var testEventPublisher = new TestEventPublisher(); var snapshotStore = new NullSnapshotStore(); _rep = new Repository <TestAggregate>(eventStore, snapshotStore, testEventPublisher); }
public void Setup() { _eventStore = new TestEventStore(); _eventPublisher = new TestEventPublisher(); var snapshotstore = new NullSnapshotStore(); _rep = new Repository<TestAggregateNoParameterLessConstructor>(_eventStore, snapshotstore, _eventPublisher); _aggregate = new TestAggregateNoParameterLessConstructor(2); }
public void Setup() { var eventStore = new TestEventStore(); var eventPublisher = new TestEventPublisher(); var snapshotStrategy = new DefaultSnapshotStrategy(); _rep = new Repository <TestAggregateNoParameterLessConstructor>(eventStore, null, eventPublisher, snapshotStrategy); }
static public EventHandler <EventArgs> Register(TestEventPublisher raiser, DidRun didrun) { EventHandler <EventArgs> handler = (s, e) => didrun.Value = true; WeakEventManager <TestEventPublisher, EventArgs> .AddHandler(raiser, "MyEvent", handler); return(handler); }
public When_saving_events_without_id() { _eventStore = new TestInMemoryEventStore(); _eventPublisher = new TestEventPublisher(); _rep = new Repository(_eventStore, _eventPublisher); _aggregate = new TestAggregate(Guid.Empty); }
public void Setup() { var aggregateFactory = new AggregateFactory(new TestDependencyResolver()); var eventStore = new TestEventStore(); var testEventPublisher = new TestEventPublisher(); _unitOfWork = new UnitOfWork <ISingleSignOnToken>(new Repository <ISingleSignOnToken>(aggregateFactory, eventStore, testEventPublisher, new NullCorrelationIdHelper())); }
public void Setup() { _eventStore = new TestEventStore(); _eventPublisher = new TestEventPublisher(); var snapshotstore = new NullSnapshotStore(); _rep = new Repository <TestAggregateNoParameterLessConstructor>(_eventStore, snapshotstore, _eventPublisher); _aggregate = new TestAggregateNoParameterLessConstructor(2); }
public void Setup() { var eventStore = new TestEventStore(); var eventPublisher = new TestEventPublisher(); _snapshotStore = new TestSnapshotStore(); var snapshotStrategy = new DefaultSnapshotStrategy(); var rep = new Repository<TestSnapshotAggregate>(eventStore, _snapshotStore, eventPublisher, snapshotStrategy); _aggregate = rep.Get(Guid.NewGuid()); }
public void Setup() { _eventStore = new TestInMemoryEventStore(); _eventPublisher = new TestEventPublisher(); _rep = new Repository(_eventStore, _eventPublisher); _session = new Session(_rep); _aggregate = new TestAggregateNoParameterLessConstructor(2); }
public void Setup() { var eventStore = new TestEventStore(); var dependencyResolver = new TestDependencyResolver(eventStore); var aggregateFactory = new AggregateFactory(dependencyResolver, dependencyResolver.Resolve <ILogger>()); var eventPublisher = new TestEventPublisher(); _unitOfWork = new UnitOfWork <ISingleSignOnToken>(new AggregateRepository <ISingleSignOnToken>(aggregateFactory, eventStore, eventPublisher, new NullCorrelationIdHelper(), new ConfigurationManager())); }
public void when_the_test_was_signaled_completed_the_browser_should_have_been_stopped_and_the_ContinuousTestRunner_should_signal_that_it_is_not_currently_running() { var runner = CreateContinuousTestRunner(); TestEventPublisher.SendMessage(new TestRunCompletedServerEvent()); runner.IsCurrentlyRunningTest.ShouldBeFalse(); _mockWebBrowser.Verify(x => x.Stop()); }
public void it_should_start_a_new_test_when_the_xap_file_changed() { TestEventPublisher.SendMessage(new XapFileBuildChangedServerEvent(string.Empty)); System.Threading.Thread.Sleep(10); _continuousTestRunner.IsCurrentlyRunningTest.ShouldBeTrue(); _mockWebBrowser.Verify(x => x.Start()); }
public void Setup() { var eventStore = new TestEventStore(); var eventPublisher = new TestEventPublisher(); var snapshotStore = new NullSnapshotStore(); var rep = new Repository <TestSnapshotAggreagate>(eventStore, snapshotStore, eventPublisher); _aggregate = rep.Get(Guid.NewGuid()); }
public When_getting_a_snapshot_aggregate_with_no_snapshot() { var eventStore = new TestEventStore(); var eventPublisher = new TestEventPublisher(); var snapshotStore = new NullSnapshotStore(); var snapshotStrategy = new DefaultSnapshotStrategy(); var repository = new SnapshotRepository(snapshotStore, snapshotStrategy, new Repository(eventStore, eventPublisher), eventStore); var session = new Session(repository); _aggregate = session.Get<TestSnapshotAggregate>(Guid.NewGuid()); }
private void ForceFilteredTestWithTag(string newTag) { _continuousTestRunner.ForceFilteredTest(newTag); _continuousTestRunner.IsCurrentlyRunningTest.ShouldBeTrue(); TestEventPublisher.SendMessage(new TestRunCompletedServerEvent()); _continuousTestRunner.IsCurrentlyRunningTest.ShouldBeFalse(); }
public void Setup() { _eventStore = new TestInMemoryEventStore(); _eventPublisher = new TestEventPublisher(); var aggregateFactory = new AggregateFactory(null); _rep = new Repository <ISingleSignOnToken>(aggregateFactory, _eventStore, _eventPublisher, new NullCorrelationIdHelper()); _aggregate = new TestAggregate(Guid.Empty); }
public void Setup() { var eventStore = new TestInMemoryEventStore(); var eventPublisher = new TestEventPublisher(); var snapshotStore = new TestSnapshotStore(); var snapshotStrategy = new DefaultSnapshotStrategy(); var snapshotRepository = new SnapshotRepository(snapshotStore, snapshotStrategy, new Repository(eventStore, eventPublisher), eventStore); var session = new Session(snapshotRepository); _aggregate = session.Get<TestSnapshotAggregate>(Guid.NewGuid()); }
public void Setup() { _eventStore = new TestInMemoryEventStore(); _eventPublisher = new TestEventPublisher(); _rep = new Repository(_eventStore, _eventPublisher); _session = new Session(_rep); _aggregate = new TestAggregate(Guid.NewGuid()); _aggregate.DoSomething(); _rep.Save(_aggregate); }
public When_getting_snapshotable_aggreate() { var eventStore = new TestInMemoryEventStore(); var eventPublisher = new TestEventPublisher(); _snapshotStore = new TestSnapshotStore(); var snapshotStrategy = new DefaultSnapshotStrategy(); var repository = new SnapshotRepository(_snapshotStore, snapshotStrategy, new Repository(eventStore, eventPublisher), eventStore); var session = new Session(repository); _aggregate = session.Get<TestSnapshotAggregate>(Guid.NewGuid()); }
public When_saving_using_repository_with_event_publisher() { _eventStore = new TestInMemoryEventStore(); _eventPublisher = new TestEventPublisher(); #pragma warning disable 618 _rep = new Repository(_eventStore, _eventPublisher); #pragma warning restore 618 _session = new Session(_rep); _aggregate = new TestAggregateNoParameterLessConstructor(2); }
public void Setup() { IEventStore eventStore = new TestInMemoryEventStore(); var eventpubliser = new TestEventPublisher(); _snapshotStore = new TestInMemorySnapshotStore(); _rep = new Repository<TestSnapshotAggreagate>(eventStore, _snapshotStore, eventpubliser); var aggregate = new TestSnapshotAggreagate(); for (int i = 0; i < 20; i++) { aggregate.DoSomething(); _rep.Save(aggregate, i); } }
public void Setup() { var eventStore = new TestEventStore(); var eventPublisher = new TestEventPublisher(); _snapshotStore = new TestSnapshotStore(); var snapshotStrategy = new DefaultSnapshotStrategy(); var rep = new Repository<TestSnapshotAggregate>(eventStore, _snapshotStore, eventPublisher, snapshotStrategy); var aggregate = new TestSnapshotAggregate(); for (int i = 0; i < 30; i++) { aggregate.DoSomething(); } rep.Save(aggregate, 0); }
public void Setup() { var eventStore = new TestInMemoryEventStore(); var eventPublisher = new TestEventPublisher(); _snapshotStore = new TestSnapshotStore(); var snapshotStrategy = new DefaultSnapshotStrategy(); var repository = new SnapshotRepository(_snapshotStore, snapshotStrategy, new Repository(eventStore, eventPublisher), eventStore); var session = new Session(repository); var aggregate = new TestSnapshotAggregate(); for (var i = 0; i < 30; i++) { aggregate.DoSomething(); } session.Add(aggregate); session.Commit(); }
public void MultipleHandlerLifeCycleTest() { var handler1Success = false; var handler2Success = false; var publisher = new TestEventPublisher(); var listener = new PropertyChangedWeakEventListener(publisher); //------------------ handler1Success.Is(false); handler2Success.Is(false); publisher.RaisePropertyChanged(string.Empty); handler1Success.Is(false); handler2Success.Is(false); //------------------ listener.RegisterHandler((sender, e) => handler1Success = true); publisher.RaisePropertyChanged(string.Empty); handler1Success.Is(true); handler2Success.Is(false); //------------------ handler1Success = false; handler2Success = false; listener.RegisterHandler((sender, e) => handler2Success = true); publisher.RaisePropertyChanged(string.Empty); handler1Success.Is(true); handler2Success.Is(true); //------------------ handler1Success = false; handler2Success = false; listener.Dispose(); publisher.RaisePropertyChanged(string.Empty); handler1Success.Is(false); handler2Success.Is(false); }
public void MultipleHandlerLifeCycleTest() { var handler1Success = false; var handler2Success = false; var publisher = new TestEventPublisher(); var listener = new CollectionChangedWeakEventListener(publisher); //------------------ handler1Success.Is(false); handler2Success.Is(false); publisher.RaiseCollectionChanged(NotifyCollectionChangedAction.Add, null); handler1Success.Is(false); handler2Success.Is(false); //------------------ listener.RegisterHandler((sender, e) => handler1Success = true); publisher.RaiseCollectionChanged(NotifyCollectionChangedAction.Add, null); handler1Success.Is(true); handler2Success.Is(false); //------------------ handler1Success = false; handler2Success = false; listener.RegisterHandler((sender, e) => handler2Success = true); publisher.RaiseCollectionChanged(NotifyCollectionChangedAction.Add, null); handler1Success.Is(true); handler2Success.Is(true); //------------------ handler1Success = false; handler2Success = false; listener.Dispose(); publisher.RaiseCollectionChanged(NotifyCollectionChangedAction.Add, null); handler1Success.Is(false); handler2Success.Is(false); }
public When_saving_a_snapshotable_aggregate_for_each_change() { IEventStore eventStore = new TestInMemoryEventStore(); var eventPublisher = new TestEventPublisher(); _snapshotStore = new TestInMemorySnapshotStore(); var snapshotStrategy = new DefaultSnapshotStrategy(); var repository = new SnapshotRepository(_snapshotStore, snapshotStrategy, new Repository(eventStore, eventPublisher), eventStore); _session = new Session(repository); _aggregate = new TestSnapshotAggregate(); for (var i = 0; i < 20; i++) { _session.Add(_aggregate); _aggregate.DoSomething(); _session.Commit(); } }
public void AutoEventConnector_TestConnectDisconnect() { var testEventPublisher = new TestEventPublisher(); var testEventSubscriber = new TestEventSubscriber(); testEventSubscriber.ConnectTo(testEventPublisher); testEventPublisher.RaiseTestEvent1(); testEventPublisher.RaiseTestEvent2(); Assert.AreEqual(0, testEventSubscriber.HandleTestEvent1Count); Assert.AreEqual(1, testEventSubscriber.HandleTestEventPublisherTestEvent1Count); testEventSubscriber.DisconnectFrom(testEventPublisher); testEventPublisher.RaiseTestEvent1(); testEventPublisher.RaiseTestEvent2(); Assert.AreEqual(0, testEventSubscriber.HandleTestEvent1Count); Assert.AreEqual(1, testEventSubscriber.HandleTestEventPublisherTestEvent1Count); }
public When_getting_an_aggregate() { var eventStore = new TestEventStore(); var testEventPublisher = new TestEventPublisher(); _session = new Session(new Repository(eventStore, testEventPublisher)); }
public void SetUp() { var eventStore = new TestInMemoryEventStore(); var eventPublisher = new TestEventPublisher(); _session = new Session(new Repository(eventStore, eventPublisher)); }
public When_getting_events_out_of_order() { var eventStore = new TestEventStoreWithBugs(); var testEventPublisher = new TestEventPublisher(); _session = new Session(new Repository(eventStore, testEventPublisher)); }
public void Setup() { var eventStore = new TestEventStore(); var testEventPublisher = new TestEventPublisher(); _session = new Session(new Repository(eventStore, testEventPublisher)); }
public void AddHandlerKindTest() { var handler1Called = false; var handler2Called = false; var handler3Called = false; var handler4Called = false; var handler5Called = false; var publisher = new TestEventPublisher(); var listener1 = new CollectionChangedWeakEventListener(publisher) { {NotifyCollectionChangedAction.Add, (sender, e) => { e.Action.Is(NotifyCollectionChangedAction.Add); handler1Called = true; }}, {NotifyCollectionChangedAction.Remove, (sender, e) => { e.Action.Is(NotifyCollectionChangedAction.Remove); handler2Called = true;}, (sender, e) => { e.Action.Is(NotifyCollectionChangedAction.Remove); handler3Called = true;} }, (sender,e) => handler4Called = true, {NotifyCollectionChangedAction.Add, (sender, e) => { e.Action.Is(NotifyCollectionChangedAction.Add); handler5Called = true; }} }; publisher.RaiseCollectionChanged(NotifyCollectionChangedAction.Reset, null); handler1Called.Is(false); handler2Called.Is(false); handler3Called.Is(false); handler4Called.Is(true); handler5Called.Is(false); handler4Called = false; publisher.RaiseCollectionChanged(NotifyCollectionChangedAction.Add, null); handler1Called.Is(true); handler2Called.Is(false); handler3Called.Is(false); handler4Called.Is(true); handler5Called.Is(true); handler1Called = false; handler4Called = false; handler5Called = false; publisher.RaiseCollectionChanged(NotifyCollectionChangedAction.Remove, null); handler1Called.Is(false); handler2Called.Is(true); handler3Called.Is(true); handler4Called.Is(true); handler5Called.Is(false); handler1Called = false; handler2Called = false; handler3Called = false; handler4Called = false; handler5Called = false; listener1.Dispose(); publisher.RaiseCollectionChanged(NotifyCollectionChangedAction.Add, null); publisher.RaiseCollectionChanged(NotifyCollectionChangedAction.Remove, null); handler1Called.Is(false); handler2Called.Is(false); handler3Called.Is(false); handler4Called.Is(false); handler5Called.Is(false); }
public void SourceReferenceMemoryLeakTest() { var handler1Success = false; var publisherStrongReference = new TestEventPublisher(); var publisherWeakReference = new WeakReference<TestEventPublisher>(publisherStrongReference); var listener = new CollectionChangedWeakEventListener(publisherStrongReference); listener.RegisterHandler((sender, e) => handler1Success = true); publisherStrongReference.RaiseCollectionChanged(NotifyCollectionChangedAction.Add, null); handler1Success.Is(true); listener.Dispose(); publisherStrongReference = null; GC.Collect(); GC.WaitForPendingFinalizers(); GC.Collect(); TestEventPublisher resultPublisher = null; publisherWeakReference.TryGetTarget(out resultPublisher).Is(false); resultPublisher.IsNull(); }
public void MultiThreadHandlerTest() { var publisher = new TestEventPublisher(); var listener = new CollectionChangedWeakEventListener(publisher); var handlerCalledCount = 0; var parentTask = new Task(() => { var tf = new TaskFactory(TaskCreationOptions.AttachedToParent, TaskContinuationOptions.AttachedToParent); for (int i = 0; i < 50; i++) { tf.StartNew(() => { for (int f = 0; f < 500; f++) { listener.RegisterHandler(NotifyCollectionChangedAction.Add, (sender, e) => { e.Action.Is(NotifyCollectionChangedAction.Add); handlerCalledCount++; }); } }); } }); parentTask.Start(); parentTask.Wait(); handlerCalledCount.Is(0); publisher.RaiseCollectionChanged(NotifyCollectionChangedAction.Add, null); handlerCalledCount.Is(25000); handlerCalledCount = 0; listener.Dispose(); publisher.RaiseCollectionChanged(NotifyCollectionChangedAction.Add, null); handlerCalledCount.Is(0); }