|
|
|
@ -108,6 +108,34 @@ namespace Perspex.Markup.UnitTests.Data |
|
|
|
Assert.Equal(0, data.SubscriptionCount); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Should_Trigger_PropertyChanged_On_Null_Or_Empty_String() |
|
|
|
{ |
|
|
|
var data = new Class1 { Bar = "foo" }; |
|
|
|
var target = new ExpressionObserver(data, "Bar"); |
|
|
|
var result = new List<object>(); |
|
|
|
|
|
|
|
var sub = target.Subscribe(x => result.Add(x)); |
|
|
|
|
|
|
|
Assert.Equal(new[] { "foo" }, result); |
|
|
|
|
|
|
|
data.Bar = "bar"; |
|
|
|
|
|
|
|
Assert.Equal(new[] { "foo" }, result); |
|
|
|
|
|
|
|
data.RaisePropertyChanged(string.Empty); |
|
|
|
|
|
|
|
Assert.Equal(new[] { "foo", "bar" }, result); |
|
|
|
|
|
|
|
data.RaisePropertyChanged(null); |
|
|
|
|
|
|
|
Assert.Equal(new[] { "foo", "bar", "bar" }, result); |
|
|
|
|
|
|
|
sub.Dispose(); |
|
|
|
|
|
|
|
Assert.Equal(0, data.SubscriptionCount); |
|
|
|
} |
|
|
|
|
|
|
|
[Fact] |
|
|
|
public void Should_Track_End_Of_Property_Chain_Changing() |
|
|
|
{ |
|
|
|
@ -324,6 +352,13 @@ namespace Perspex.Markup.UnitTests.Data |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private string _bar; |
|
|
|
public string Bar |
|
|
|
{ |
|
|
|
get { return _bar; } |
|
|
|
set { _bar = value; } |
|
|
|
} |
|
|
|
|
|
|
|
public INext Next |
|
|
|
{ |
|
|
|
get { return _next; } |
|
|
|
@ -333,6 +368,11 @@ namespace Perspex.Markup.UnitTests.Data |
|
|
|
RaisePropertyChanged(nameof(Next)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
public void RaisePropertyChanged(string propertyName) |
|
|
|
{ |
|
|
|
base.RaisePropertyChanged(propertyName); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
private class Class2 : NotifyingBase, INext |
|
|
|
|