public void TestFilterIsMatch() { ObjectEqualFilter filter = GetEqualFilter(); CollectionViewSource cvs = new(); var source = enumSource.ToList(); cvs.Source = source; ICollectionView view = cvs.View; Assert.IsTrue(view.CanFilter); using (IDisposable defer = view.DeferRefresh()) { view.Filter = el => { BolapanControl.ItemsFilter.FilterEventArgs e = new(el); filter.IsMatch(null, e); return(e.Accepted); }; } var filtered = GetCollection(view); Assert.AreEqual(source.Count, filtered.Count); List <int?> selected = new(new int?[] { source[0], source[1] }); List <int?> unselected = new(); filter.SelectedValuesChanged(addedItems: selected, removedItems: unselected); view.Refresh(); filtered = GetCollection(view); Assert.AreEqual(selected.Count, filtered.Count); Assert.AreEqual(selected[0], filtered[0]); Assert.AreEqual(selected[1], filtered[1]); selected = new(new int?[] { source[^ 1] });
public void CTOR() { ObjectEqualFilter filter = GetEqualFilter(); Assert.IsNotNull(filter); Assert.AreEqual(0, filter.SelectedValues.Count); Assert.IsFalse(filter.IsActive); }
public void TestAvailableValues() { ObjectEqualFilter filter = GetEqualFilter(); var source = enumSource.ToList(); filter.AvailableValues = source; CollectionViewSource cvs = new(); cvs.Source = filter.AvailableValues; ICollectionView view = cvs.View; var currentView = GetCollection(view); Assert.AreEqual(source.Count, currentView.Count); }
protected static Filter?NewFilter(FilterPresenter filterPresenter, ItemPropertyInfo propertyInfo) { #if DEBUG Microsoft.VisualStudio.TestTools.UnitTesting.Assert.IsNotNull(filterPresenter); Microsoft.VisualStudio.TestTools.UnitTesting.Assert.IsNotNull(propertyInfo); #endif Type propertyType = propertyInfo.PropertyType; if (filterPresenter.ItemProperties.Contains(propertyInfo) && !propertyType.IsEnum ) { Type generic = typeof(IEquatable <>); Type[] tArgs = new Type[] { propertyType }; Type iquatableType = generic.MakeGenericType(tArgs); Filter?filter = null; if (iquatableType.IsAssignableFrom(propertyType)) { filter = Activator.CreateInstance( typeof(EqualFilter <>).MakeGenericType(propertyType), propertyInfo, GetAvailableValuesQuery(filterPresenter, propertyInfo) ) as Filter; } else { filter = new ObjectEqualFilter(propertyInfo, GetAvailableValuesQuery(filterPresenter, propertyInfo)); } if (filter != null) { filter.Attach(filterPresenter); } return(filter); } return(null); }