From 25ae432a40ba8408a471315d9a0f3b75ddee19ad Mon Sep 17 00:00:00 2001 From: neuecc Date: Thu, 5 Aug 2021 19:48:27 +0900 Subject: [PATCH] test --- .../IObservableCollection.cs | 2 +- .../ObservableCollections.Tests.csproj | 4 ++ .../ObservableListTest.cs | 42 +++++++++++++++++++ .../ObservableCollections.Tests/UnitTest1.cs | 15 ------- .../ViewContainer.cs | 27 ++++++++++++ 5 files changed, 74 insertions(+), 16 deletions(-) create mode 100644 tests/ObservableCollections.Tests/ObservableListTest.cs delete mode 100644 tests/ObservableCollections.Tests/UnitTest1.cs create mode 100644 tests/ObservableCollections.Tests/ViewContainer.cs diff --git a/src/ObservableCollections/IObservableCollection.cs b/src/ObservableCollections/IObservableCollection.cs index e3b6026..de7a544 100644 --- a/src/ObservableCollections/IObservableCollection.cs +++ b/src/ObservableCollections/IObservableCollection.cs @@ -22,7 +22,7 @@ namespace ObservableCollections ISortableSynchronizedView CreateSortableView(Func transform); } - public interface ISynchronizedView : IReadOnlyCollection<(T, TView)>, IDisposable + public interface ISynchronizedView : IReadOnlyCollection<(T Value, TView View)>, IDisposable { object SyncRoot { get; } event NotifyCollectionChangedEventHandler? RoutingCollectionChanged; diff --git a/tests/ObservableCollections.Tests/ObservableCollections.Tests.csproj b/tests/ObservableCollections.Tests/ObservableCollections.Tests.csproj index 8cf4a18..471f489 100644 --- a/tests/ObservableCollections.Tests/ObservableCollections.Tests.csproj +++ b/tests/ObservableCollections.Tests/ObservableCollections.Tests.csproj @@ -15,4 +15,8 @@ + + + + \ No newline at end of file diff --git a/tests/ObservableCollections.Tests/ObservableListTest.cs b/tests/ObservableCollections.Tests/ObservableListTest.cs new file mode 100644 index 0000000..38195fb --- /dev/null +++ b/tests/ObservableCollections.Tests/ObservableListTest.cs @@ -0,0 +1,42 @@ +using FluentAssertions; +using System.Collections.ObjectModel; +using System.Linq; +using Xunit; + +namespace ObservableCollections.Tests +{ + public class ObservableListTest + { + [Fact] + public void View() + { + var reference = new ObservableCollection(); + var list = new ObservableList(); + var view = list.CreateView(x => new ViewContainer(x)); + + list.Add(10); reference.Add(10); // 0 + list.Add(50); reference.Add(50); // 1 + list.Add(30); reference.Add(30); // 2 + list.Add(20); reference.Add(20); // 3 + list.Add(40); reference.Add(40); // 4 + + void Equal(params int[] expected) + { + reference.Should().Equal(expected); + list.Should().Equal(expected); + view.Select(x => x.Value).Should().Equal(expected); + view.Select(x => x.View).Should().Equal(expected.Select(x => new ViewContainer(x))); + } + + Equal(10, 50, 30, 20, 40); + + reference.Move(3, 1); + list.Move(3, 1); + Equal(10, 20, 50, 30, 40); + + reference.Insert(2, 99); + list.Insert(2, 99); + Equal(10, 20, 99, 50, 30, 40); + } + } +} diff --git a/tests/ObservableCollections.Tests/UnitTest1.cs b/tests/ObservableCollections.Tests/UnitTest1.cs deleted file mode 100644 index c82df28..0000000 --- a/tests/ObservableCollections.Tests/UnitTest1.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System; -using Xunit; - -namespace ObservableCollections.Tests -{ - public class UnitTest1 - { - [Fact] - public void Test1() - { - - } - - } -} diff --git a/tests/ObservableCollections.Tests/ViewContainer.cs b/tests/ObservableCollections.Tests/ViewContainer.cs new file mode 100644 index 0000000..7b5d9f5 --- /dev/null +++ b/tests/ObservableCollections.Tests/ViewContainer.cs @@ -0,0 +1,27 @@ +using System; +using System.Collections.Generic; + +namespace ObservableCollections.Tests +{ + public struct ViewContainer : IEquatable + { + public ViewContainer(T value) + { + Value = value; + } + + public T Value { get; } + + public static implicit operator ViewContainer(T value) => new ViewContainer(value); + + public override int GetHashCode() + { + return Value.GetHashCode(); + } + + public bool Equals(T other) + { + return EqualityComparer.Default.Equals(Value, other); + } + } +}