public void ShouldSetSetGetDynamicProperties() { // Arrange var obj = new MyObservableObject(false, null); // Act obj.SetDynamicValue <int>("SomeProp", 123); obj.SetDynamicValue <int>("SomeProp", 456); obj.SetDynamicValue <int>("SomeProp", 789); // Assert Assert.That(obj.GetDynamicValue <int>("SomeProp"), Is.EqualTo(789)); }
public void ShouldRaisePropertyChangedOnDynamicValueSet() { // Arrange var obj = new MyObservableObject(false, null); List <string> propertiesNotified = new List <string>(); obj.PropertyChanged += (s, e) => propertiesNotified.Add(e.PropertyName); // Act obj.SetDynamicValue <int>("SomeProp", 123); obj.SetDynamicValue <int>("SomeOtherProp", 456); obj.SetDynamicValue <int>("SomeProp", 789); // Assert Assert.That(propertiesNotified.Count, Is.EqualTo(3)); Assert.That(propertiesNotified, Is.EquivalentTo(new[] { "SomeProp", "SomeOtherProp", "SomeProp" })); }
public void ShouldFireObservableEventsOnDynamicValueSet() { // Arrange var obj = new MyObservableObject(false, null); List <object> objectsReceived = new List <object>(); obj.WhenPropertyChanged(x => x.ADynamicValue).Subscribe(v => objectsReceived.Add(v)); objectsReceived.Clear(); // Act obj.SetDynamicValue <object>("ADynamicValue", 123); obj.ADynamicValue = "Testing"; obj.SetDynamicValue <object>("ADynamicValue", "Dynamic"); // Assert Assert.That(objectsReceived.Count, Is.EqualTo(3)); Assert.That(objectsReceived, Is.EquivalentTo(new object[] { 123, "Testing", "Dynamic" })); }
public void ShouldClearDynamicPropertiesOnDispose() { // Arrange var obj = new MyObservableObject(false, null); obj.SetDynamicValue <object>("ObjectProp", new ObservableObjectBase()); Assert.That(obj.GetDynamicValue <object>("ObjectProp"), Is.Not.Null); // Act obj.Dispose(); // Assert Assert.That(obj.GetDynamicValue <object>("ObjectProp"), Is.Null); }
public void ShouldNotRaisePropertyChangedOnDynamicValueSetToSameValue() { // Arrange var obj = new MyObservableObject(false, null); List <string> propertiesNotified = new List <string>(); obj.PropertyChanged += (s, e) => propertiesNotified.Add(e.PropertyName); // Act obj.SetDynamicValue <string>("Hi there!", "SomeProp"); obj.SetDynamicValue <string>("Hi there!", "SomeProp"); obj.SetDynamicValue <int>(456, "SomeOtherProp"); obj.SetDynamicValue <int>(456, "SomeOtherProp"); obj.SetDynamicValue <bool?>(true, "SomeNullableProp"); obj.SetDynamicValue <bool?>(true, "SomeNullableProp"); // Assert Assert.That(propertiesNotified.Count, Is.EqualTo(3)); Assert.That(propertiesNotified, Is.EquivalentTo(new[] { "SomeProp", "SomeOtherProp", "SomeNullableProp" })); }