public async void OnlyIncludesLongRunningTests() { var events = new List <LongRunningTestsSummary>(); using var sink = new TestableDelegatingLongRunningTestDetectionSink(longRunningSeconds: 1, callback: summary => events.Add(summary)); var testCaseStarting1 = new _TestCaseStarting { TestCaseUniqueID = "test-case-id-1" }; var testCaseStarting2 = new _TestCaseStarting { TestCaseUniqueID = "test-case-id-2" }; sink.OnMessage(new _TestAssemblyStarting()); sink.OnMessage(testCaseStarting1); await sink.AdvanceClockAsync(500); sink.OnMessage(testCaseStarting2); // Started later, hasn't run long enough await sink.AdvanceClockAsync(500); sink.OnMessage(new _TestCaseFinished { TestCaseUniqueID = "test-case-id-1" }); sink.OnMessage(new _TestCaseFinished { TestCaseUniqueID = "test-case-id-2" }); sink.OnMessage(new _TestAssemblyFinished()); var @event = Assert.Single(events); Assert.Equal(TimeSpan.FromSeconds(1), @event.ConfiguredLongRunningTime); var receivedTestCasePair = Assert.Single(@event.TestCases); Assert.Same(testCaseStarting1, receivedTestCasePair.Key); Assert.Equal(TimeSpan.FromSeconds(1), receivedTestCasePair.Value); }
public async void LongRunningTest_Once_WithDiagnosticMessageSink() { var events = new List <_DiagnosticMessage>(); var diagSink = Substitute.For <_IMessageSink>(); diagSink .WhenForAnyArgs(x => x.OnMessage(null !)) .Do(callInfo => { var message = callInfo.Arg <_MessageSinkMessage>(); if (message is _DiagnosticMessage diagnosticMessage) { events.Add(diagnosticMessage); } }); using var sink = new TestableDelegatingLongRunningTestDetectionSink(longRunningSeconds: 1, diagnosticMessageSink: diagSink); var testCaseStarting = new _TestCaseStarting { TestCaseDisplayName = "My test display name", TestCaseUniqueID = "test-case-id" }; sink.OnMessage(new _TestAssemblyStarting()); sink.OnMessage(testCaseStarting); await sink.AdvanceClockAsync(1500); sink.OnMessage(new _TestCaseFinished { TestCaseUniqueID = "test-case-id" }); sink.OnMessage(new _TestAssemblyFinished()); var @event = Assert.Single(events); Assert.Equal("[Long Running Test] 'My test display name', Elapsed: 00:00:01", @event.Message); }
public async void LongRunningTest_Once_WithCallback() { var events = new List <LongRunningTestsSummary>(); using var sink = new TestableDelegatingLongRunningTestDetectionSink(longRunningSeconds: 1, callback: summary => events.Add(summary)); var testCaseStarting = new _TestCaseStarting { TestCaseUniqueID = "test-case-id" }; sink.OnMessage(new _TestAssemblyStarting()); sink.OnMessage(testCaseStarting); await sink.AdvanceClockAsync(1500); sink.OnMessage(new _TestCaseFinished { TestCaseUniqueID = "test-case-id" }); sink.OnMessage(new _TestAssemblyFinished()); var @event = Assert.Single(events); Assert.Equal(TimeSpan.FromSeconds(1), @event.ConfiguredLongRunningTime); var receivedTestCasePair = Assert.Single(@event.TestCases); Assert.Same(testCaseStarting, receivedTestCasePair.Key); Assert.Equal(TimeSpan.FromMilliseconds(1500), receivedTestCasePair.Value); }
public async void LongRunningTest_Twice_WithCallback() { var events = new List<LongRunningTestsSummary>(); using (var sink = new TestableDelegatingLongRunningTestDetectionSink(longRunningSeconds: 1, callback: summary => events.Add(summary))) { var testCase = Substitute.For<ITestCase>(); sink.OnMessage(Substitute.For<ITestAssemblyStarting>()); sink.OnMessage(new TestCaseStarting(testCase)); await sink.AdvanceClockAsync(1000); await sink.AdvanceClockAsync(500); await sink.AdvanceClockAsync(500); sink.OnMessage(new TestCaseFinished(testCase, 8009, 1, 0, 0)); sink.OnMessage(Substitute.For<ITestAssemblyFinished>()); Assert.Collection(events, @event => { Assert.Equal(TimeSpan.FromSeconds(1), @event.ConfiguredLongRunningTime); var receivedTestCasePair = Assert.Single(@event.TestCases); Assert.Same(testCase, receivedTestCasePair.Key); Assert.Equal(TimeSpan.FromSeconds(1), receivedTestCasePair.Value); }, @event => { Assert.Equal(TimeSpan.FromSeconds(1), @event.ConfiguredLongRunningTime); var receivedTestCasePair = Assert.Single(@event.TestCases); Assert.Same(testCase, receivedTestCasePair.Key); Assert.Equal(TimeSpan.FromSeconds(2), receivedTestCasePair.Value); } ); } }
public async void OnlyIncludesLongRunningTests() { var events = new List <LongRunningTestsSummary>(); using (var sink = new TestableDelegatingLongRunningTestDetectionSink(longRunningSeconds: 1, callback: summary => events.Add(summary))) { var testCase1 = Substitute.For <ITestCase>(); var testCase2 = Substitute.For <ITestCase>(); sink.OnMessage(Substitute.For <ITestAssemblyStarting>()); sink.OnMessage(new TestCaseStarting(testCase1)); await sink.AdvanceClockAsync(500); sink.OnMessage(new TestCaseStarting(testCase2)); // Started later, hasn't run long enough await sink.AdvanceClockAsync(500); sink.OnMessage(new TestCaseFinished(testCase1, 8009, 1, 0, 0)); sink.OnMessage(new TestCaseFinished(testCase2, 8009, 1, 0, 0)); sink.OnMessage(Substitute.For <ITestAssemblyFinished>()); var @event = Assert.Single(events); Assert.Equal(TimeSpan.FromSeconds(1), @event.ConfiguredLongRunningTime); var receivedTestCasePair = Assert.Single(@event.TestCases); Assert.Same(testCase1, receivedTestCasePair.Key); Assert.Equal(TimeSpan.FromSeconds(1), receivedTestCasePair.Value); } }
public async void OnlyIncludesLongRunningTests() { var events = new List<LongRunningTestsSummary>(); using (var sink = new TestableDelegatingLongRunningTestDetectionSink(longRunningSeconds: 1, callback: summary => events.Add(summary))) { var testCase1 = Substitute.For<ITestCase>(); var testCase2 = Substitute.For<ITestCase>(); sink.OnMessage(Substitute.For<ITestAssemblyStarting>()); sink.OnMessage(new TestCaseStarting(testCase1)); await sink.AdvanceClockAsync(500); sink.OnMessage(new TestCaseStarting(testCase2)); // Started later, hasn't run long enough await sink.AdvanceClockAsync(500); sink.OnMessage(new TestCaseFinished(testCase1, 8009, 1, 0, 0)); sink.OnMessage(new TestCaseFinished(testCase2, 8009, 1, 0, 0)); sink.OnMessage(Substitute.For<ITestAssemblyFinished>()); var @event = Assert.Single(events); Assert.Equal(TimeSpan.FromSeconds(1), @event.ConfiguredLongRunningTime); var receivedTestCasePair = Assert.Single(@event.TestCases); Assert.Same(testCase1, receivedTestCasePair.Key); Assert.Equal(TimeSpan.FromSeconds(1), receivedTestCasePair.Value); } }
public async void LongRunningTest_Once_WithDiagnosticMessageSink() { var events = new List <IDiagnosticMessage>(); var diagSink = Substitute.For <IMessageSinkWithTypes>(); diagSink.WhenForAnyArgs(x => x.OnMessageWithTypes(null, null)) .Do(callInfo => { var message = callInfo.Arg <IMessageSinkMessage>(); var diagnosticMessage = message as IDiagnosticMessage; if (diagnosticMessage != null) { events.Add(diagnosticMessage); } }); using (var sink = new TestableDelegatingLongRunningTestDetectionSink(longRunningSeconds: 1, diagnosticMessageSink: diagSink)) { var testCase = Substitute.For <ITestCase>(); testCase.DisplayName.Returns("My test display name"); sink.OnMessage(Substitute.For <ITestAssemblyStarting>()); sink.OnMessage(new TestCaseStarting(testCase)); await sink.AdvanceClockAsync(1500); sink.OnMessage(new TestCaseFinished(testCase, 8009, 1, 0, 0)); sink.OnMessage(Substitute.For <ITestAssemblyFinished>()); var @event = Assert.Single(events); Assert.Equal("[Long Running Test] 'My test display name', Elapsed: 00:00:01", @event.Message); } }
public async void ShortRunningTests_NoMessages() { var events = new List<LongRunningTestsSummary>(); using (var sink = new TestableDelegatingLongRunningTestDetectionSink(longRunningSeconds: 1, callback: summary => events.Add(summary))) { var testCase1 = Substitute.For<ITestCase>(); sink.OnMessage(Substitute.For<ITestAssemblyStarting>()); sink.OnMessage(new TestCaseStarting(testCase1)); await sink.AdvanceClockAsync(100); sink.OnMessage(new TestCaseFinished(testCase1, 8009, 1, 0, 0)); sink.OnMessage(Substitute.For<ITestAssemblyFinished>()); Assert.Empty(events); } }
public async void ShortRunningTests_NoMessages() { var events = new List <LongRunningTestsSummary>(); using (var sink = new TestableDelegatingLongRunningTestDetectionSink(longRunningSeconds: 1, callback: summary => events.Add(summary))) { var testCase1 = Substitute.For <ITestCase>(); sink.OnMessage(Substitute.For <ITestAssemblyStarting>()); sink.OnMessage(new TestCaseStarting(testCase1)); await sink.AdvanceClockAsync(100); sink.OnMessage(new TestCaseFinished(testCase1, 8009, 1, 0, 0)); sink.OnMessage(Substitute.For <ITestAssemblyFinished>()); Assert.Empty(events); } }
public async void ShortRunningTests_NoMessages() { var events = new List <LongRunningTestsSummary>(); using var sink = new TestableDelegatingLongRunningTestDetectionSink(longRunningSeconds: 1, callback: summary => events.Add(summary)); sink.OnMessage(new _TestAssemblyStarting()); sink.OnMessage(new _TestCaseStarting { TestCaseUniqueID = "test-case-id" }); await sink.AdvanceClockAsync(100); sink.OnMessage(new _TestCaseFinished { TestCaseUniqueID = "test-case-id" }); sink.OnMessage(new _TestAssemblyFinished()); Assert.Empty(events); }
public async void LongRunningTest_Once_WithCallback() { var events = new List <LongRunningTestsSummary>(); using (var sink = new TestableDelegatingLongRunningTestDetectionSink(longRunningSeconds: 1, callback: summary => events.Add(summary))) { var testCase = Substitute.For <ITestCase>(); sink.OnMessage(Substitute.For <ITestAssemblyStarting>()); sink.OnMessage(new TestCaseStarting(testCase)); await sink.AdvanceClockAsync(1500); sink.OnMessage(new TestCaseFinished(testCase, 8009, 1, 0, 0)); sink.OnMessage(Substitute.For <ITestAssemblyFinished>()); var @event = Assert.Single(events); Assert.Equal(TimeSpan.FromSeconds(1), @event.ConfiguredLongRunningTime); var receivedTestCasePair = Assert.Single(@event.TestCases); Assert.Same(testCase, receivedTestCasePair.Key); Assert.Equal(TimeSpan.FromMilliseconds(1500), receivedTestCasePair.Value); } }
public async void LongRunningTest_Twice_WithDiagnosticMessageSink() { var events = new List<IDiagnosticMessage>(); var diagSink = Substitute.For<IMessageSinkWithTypes>(); diagSink.WhenForAnyArgs(x => x.OnMessageWithTypes(null, null)) .Do(callInfo => { var message = callInfo.Arg<IMessageSinkMessage>(); var diagnosticMessage = message as IDiagnosticMessage; if (diagnosticMessage != null) events.Add(diagnosticMessage); }); using (var sink = new TestableDelegatingLongRunningTestDetectionSink(longRunningSeconds: 1, diagnosticMessageSink: diagSink)) { var testCase = Substitute.For<ITestCase>(); testCase.DisplayName.Returns("My test display name"); sink.OnMessage(Substitute.For<ITestAssemblyStarting>()); sink.OnMessage(new TestCaseStarting(testCase)); await sink.AdvanceClockAsync(1000); await sink.AdvanceClockAsync(500); await sink.AdvanceClockAsync(500); sink.OnMessage(new TestCaseFinished(testCase, 8009, 1, 0, 0)); sink.OnMessage(Substitute.For<ITestAssemblyFinished>()); Assert.Collection(events, @event => Assert.Equal("[Long Running Test] 'My test display name', Elapsed: 00:00:01", @event.Message), @event => Assert.Equal("[Long Running Test] 'My test display name', Elapsed: 00:00:02", @event.Message) ); } }