public void Replace_ReplacedAndEventRaised() { TestDataManager dm = new TestDataManager(); TestDataType data1 = new TestDataType { Id = 1U }, data2 = new TestDataType { Id = 2U }; dm.Add(data1); TestDataObserver obs = new TestDataObserver(); using IDisposable unsubscriber = dm.Subscribe(obs); Assert.AreEqual(dm.Get(1U), data1); dm.ReplaceData(new HashSet <TestDataType> { data2 }); Assert.AreEqual(dm.Get(2U), data2); Assert.AreEqual(0, obs.CompleteCount); Assert.AreEqual(0, obs.Errors.Count); Assert.AreEqual(1, obs.Next.Count); DataChanged <TestDataType> change = obs.Next.Dequeue(); Assert.IsTrue(change.Action == DataChangedAction.Replace && change.OldItems?.FirstOrDefault() == data1 && change.NewItems?.FirstOrDefault() == data2); }
public void Add_AddedOnceAndEventRaised() { TestDataManager dm = new TestDataManager(); TestDataType data = new TestDataType(); TestDataObserver obs = new TestDataObserver(); using IDisposable unsubscriber = dm.Subscribe(obs); dm.Add(data); Assert.ThrowsException <ArgumentException>(() => dm.Add(data)); Assert.AreEqual(0, obs.CompleteCount); Assert.AreEqual(0, obs.Errors.Count); Assert.AreEqual(1, obs.Next.Count); DataChanged <TestDataType> change = obs.Next.Dequeue(); Assert.IsTrue(change.Action == DataChangedAction.Add && change.NewItems?.FirstOrDefault() == data); }
public void Reset_ResetAndEventRaised() { TestDataManager dm = new TestDataManager(); TestDataType data = new TestDataType(); dm.Add(data); TestDataObserver obs = new TestDataObserver(); using IDisposable unsubscriber = dm.Subscribe(obs); dm.Reset(); Assert.IsFalse(dm.GetAll().Any()); Assert.AreEqual(0, obs.CompleteCount); Assert.AreEqual(0, obs.Errors.Count); Assert.AreEqual(1, obs.Next.Count); DataChanged <TestDataType> change = obs.Next.Dequeue(); Assert.IsTrue(change.Action == DataChangedAction.Reset && change.OldItems?.FirstOrDefault() == data); }