public void Remove_RemovedOnceAndEventRaised() { TestDataManager dm = new TestDataManager(); TestDataType data = new TestDataType { Id = 1U }; dm.Add(data); TestDataObserver obs = new TestDataObserver(); using IDisposable unsubscriber = dm.Subscribe(obs); Assert.IsTrue(dm.Remove(data.Id)); Assert.IsFalse(dm.Remove(data.Id)); 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.Remove && change.OldItems?.FirstOrDefault() == data); }