public void Observers_ValidWrappedObjectInstance_ReturnsObserversOfWrappedObject()
        {
            // Setup
            var sourceObject = new SimpleObservable(new object());
            var context      = new SimpleObservableWrappedObjectContext(sourceObject);

            // Call & Assert
            Assert.AreSame(sourceObject.Observers, context.Observers);
        }
        public void Constructor_ValidWrappedObjectInstance_ExpectedValues()
        {
            // Setup
            var sourceObject = new SimpleObservable(new object());

            // Call
            var context = new SimpleObservableWrappedObjectContext(sourceObject);

            // Assert
            Assert.IsInstanceOf <IObservable>(context);
            Assert.IsInstanceOf <WrappedObjectContextBase <IObservable> >(context);
            Assert.AreSame(sourceObject, context.WrappedData);
            CollectionAssert.IsEmpty(context.Observers);
        }
        public void NotifyObservers_ObserverDetached_ObserverIsNoLongerNotified()
        {
            // Setup
            var mocks    = new MockRepository();
            var observer = mocks.StrictMock <IObserver>();

            mocks.ReplayAll();

            var equalitySource = new object();
            var sourceObject   = new SimpleObservable(equalitySource);
            var context        = new SimpleObservableWrappedObjectContext(sourceObject);

            context.Attach(observer);
            context.Detach(observer);

            // Call
            context.NotifyObservers();

            // Assert
            mocks.VerifyAll(); // Expect no UpdateObserver calls on 'observer'
        }
        public void GivenContextWithAttachedObserver_WhenWrappedDataNotifiesObservers_ThenObserverIsNotified()
        {
            // Given
            var mocks    = new MockRepository();
            var observer = mocks.StrictMock <IObserver>();

            observer.Expect(o => o.UpdateObserver());
            mocks.ReplayAll();

            var equalitySource = new object();
            var sourceObject   = new SimpleObservable(equalitySource);
            var context        = new SimpleObservableWrappedObjectContext(sourceObject);

            context.Attach(observer);

            // When
            sourceObject.NotifyObservers();

            // Then
            mocks.VerifyAll(); // Expect call UpdateObserver on 'observer'
        }
        public void NotifyObservers_ObserverAttachedToWrappedData_ObserverIsNotified()
        {
            // Setup
            var mocks    = new MockRepository();
            var observer = mocks.StrictMock <IObserver>();

            observer.Expect(o => o.UpdateObserver());
            mocks.ReplayAll();

            var equalitySource = new object();
            var sourceObject   = new SimpleObservable(equalitySource);
            var context        = new SimpleObservableWrappedObjectContext(sourceObject);

            sourceObject.Attach(observer);

            // Call
            context.NotifyObservers();

            // Assert
            mocks.VerifyAll(); // Expect call UpdateObserver on 'observer'
        }