public GroupingProductListingViewModel(Factories factories, BackgroundWorkerFactory workerFactory) : base(factories, workerFactory) { Grouping = new SortedGroupingViewModel<ProductViewModel, CategoryViewModel, string, string>(this, () => Products, keySelector: product => product.Category, predicate: product => product.Name.ContainsIgnoringCase(search), choose: Choose, itemSort: product => product.Name, groupSort: group => group.Key.Name); }
public void CanSort() { var unsorted = new GroupingViewModel<string, int>(viewModel, () => viewModel.Items, item => item.Length, item => filterResult, choose); viewModel.Load(); Assert.AreEqual(4, unsorted.Groups[0].Key); Assert.AreEqual("foo", unsorted.Groups[1].First()); var sorted = new SortedGroupingViewModel<string, int, string, int>(viewModel, () => viewModel.Items, item => item.Length, item => filterResult, choose, itemSort: item => item, groupSort: group => -group.Key); viewModel.Refresh(); Assert.AreEqual(4, sorted.Groups[0].Key); Assert.AreEqual("bar", sorted.Groups[1].First()); }