public void Test_DifferentValue()
    {
        var t = new ClassUnderTest();
        var e = new EventHandlerCapture <PropertyChangedEventArgs>();

        t.NameChanged += e.Handler;
        Event.TestEvent(e, () => t.Name = "test", Event.WasPropertyChanged(t, "Name"));
        Event.TestEvent(e, () => t.Name = null, Event.WasPropertyChanged(t, "Name"));
    }
    public void Test_SameValue()
    {
        var t = new ClassUnderTest();
        var e = new EventHandlerCapture <PropertyChangedEventArgs>();

        t.NameChanged += e.Handler;
        Event.TestEvent(e, () => t.Name = null, Event.WasNotRaised <PropertyChangedEventArgs>());
        t.Name = "test";
        Event.TestEvent(e, () => t.Name = "test", Event.WasNotRaised <PropertyChangedEventArgs>());
    }
 public static void TestEvent <TEventArgs>(EventHandlerCapture <TEventArgs> capture, Action code, Action <EventHandlerCapture <TEventArgs> > test) where TEventArgs : EventArgs
 {
     capture.Reset();
     code();
     test(capture);
 }