public void MonitorSelectedItems(MonitorSelectedItemsMode mode)
        {
            var initialItems = Enumerable.Range(1, 10)
                               .Select(i => new SelectableItem(i))
                               .ToArray();

            //result should only be true when all items are set to true
            using (var sourceList = new SourceList <SelectableItem>())
                using (var sut = new MonitorSelectedItems(sourceList, mode))
                {
                    sourceList.AddRange(initialItems);
                    sut.HasSelection.Should().Be(false);
                    sut.SelectedMessage.Should().Be("Nothing Selected");

                    initialItems[0].IsSelected = true;
                    sut.HasSelection.Should().Be(true);
                    sut.SelectedMessage.Should().Be("1 item selected");

                    initialItems[1].IsSelected = true;
                    sut.HasSelection.Should().Be(true);
                    sut.SelectedMessage.Should().Be("2 items selected");

                    //remove the selected items
                    sourceList.RemoveRange(0, 2);
                    sut.HasSelection.Should().Be(false);
                    sut.SelectedMessage.Should().Be("Nothing Selected");
                }
        }
示例#2
0
        public MonitorSelectedItems(ISourceList <SelectableItem> source, MonitorSelectedItemsMode mode)
        {
            _source = source;

            //both methods produce the same result. However, UsingEntireCollection() enables producing values of selected and not-selected items
            _cleanUp = mode == MonitorSelectedItemsMode.UsingFilterOnProperty
                ? UseFilterOnProperty()
                : UseEntireCollection();
        }