public void TryAddRangeAddsNonExistingNewItems(int amountOfItemsToAdd) { // given var keyValuePairs = Enumerable.Range(0, amountOfItemsToAdd) .Select(i => new KeyValuePair<int, string>(i, $"#{i}")) .ToList(); using (var observableDictionary = new ObservableDictionary<int, string>()) { // when IDictionary<int, string> nonAddedKeyValuePairs; var tryAddResult = observableDictionary.TryAddRange(keyValuePairs, out nonAddedKeyValuePairs); // then check whether all items have been accounted for tryAddResult.Should().Be(true); nonAddedKeyValuePairs.Should().NotBeNull(); nonAddedKeyValuePairs.Should().BeEmpty(); observableDictionary.Count.Should().Be(amountOfItemsToAdd); foreach (var keyValuePair in keyValuePairs) { observableDictionary.Should().Contain(keyValuePair); } } }
public void TryAddRangeAddsNonExistingItemsAndReportsNonAddedBack(int amountOfInitialItems, int amountOfItemsToAdd) { // given var initialKeyValuePairs = Enumerable.Range(0, amountOfInitialItems) .Select(i => new KeyValuePair<int, string>(i, $"#{i}")) .ToList(); var keyValuePairsToAdd = Enumerable.Range(0, amountOfItemsToAdd) .Select(i => new KeyValuePair<int, string>(i, $"#{i}")) .ToList(); using (var observableDictionary = new ObservableDictionary<int, string>(initialKeyValuePairs)) { // when IDictionary<int, string> itemsThatCouldNotBeAdded; var tryAddResult = observableDictionary.TryAddRange(keyValuePairsToAdd, out itemsThatCouldNotBeAdded); // then check whether all items have been accounted for tryAddResult.Should().Be(false); itemsThatCouldNotBeAdded.Should().NotBeNull(); itemsThatCouldNotBeAdded.Should().NotBeEmpty(); observableDictionary.Count.Should().Be(amountOfInitialItems + amountOfItemsToAdd - itemsThatCouldNotBeAdded.Count); foreach (var keyValuePair in keyValuePairsToAdd.Except(itemsThatCouldNotBeAdded)) { observableDictionary.Should().Contain(keyValuePair); } foreach (var keyValuePair in initialKeyValuePairs.Intersect(keyValuePairsToAdd)) { itemsThatCouldNotBeAdded.Should().Contain(keyValuePair); } } }