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);
 }
Example #3
0
        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);
 }
Example #5
0
        public void Setup()
        {
            var eventStore     = new TestInMemoryEventStore();
            var eventPublisher = new TestEventPublisher();

            _session = new Session(new Repository(eventStore, eventPublisher));
        }
Example #6
0
        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));
            }
        }
Example #8
0
 private EventListener <EventHandler> GetEmptyListener(TestEventPublisher publisher, EventHandler emptyHandler)
 {
     return(new EventListener <EventHandler>(
                h => publisher.EmptyEvent += h,
                h => publisher.EmptyEvent -= h,
                emptyHandler));
 }
Example #9
0
 private EventListener <EventHandler <StringEventArgs> > GetStringListener(TestEventPublisher publisher, EventHandler <StringEventArgs> stringHandler)
 {
     return(new EventListener <EventHandler <StringEventArgs> >(
                h => publisher.StringEvent += h,
                h => publisher.StringEvent -= h,
                stringHandler));
 }
Example #10
0
        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));
            }
        }
Example #13
0
        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);
        }
Example #14
0
        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);
        }
Example #15
0
        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));
            }
        }
Example #16
0
        public void Setup()
        {
            var eventStore     = new TestEventStore();
            var eventPublisher = new TestEventPublisher();

            _rep = new Repository <TestAggregateNoParameterLessConstructor>(eventStore, null, eventPublisher);
        }
Example #17
0
        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);
        }
Example #18
0
        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);
        }
Example #20
0
        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()
        {
            _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);
        }
Example #25
0
 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);
        }
Example #29
0
        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()));
        }
Example #30
0
        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());
 }
Example #32
0
        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()));
        }
Example #34
0
        public void Setup()
        {
            _eventStore     = new TestInMemoryEventStore();
            _eventPublisher = new TestEventPublisher();
            _rep            = new Repository(_eventStore, _eventPublisher);
            _session        = new Session(_rep);

            _aggregate = new TestAggregateNoParameterLessConstructor(2);
        }
        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());
        }
Example #42
0
        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 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 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 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 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);
        }