public void BatchUpdate4() { var people = _generator.Take(10).ToArray(); _source.AddOrUpdate(people); var list = new ObservableCollectionExtended <Person>(people.OrderBy(p => p, _comparer)); var toupdate = people[3]; _source.Edit(updater => { updater.AddOrUpdate(new Person(toupdate.Name, toupdate.Age - 24)); updater.AddOrUpdate(new Person("Mr", "A", 10, "M")); updater.Remove(people[5]); updater.AddOrUpdate(new Person("Mr", "C", 70, "M")); }); var adaptor = new SortedObservableCollectionAdaptor <Person, string>(); adaptor.Adapt(_results.Messages.Last(), list); var shouldbe = _results.Messages.Last().SortedItems.Select(p => p.Value).ToList(); list.ShouldAllBeEquivalentTo(shouldbe); }
public void InlineChanges() { var people = _generator.Take(10000).ToArray(); _cache.AddOrUpdate(people); //apply mutable changes to the items var random = new Random(); var tochange = people.OrderBy(x => Guid.NewGuid()).Take(10).ToList(); tochange.ForEach(p => p.Age = random.Next(0, 100)); _cache.Refresh(tochange); var expected = people.OrderBy(t => t, _comparer).ToList(); var actual = _results.Messages.Last().SortedItems.Select(kv => kv.Value).ToList(); CollectionAssert.AreEqual(expected, actual); var list = new ObservableCollectionExtended <Person>(); var adaptor = new SortedObservableCollectionAdaptor <Person, string>(); foreach (var message in _results.Messages) { adaptor.Adapt(message, list); } CollectionAssert.AreEquivalent(expected, list); }
public void BatchUpdateWhereUpdateMovesTheIndexDown() { var people = _generator.Take(10).ToArray(); _source.AddOrUpdate(people); var toupdate = people[3]; _source.Edit(updater => { updater.Remove(people[0].Key); updater.Remove(people[1].Key); updater.AddOrUpdate(new Person(toupdate.Name, toupdate.Age + 50)); updater.AddOrUpdate(_generator.Take(2)); updater.Remove(people[7]); }); var list = new ObservableCollectionExtended <Person>(people.OrderBy(p => p, _comparer)); var adaptor = new SortedObservableCollectionAdaptor <Person, string>(); adaptor.Adapt(_results.Messages.Last(), list); var shouldbe = _results.Messages.Last().SortedItems.Select(p => p.Value).ToList(); list.Should().BeEquivalentTo(shouldbe); }
public void BatchUpdateShiftingIndicies() { var testData = new[] { new Person("A", 3), new Person("B", 5), new Person("C", 7), new Person("D", 8), new Person("E", 10), new Person("F", 12), new Person("G", 14) }; _source.AddOrUpdate(testData); var list = new ObservableCollectionExtended <Person>(testData.OrderBy(p => p, _comparer)); var toUpdate1 = testData[0]; var toUpdate2 = testData[3]; _source.Edit(updater => { updater.AddOrUpdate(new Person(toUpdate1.Name, 6)); updater.AddOrUpdate(new Person(toUpdate2.Name, 2)); }); var adaptor = new SortedObservableCollectionAdaptor <Person, string>(); adaptor.Adapt(_results.Messages.Last(), list); var shouldbe = _results.Messages.Last().SortedItems.Select(p => p.Value).ToList(); list.Should().BeEquivalentTo(shouldbe); }
public void BatchUpdate6() { var people = _generator.Take(10).ToArray(); _source.AddOrUpdate(people); _source.BatchUpdate(updater => { updater.Clear(); updater.AddOrUpdate(_generator.Take(10).ToArray()); updater.Clear(); }); var list = new ObservableCollectionExtended <Person>(people.OrderBy(p => p, _comparer)); var adaptor = new SortedObservableCollectionAdaptor <Person, string>(); adaptor.Adapt(_results.Messages.Last(), list); var shouldbe = _results.Messages.Last().SortedItems.Select(p => p.Value).ToList(); CollectionAssert.AreEquivalent(shouldbe, list); }
public void InlineUpdateProducesAReplace() { var people = _generator.Take(10).ToArray(); _source.AddOrUpdate(people); var toupdate = people[3]; _source.AddOrUpdate(new Person(toupdate.Name, toupdate.Age + 1)); var list = new ObservableCollectionExtended <Person>(people.OrderBy(p => p, _comparer)); var adaptor = new SortedObservableCollectionAdaptor <Person, string>(); adaptor.Adapt(_results.Messages.Last(), list); var shouldbe = _results.Messages.Last().SortedItems.Select(p => p.Value).ToList(); list.ShouldAllBeEquivalentTo(shouldbe); }
public void InlineChanges() { var people = _generator.Take(10000).ToArray(); _cache.BatchUpdate(updater => updater.AddOrUpdate(people)); //apply mutable changes to the items var random = new Random(); var tochange = people.OrderBy(x => Guid.NewGuid()).Take(10).ToList(); tochange.ForEach(p => p.Age = random.Next(0, 100)); // _sortController.Resort(); _cache.Evaluate(tochange); var expected = people.OrderBy(t=>t,_comparer).ToList(); var actual = _results.Messages.Last().SortedItems.Select(kv=>kv.Value).ToList(); CollectionAssert.AreEqual(expected,actual); var list = new ObservableCollectionExtended<Person>(); var adaptor = new SortedObservableCollectionAdaptor<Person, string>(); foreach (var message in _results.Messages) { adaptor.Adapt(message, list); } CollectionAssert.AreEquivalent(expected, list); }