private void AssertDependency(string code) { var(assembly, diagnostics) = RAssert.Compile(code); var type = assembly.GetTypes().Single(x => x.Name == "TestClass"); var givenNamesProperty = type.GetProperty("GivenNames"); var familyNameProperty = type.GetProperty("FamilyName"); var instance = (INotifyPropertyChanged)Activator.CreateInstance(type); var count = 0; instance.PropertyChanged += (sender, e) => { if (e.PropertyName == "FullName") { count++; } }; givenNamesProperty.SetValue(instance, "Cameron"); familyNameProperty.SetValue(instance, "MacFarland"); Assert.Equal(2, count); }
public void MultipleClasses() { var code = @"using System.ComponentModel; public class PropertyChangedBase : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged(string name) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); } public class ExampleClass : PropertyChangedBase { public CustomStruct Custom { get; set; } } public struct CustomStruct { public CustomStruct(int value) { Value = value; } public int Value { get; } public override bool Equals(object obj) => Value.Equals(obj); public override int GetHashCode() => Value.GetHashCode(); } "; RAssert.Compile(code); }
public void MissingHelper() { var code = @"using System.ComponentModel; public class TestClass : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; public int Property { get; set; } } "; var(assembly, diagnostics) = RAssert.Compile(code); Assert.Single(diagnostics); Assert.Equal("PC0001", diagnostics[0].Id); }
public void WrongHelperType() { var code = @"using System.ComponentModel; public class TestClass : INotifyPropertyChanged { public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged(object name) => PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name.ToString())); public int Property { get; set; } } "; var(assembly, diagnostics) = RAssert.Compile(code); Assert.Single(diagnostics); Assert.Equal("PC0002", diagnostics[0].Id); }