committed by
Dan Walmsley
2 changed files with 124 additions and 37 deletions
@ -0,0 +1,63 @@ |
|||
using System; |
|||
using System.Collections; |
|||
using System.Collections.Generic; |
|||
using System.Collections.Specialized; |
|||
using System.Text; |
|||
using Avalonia.Collections; |
|||
using Avalonia.Diagnostics; |
|||
using Xunit; |
|||
|
|||
namespace Avalonia.Controls.UnitTests |
|||
{ |
|||
public class ItemsSourceViewTests |
|||
{ |
|||
[Fact] |
|||
public void Only_Subscribes_To_Source_CollectionChanged_When_CollectionChanged_Subscribed() |
|||
{ |
|||
var source = new AvaloniaList<string>(); |
|||
var target = new ItemsSourceView<string>(source); |
|||
var debug = (INotifyCollectionChangedDebug)source; |
|||
|
|||
Assert.Null(debug.GetCollectionChangedSubscribers()); |
|||
|
|||
void Handler(object sender, NotifyCollectionChangedEventArgs e) { } |
|||
target.CollectionChanged += Handler; |
|||
|
|||
Assert.NotNull(debug.GetCollectionChangedSubscribers()); |
|||
Assert.Equal(1, debug.GetCollectionChangedSubscribers().Length); |
|||
|
|||
target.CollectionChanged -= Handler; |
|||
|
|||
Assert.Null(debug.GetCollectionChangedSubscribers()); |
|||
} |
|||
|
|||
[Fact] |
|||
public void Cannot_Wrap_An_ItemsSourceView_In_Another() |
|||
{ |
|||
var source = new ItemsSourceView<string>(new string[0]); |
|||
Assert.Throws<ArgumentException>(() => new ItemsSourceView<string>(source)); |
|||
} |
|||
|
|||
[Fact] |
|||
public void Cannot_Create_ItemsSourceView_With_Collection_That_Implements_INCC_But_Not_List() |
|||
{ |
|||
var source = new InvalidCollection(); |
|||
Assert.Throws<ArgumentException>(() => new ItemsSourceView<string>(source)); |
|||
} |
|||
|
|||
private class InvalidCollection : INotifyCollectionChanged, IEnumerable<string> |
|||
{ |
|||
public event NotifyCollectionChangedEventHandler CollectionChanged; |
|||
|
|||
public IEnumerator<string> GetEnumerator() |
|||
{ |
|||
yield break; |
|||
} |
|||
|
|||
IEnumerator IEnumerable.GetEnumerator() |
|||
{ |
|||
yield break; |
|||
} |
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue