public void SignalsOnDerivedSourceChanges()
        {
            var fake = new DerivedFake();

            fake.ObservePropertyChangedWithValue(x => x.Name, false)
            .Subscribe(_changes.Add);
            CollectionAssert.IsEmpty(_changes);
            fake.Name = "El Kurro";
            Assert.AreEqual(1, _changes.Count);
            Assert.AreEqual("El Kurro", _changes.Single().EventArgs.Value);
            Assert.AreSame(fake, _changes.Single().Sender);
            Assert.IsTrue(_changes.Single().EventArgs.HasValue);
        }
            public void SignalsOnDerivedSourceChanges()
            {
                var changes = new List <EventPattern <PropertyChangedAndValueEventArgs <string> > >();
                var fake    = new DerivedFake();

                using (fake.ObservePropertyChangedWithValue(x => x.Name, signalInitial: false)
                       .Subscribe(changes.Add))
                {
                    CollectionAssert.IsEmpty(changes);

                    fake.Name = "Johan";
                    EventPatternAssert.AreEqual(fake, "Name", Maybe.Some("Johan"), changes.Single());
                }
            }