public void SynchronizeCollection()
{
var observable = new SomeObservable();
int addCalls = 0, removeCalls = 0, changedCalls = 0;
observable.Strings.Add("a");
observable.Strings.Add("b");
using (var lifetime = new Lifetime())
{
observable.Strings.SynchronizeForLifetime((s) => { addCalls++; }, (s) => { removeCalls++; }, () => { changedCalls++; }, lifetime.LifetimeManager);
Assert.AreEqual(2, addCalls);
Assert.AreEqual(0, removeCalls);
Assert.AreEqual(1, changedCalls);
observable.Strings.Add("c");
Assert.AreEqual(3, addCalls);
Assert.AreEqual(0, removeCalls);
Assert.AreEqual(2, changedCalls);
observable.Strings.Remove("a");
Assert.AreEqual(3, addCalls);
Assert.AreEqual(1, removeCalls);
Assert.AreEqual(3, changedCalls);
}
observable.Strings.Add("d");
observable.Strings.Remove("d");
Assert.AreEqual(3, addCalls);
Assert.AreEqual(1, removeCalls);
Assert.AreEqual(3, changedCalls);
}