public void SourceShouldBeNull()
            {
                var sourceMock = new Mock <INotifyPropertyChanged>();

                var binding = new PropertyChangedBinding(sourceMock.Object, null);

                binding.Unbind();

                binding.Source.Should().Be.Null();
            }
            public void ShouldExecuteCallback()
            {
                var sourceMock = new Mock <INotifyPropertyChanged>();

                bool   invoked = false;
                Action action  = () => invoked = true;

                // ReSharper disable once UnusedVariable
                var binding = new PropertyChangedBinding(sourceMock.Object, action);

                sourceMock.Raise(source => source.PropertyChanged += null, sourceMock.Object, new PropertyChangedEventArgs(AnyString));

                invoked.Should().Be.True();
            }
            public void ShouldNotExecuteCallback()
            {
                var sourceMock = new Mock <INotifyPropertyChanged>();

                bool   invoked = false;
                Action action  = () => invoked = true;

                var binding = new PropertyChangedBinding(sourceMock.Object, action);

                binding.Unbind();

                sourceMock.Raise(source => source.PropertyChanged += null, sourceMock.Object, new PropertyChangedEventArgs(AnyString));

                invoked.Should().Be.False();
            }