[Test] public void NewProxyReturnsNewInstance()
        {
            var handler1  = MockRepository.GenerateStub <PropertyChangedEventHandler>();
            var handler2  = MockRepository.GenerateStub <PropertyChangedEventHandler>();
            var bar       = MockRepository.GenerateStub <IBar>();
            var barProxy1 = NotifyPropertyChangeFactory.NewProxy(bar);
            var barProxy2 = NotifyPropertyChangeFactory.NewProxy(bar);

            Assert.That(barProxy2, Is.Not.SameAs(barProxy1));
            ((INotifyPropertyChanged)barProxy1).PropertyChanged += handler1;
            ((INotifyPropertyChanged)barProxy2).PropertyChanged += handler2;
            barProxy1.LongProperty = 100;
            handler1.AssertWasCalled(x => x(Arg <object> .Is.Same(barProxy1),
                                            Arg <PropertyChangedEventArgs> .Matches(e => e.PropertyName == "LongProperty")));
            handler2.AssertWasNotCalled(x => x(Arg <object> .Is.Same(barProxy2),
                                               Arg <PropertyChangedEventArgs> .Matches(e => e.PropertyName == "LongProperty")));
        }
 [Test] public void NewProxyGetsNullOnNullTarget()
 {
     Assert.That(NotifyPropertyChangeFactory.NewProxy((IFoo)null), Is.Null);
 }