public void ExitStatus_ReturnsExitCodeIfProcessHasExitedButNotBeenDisposedOf() { Process dummyProcess = null; try { // Arrange dummyProcess = CreateProcess(); NodeJSProcess testSubject = CreateNodeJSProcess(dummyProcess); // Act testSubject.Kill(); dummyProcess.WaitForExit(); string result = testSubject.ExitStatus; // Assert Assert.NotEmpty(result); // Can't gaurantee what exit code will be returned on all platforms } finally { try { dummyProcess?.Kill(); } catch { // If Kill throws, process has already terminated } finally { dummyProcess?.Dispose(); } } }
public void ExitStatus_ReturnsExitStatusNotExitedMessageIfProcessHasNotExited() { Process dummyProcess = null; try { // Arrange dummyProcess = CreateProcess(); NodeJSProcess testSubject = CreateNodeJSProcess(dummyProcess); // Act string result = testSubject.ExitStatus; // Assert Assert.Equal(NodeJSProcess.EXIT_STATUS_NOT_EXITED, result); } finally { try { dummyProcess?.Kill(); } catch { // If Kill throws, process has already terminated } finally { dummyProcess?.Dispose(); } } }
public void ExitStatus_ReturnsExitStatusDisposedIfProcessHasBeenDisposed() { // Arrange using (NodeJSProcess testSubject = CreateNodeJSProcess()) { // Act testSubject.Dispose(); string result = testSubject.ExitStatus; // Assert Assert.Equal(NodeJSProcess.EXIT_STATUS_DISPOSED, result); } }
public void TryCreateMessage_AppendsDataToStringBuilderAndReturnsFalseIfTheDataDoesNotEndWithANullTerminatingCharacter(string dummyData) { // Arrange var dummyStringBuilder = new StringBuilder(); NodeJSProcess testSubject = CreateNodeJSProcess(); // Act bool result = testSubject.TryCreateMessage(dummyStringBuilder, dummyData, out string resultMessage); // Assert Assert.False(result); Assert.Null(resultMessage); Assert.Equal(dummyData + "\n", dummyStringBuilder.ToString(), ignoreLineEndingDifferences: true); }
public void TryCreateMessage_ResetsStringBuilderReturnsTrueAndAMessageIfTheDataEndsWithANullTerminatingCharacter() { // Arrange var dummyStringBuilder = new StringBuilder(); const string dummyData = "dummyData"; string dummyDataWithNullTerminatingCharacter = $"{dummyData}\0"; NodeJSProcess testSubject = CreateNodeJSProcess(); // Act bool result = testSubject.TryCreateMessage(dummyStringBuilder, dummyDataWithNullTerminatingCharacter, out string resultMessage); // Assert Assert.True(result); Assert.Equal(dummyData, resultMessage); Assert.Equal(0, dummyStringBuilder.Length); }
public void ExitStatus_ReturnsExitStatusNotExitedMessageIfProcessHasNotExited() { // Arrange Process dummyProcess = CreateNodeJSProcess(); Mock <NodeJSProcess> mockTestSubject = _mockRepository.Create <NodeJSProcess>(dummyProcess); mockTestSubject.CallBase = true; using (NodeJSProcess testSubject = mockTestSubject.Object) { // Act string result = mockTestSubject.Object.ExitStatus; // Assert Assert.Equal(NodeJSProcess.EXIT_STATUS_NOT_EXITED, result); } }
public void ExitStatus_ReturnsExitStatusDisposedIfProcessHasBeenDisposed() { // Arrange Process dummyProcess = CreateNodeJSProcess(); Mock <NodeJSProcess> mockTestSubject = _mockRepository.Create <NodeJSProcess>(dummyProcess); mockTestSubject.CallBase = true; using (NodeJSProcess testSubject = mockTestSubject.Object) { // Act testSubject.Dispose(); string result = mockTestSubject.Object.ExitStatus; // Assert Assert.Equal(NodeJSProcess.EXIT_STATUS_DISPOSED, result); } }
public void ExitStatus_ReturnsExitCodeIfProcessHasExitedButNotBeenDisposedOf() { // Arrange Process dummyProcess = CreateNodeJSProcess(); Mock <NodeJSProcess> mockTestSubject = _mockRepository.Create <NodeJSProcess>(dummyProcess); mockTestSubject.CallBase = true; using (NodeJSProcess testSubject = mockTestSubject.Object) { // Act testSubject.Kill(); dummyProcess.WaitForExit(); string result = mockTestSubject.Object.ExitStatus; // Assert Assert.NotEmpty(result); // Can't gaurantee what exit code will be returned on all platforms } }