using System; using System.Collections.Generic; using System.Collections.Specialized; namespace ObservableCollections.Tests { public struct ViewContainer : IEquatable>, IComparable> { public ViewContainer(T value) { Value = value; } public T Value { get; } public static implicit operator ViewContainer(T value) => new(value); public override int GetHashCode() { return Value.GetHashCode(); } public int CompareTo(ViewContainer other) { return Comparer.Default.Compare(Value, other.Value); } public bool Equals(ViewContainer other) { return EqualityComparer.Default.Equals(Value, other.Value); } } //public class TestFilter : ISynchronizedViewFilter //{ // readonly Func filter; // public List>> CalledOnCollectionChanged = new(); // public TestFilter(Func filter) // { // this.filter = filter; // } // public void Clear() // { // CalledWhenTrue.Clear(); // CalledWhenFalse.Clear(); // CalledOnCollectionChanged.Clear(); // } // public bool IsMatch(T value) // { // return this.filter.Invoke(value); // } // public void OnCollectionChanged(in SynchronizedViewChangedEventArgs> args) // { // CalledOnCollectionChanged.Add(args); // } // public void WhenTrue(T value, ViewContainer view) // { // CalledWhenTrue.Add((value, view)); // } // public void WhenFalse(T value, ViewContainer view) // { // CalledWhenFalse.Add((value, view)); // } //} //public class TestFilter2 : ISynchronizedViewFilter, ViewContainer> //{ // readonly Func, ViewContainer, bool> filter; // public List<(KeyValuePair, ViewContainer)> CalledWhenTrue = new(); // public List<(KeyValuePair, ViewContainer)> CalledWhenFalse = new(); // public List, ViewContainer>> CalledOnCollectionChanged = new(); // public TestFilter2(Func, ViewContainer, bool> filter) // { // this.filter = filter; // } // public void Clear() // { // CalledWhenTrue.Clear(); // CalledWhenFalse.Clear(); // CalledOnCollectionChanged.Clear(); // } // public bool IsMatch(KeyValuePair value, ViewContainer view) // { // return this.filter.Invoke(value, view); // } // public void OnCollectionChanged(in SynchronizedViewChangedEventArgs, ViewContainer> args) // { // CalledOnCollectionChanged.Add(args); // } // public void WhenTrue(KeyValuePair value, ViewContainer view) // { // CalledWhenTrue.Add((value, view)); // } // public void WhenFalse(KeyValuePair value, ViewContainer view) // { // CalledWhenFalse.Add((value, view)); // } //} }