public void IgnoresPropertyLambda() { var source = new WithIllegal(); var settings = new PropertiesSettingsBuilder().IgnoreProperty <WithIllegal>(x => x.Illegal) .CreateSettings(ReferenceHandling.Structural); var propertyChanges = new List <string>(); var changes = new List <EventArgs>(); using (var tracker = Track.Changes(source, settings)) { tracker.PropertyChanged += (_, e) => propertyChanges.Add(e.PropertyName); tracker.Changed += (_, e) => changes.Add(e); Assert.AreEqual(0, tracker.Changes); CollectionAssert.IsEmpty(propertyChanges); CollectionAssert.IsEmpty(changes); source.Value++; Assert.AreEqual(1, tracker.Changes); CollectionAssert.AreEqual(new[] { "Changes" }, propertyChanges); var expected = new[] { RootChangeEventArgs.Create(ChangeTrackerNode.GetOrCreate(source, tracker.Settings, isRoot: false).Value, new PropertyChangeEventArgs(source, source.GetProperty(nameof(source.Value)))) }; CollectionAssert.AreEqual(expected, changes, EventArgsComparer.Default); source.Illegal = new IllegalType(); Assert.AreEqual(1, tracker.Changes); CollectionAssert.AreEqual(new[] { "Changes" }, propertyChanges); CollectionAssert.AreEqual(expected, changes, EventArgsComparer.Default); } }
public void IgnoresPropertyLambda() { var source = new WithIllegal(); var settings = new PropertiesSettingsBuilder().IgnoreProperty<WithIllegal>(x => x.Illegal) .CreateSettings(ReferenceHandling.Structural); var propertyChanges = new List<string>(); var changes = new List<EventArgs>(); using (var tracker = Track.Changes(source, settings)) { tracker.PropertyChanged += (_, e) => propertyChanges.Add(e.PropertyName); tracker.Changed += (_, e) => changes.Add(e); Assert.AreEqual(0, tracker.Changes); CollectionAssert.IsEmpty(propertyChanges); CollectionAssert.IsEmpty(changes); source.Value++; Assert.AreEqual(1, tracker.Changes); CollectionAssert.AreEqual(new[] { "Changes" }, propertyChanges); var expected = new[] { RootChangeEventArgs.Create(ChangeTrackerNode.GetOrCreate(source, tracker.Settings, false).Value, new PropertyChangeEventArgs(source, source.GetProperty(nameof(source.Value)))) }; CollectionAssert.AreEqual(expected, changes, EventArgsComparer.Default); source.Illegal = new IllegalType(); Assert.AreEqual(1, tracker.Changes); CollectionAssert.AreEqual(new[] { "Changes" }, propertyChanges); CollectionAssert.AreEqual(expected, changes, EventArgsComparer.Default); } }
public void AddPropertyThrowsOnNested() { var builder = new PropertiesSettingsBuilder(); var exception = Assert.Throws<ArgumentException>(() => builder.IgnoreProperty<ComplexType>(x => x.Name.Length)); var expected = "property must be a property expression like foo => foo.Bar\r\n" + "Nested properties are not allowed"; Assert.AreEqual(expected, exception.Message); }
public void AddPropertyThrowsOnNested() { var builder = new PropertiesSettingsBuilder(); var exception = Assert.Throws <ArgumentException>(() => builder.IgnoreProperty <ComplexType>(x => x.Name.Length)); var expected = "property must be a property expression like foo => foo.Bar\r\n" + "Nested properties are not allowed"; Assert.AreEqual(expected, exception.Message); }
public void AddImmutableType() { var settings = new PropertiesSettingsBuilder().AddImmutableType<ComplexType>() .CreateSettings(); Assert.AreEqual(true, settings.IsImmutable(typeof(ComplexType))); settings = new PropertiesSettingsBuilder().AddImmutableType(typeof(ComplexType)) .CreateSettings(); Assert.AreEqual(true, settings.IsImmutable(typeof(ComplexType))); }
public void AddImmutableType() { var settings = new PropertiesSettingsBuilder().AddImmutableType <ComplexType>() .CreateSettings(); Assert.AreEqual(true, settings.IsImmutable(typeof(ComplexType))); settings = new PropertiesSettingsBuilder().AddImmutableType(typeof(ComplexType)) .CreateSettings(); Assert.AreEqual(true, settings.IsImmutable(typeof(ComplexType))); }