Browse Source

Use NotifyingBase in unit tests.

And rename NotifyingBase.SubscriptionCount ->
PropertyChangedSubscriptionCount as we also track ErrorsChanged
subscription count.
pull/691/head
Steven Kirk 10 years ago
parent
commit
ac427192df
  1. 38
      tests/Avalonia.Markup.UnitTests/Data/ExpressionObserverTests_DataValidation.cs
  2. 2
      tests/Avalonia.Markup.UnitTests/Data/ExpressionObserverTests_Indexer.cs
  3. 2
      tests/Avalonia.Markup.UnitTests/Data/ExpressionObserverTests_Observable.cs
  4. 34
      tests/Avalonia.Markup.UnitTests/Data/ExpressionObserverTests_Property.cs
  5. 25
      tests/Avalonia.Markup.UnitTests/Data/IndeiValidatorTests.cs
  6. 14
      tests/Avalonia.Markup.UnitTests/Data/Plugins/ExceptionValidationPluginTests.cs
  7. 7
      tests/Avalonia.Markup.UnitTests/Data/Plugins/IndeiValidationPluginTests.cs
  8. 6
      tests/Avalonia.UnitTests/NotifyingBase.cs

38
tests/Avalonia.Markup.UnitTests/Data/ExpressionObserverTests_DataValidation.cs

@ -10,6 +10,7 @@ using System.Reactive.Linq;
using System.Runtime.CompilerServices;
using Avalonia.Data;
using Avalonia.Markup.Data;
using Avalonia.UnitTests;
using Xunit;
namespace Avalonia.Markup.UnitTests.Data
@ -54,7 +55,7 @@ namespace Avalonia.Markup.UnitTests.Data
observer.Subscribe(_ => { });
Assert.Equal(0, data.SubscriptionCount);
Assert.Equal(0, data.PropertyChangedSubscriptionCount);
}
[Fact]
@ -64,9 +65,9 @@ namespace Avalonia.Markup.UnitTests.Data
var observer = new ExpressionObserver(data, nameof(data.MustBePositive), true);
var sub = observer.Subscribe(_ => { });
Assert.Equal(1, data.SubscriptionCount);
Assert.Equal(1, data.PropertyChangedSubscriptionCount);
sub.Dispose();
Assert.Equal(0, data.SubscriptionCount);
Assert.Equal(0, data.PropertyChangedSubscriptionCount);
}
[Fact]
@ -105,7 +106,7 @@ namespace Avalonia.Markup.UnitTests.Data
}, result);
}
public class ExceptionTest : INotifyPropertyChanged
public class ExceptionTest : NotifyingBase
{
private int _mustBePositive;
@ -118,19 +119,14 @@ namespace Avalonia.Markup.UnitTests.Data
{
throw new ArgumentOutOfRangeException(nameof(value));
}
_mustBePositive = value;
RaisePropertyChanged();
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
private class IndeiTest : INotifyDataErrorInfo, INotifyPropertyChanged
private class IndeiTest : NotifyingBase, INotifyDataErrorInfo
{
private int _mustBePositive;
private Dictionary<string, IList<string>> _errors = new Dictionary<string, IList<string>>();
@ -142,7 +138,7 @@ namespace Avalonia.Markup.UnitTests.Data
set
{
_mustBePositive = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(MustBePositive)));
RaisePropertyChanged();
if (value >= 0)
{
@ -159,24 +155,14 @@ namespace Avalonia.Markup.UnitTests.Data
public bool HasErrors => _mustBePositive >= 0;
public int SubscriptionCount { get; private set; }
public int ErrorsChangedSubscriptionCount { get; private set; }
public event EventHandler<DataErrorsChangedEventArgs> ErrorsChanged
{
add
{
_errorsChanged += value;
++SubscriptionCount;
}
remove
{
_errorsChanged -= value;
--SubscriptionCount;
}
add { _errorsChanged += value; ++ErrorsChangedSubscriptionCount; }
remove { _errorsChanged -= value; --ErrorsChangedSubscriptionCount; }
}
public event PropertyChangedEventHandler PropertyChanged;
public IEnumerable GetErrors(string propertyName)
{
IList<string> result;

2
tests/Avalonia.Markup.UnitTests/Data/ExpressionObserverTests_Indexer.cs

@ -189,7 +189,7 @@ namespace Avalonia.Markup.UnitTests.Data
var expected = new[] { "bar", "bar2" };
Assert.Equal(expected, result);
Assert.Equal(0, data.Foo.SubscriptionCount);
Assert.Equal(0, data.Foo.PropertyChangedSubscriptionCount);
}
[Fact]

2
tests/Avalonia.Markup.UnitTests/Data/ExpressionObserverTests_Observable.cs

@ -47,7 +47,7 @@ namespace Avalonia.Markup.UnitTests.Data
Assert.Equal(new[] { AvaloniaProperty.UnsetValue, "foo" }, result);
sub.Dispose();
Assert.Equal(0, data.SubscriptionCount);
Assert.Equal(0, data.PropertyChangedSubscriptionCount);
}
}

34
tests/Avalonia.Markup.UnitTests/Data/ExpressionObserverTests_Property.cs

@ -111,7 +111,7 @@ namespace Avalonia.Markup.UnitTests.Data
sub.Dispose();
Assert.Equal(0, data.SubscriptionCount);
Assert.Equal(0, data.PropertyChangedSubscriptionCount);
}
[Fact]
@ -139,7 +139,7 @@ namespace Avalonia.Markup.UnitTests.Data
sub.Dispose();
Assert.Equal(0, data.SubscriptionCount);
Assert.Equal(0, data.PropertyChangedSubscriptionCount);
}
[Fact]
@ -156,8 +156,8 @@ namespace Avalonia.Markup.UnitTests.Data
sub.Dispose();
Assert.Equal(0, data.SubscriptionCount);
Assert.Equal(0, data.Next.SubscriptionCount);
Assert.Equal(0, data.PropertyChangedSubscriptionCount);
Assert.Equal(0, data.Next.PropertyChangedSubscriptionCount);
}
[Fact]
@ -175,9 +175,9 @@ namespace Avalonia.Markup.UnitTests.Data
sub.Dispose();
Assert.Equal(0, data.SubscriptionCount);
Assert.Equal(0, data.Next.SubscriptionCount);
Assert.Equal(0, old.SubscriptionCount);
Assert.Equal(0, data.PropertyChangedSubscriptionCount);
Assert.Equal(0, data.Next.PropertyChangedSubscriptionCount);
Assert.Equal(0, old.PropertyChangedSubscriptionCount);
}
[Fact]
@ -196,9 +196,9 @@ namespace Avalonia.Markup.UnitTests.Data
sub.Dispose();
Assert.Equal(0, data.SubscriptionCount);
Assert.Equal(0, data.Next.SubscriptionCount);
Assert.Equal(0, old.SubscriptionCount);
Assert.Equal(0, data.PropertyChangedSubscriptionCount);
Assert.Equal(0, data.Next.PropertyChangedSubscriptionCount);
Assert.Equal(0, old.PropertyChangedSubscriptionCount);
}
[Fact]
@ -221,10 +221,10 @@ namespace Avalonia.Markup.UnitTests.Data
sub.Dispose();
Assert.Equal(0, data.SubscriptionCount);
Assert.Equal(0, data.Next.SubscriptionCount);
Assert.Equal(0, breaking.SubscriptionCount);
Assert.Equal(0, old.SubscriptionCount);
Assert.Equal(0, data.PropertyChangedSubscriptionCount);
Assert.Equal(0, data.Next.PropertyChangedSubscriptionCount);
Assert.Equal(0, breaking.PropertyChangedSubscriptionCount);
Assert.Equal(0, old.PropertyChangedSubscriptionCount);
}
[Fact]
@ -327,8 +327,8 @@ namespace Avalonia.Markup.UnitTests.Data
Assert.Equal(new[] { "foo", "bar", AvaloniaProperty.UnsetValue }, result);
Assert.Equal(0, first.SubscriptionCount);
Assert.Equal(0, second.SubscriptionCount);
Assert.Equal(0, first.PropertyChangedSubscriptionCount);
Assert.Equal(0, second.PropertyChangedSubscriptionCount);
}
[Fact]
@ -351,7 +351,7 @@ namespace Avalonia.Markup.UnitTests.Data
private interface INext
{
int SubscriptionCount { get; }
int PropertyChangedSubscriptionCount { get; }
}
private class Class1 : NotifyingBase

25
tests/Avalonia.Markup.UnitTests/Data/IndeiValidatorTests.cs

@ -8,6 +8,7 @@ using System.ComponentModel;
using System.Runtime.CompilerServices;
using Avalonia.Data;
using Avalonia.Markup.Data.Plugins;
using Avalonia.UnitTests;
using Xunit;
namespace Avalonia.Markup.UnitTests.Data
@ -77,14 +78,14 @@ namespace Avalonia.Markup.UnitTests.Data
}, results);
}
public class Data : INotifyPropertyChanged, INotifyDataErrorInfo
public class Data : NotifyingBase, INotifyDataErrorInfo
{
private int nonValidated;
public int NonValidated
{
get { return nonValidated; }
set { nonValidated = value; NotifyPropertyChanged(); }
set { nonValidated = value; RaisePropertyChanged(); }
}
private int mustBePositive;
@ -92,29 +93,13 @@ namespace Avalonia.Markup.UnitTests.Data
public int MustBePositive
{
get { return mustBePositive; }
set
{
mustBePositive = value;
NotifyErrorsChanged();
}
set { mustBePositive = value; RaisePropertyChanged(); }
}
public bool HasErrors
{
get
{
return MustBePositive > 0;
}
}
public bool HasErrors => MustBePositive > 0;
public event PropertyChangedEventHandler PropertyChanged;
public event EventHandler<DataErrorsChangedEventArgs> ErrorsChanged;
private void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
private void NotifyErrorsChanged([CallerMemberName] string propertyName = "")
{
ErrorsChanged?.Invoke(this, new DataErrorsChangedEventArgs(propertyName));

14
tests/Avalonia.Markup.UnitTests/Data/Plugins/ExceptionValidationPluginTests.cs

@ -3,11 +3,10 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Reactive.Linq;
using System.Runtime.CompilerServices;
using Avalonia.Data;
using Avalonia.Markup.Data.Plugins;
using Avalonia.UnitTests;
using Xunit;
namespace Avalonia.Markup.UnitTests.Data.Plugins
@ -38,7 +37,7 @@ namespace Avalonia.Markup.UnitTests.Data.Plugins
}, result);
}
public class Data : INotifyPropertyChanged
public class Data : NotifyingBase
{
private int _mustBePositive;
@ -55,17 +54,10 @@ namespace Avalonia.Markup.UnitTests.Data.Plugins
if (value != _mustBePositive)
{
_mustBePositive = value;
NotifyPropertyChanged();
RaisePropertyChanged();
}
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged([CallerMemberName] string propertyName = "")
{
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
}
}
}
}

7
tests/Avalonia.Markup.UnitTests/Data/Plugins/IndeiValidationPluginTests.cs

@ -8,6 +8,7 @@ using System.ComponentModel;
using System.Reactive.Linq;
using Avalonia.Data;
using Avalonia.Markup.Data.Plugins;
using Avalonia.UnitTests;
using Xunit;
namespace Avalonia.Markup.UnitTests.Data.Plugins
@ -65,7 +66,7 @@ namespace Avalonia.Markup.UnitTests.Data.Plugins
Assert.Equal(0, data.SubscriptionCount);
}
public class Data : INotifyDataErrorInfo, INotifyPropertyChanged
public class Data : NotifyingBase, INotifyDataErrorInfo
{
private int _value;
private int _maximum;
@ -81,7 +82,7 @@ namespace Avalonia.Markup.UnitTests.Data.Plugins
set
{
_value = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(nameof(Value)));
RaisePropertyChanged();
UpdateError();
}
}
@ -102,8 +103,6 @@ namespace Avalonia.Markup.UnitTests.Data.Plugins
remove { _errorsChanged -= value; --SubscriptionCount; }
}
public event PropertyChangedEventHandler PropertyChanged;
public IEnumerable GetErrors(string propertyName)
{
if (propertyName == nameof(Value) && _error != null)

6
tests/Avalonia.UnitTests/NotifyingBase.cs

@ -16,7 +16,7 @@ namespace Avalonia.UnitTests
add
{
_propertyChanged += value;
++SubscriptionCount;
++PropertyChangedSubscriptionCount;
}
remove
@ -24,12 +24,12 @@ namespace Avalonia.UnitTests
if (_propertyChanged?.GetInvocationList().Contains(value) == true)
{
_propertyChanged -= value;
--SubscriptionCount;
--PropertyChangedSubscriptionCount;
}
}
}
public int SubscriptionCount
public int PropertyChangedSubscriptionCount
{
get;
private set;

Loading…
Cancel
Save