public void UnregisterFromProcessMonitor_Succeeds() { Process process = Process.GetCurrentProcess(); _rpcWorkerProcess.Process = process; _hostProcessMonitorMock.Setup(p => p.RegisterChildProcess(process)); _hostProcessMonitorMock.Setup(p => p.UnregisterChildProcess(process)); // not yet registered so noop _rpcWorkerProcess.UnregisterFromProcessMonitor(); _hostProcessMonitorMock.Verify(p => p.UnregisterChildProcess(process), Times.Never); _rpcWorkerProcess.RegisterWithProcessMonitor(); _rpcWorkerProcess.UnregisterFromProcessMonitor(); _hostProcessMonitorMock.Verify(p => p.UnregisterChildProcess(process), Times.Once); // attempting to unregister again is a noop _rpcWorkerProcess.UnregisterFromProcessMonitor(); _hostProcessMonitorMock.Verify(p => p.UnregisterChildProcess(process), Times.Once); }