File: EventHandlers\TestDiscoveryEventHandler.cs
Web Access
Project: src\src\vstest\src\Microsoft.TestPlatform.CommunicationUtilities\Microsoft.TestPlatform.CommunicationUtilities.csproj (Microsoft.TestPlatform.CommunicationUtilities)
// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.

using System.Collections.Generic;

using Microsoft.VisualStudio.TestPlatform.CommunicationUtilities.Interfaces;
using Microsoft.VisualStudio.TestPlatform.ObjectModel;
using Microsoft.VisualStudio.TestPlatform.ObjectModel.Client;
using Microsoft.VisualStudio.TestPlatform.ObjectModel.Logging;

namespace Microsoft.VisualStudio.TestPlatform.CommunicationUtilities;

/// <summary>
/// The test discovery event handler.
/// </summary>
public class TestDiscoveryEventHandler : ITestDiscoveryEventsHandler2
{
    private readonly ITestRequestHandler _requestHandler;

    /// <summary>
    /// Initializes a new instance of the <see cref="TestDiscoveryEventHandler"/> class.
    /// </summary>
    /// <param name="requestHandler"> The Request Handler. </param>
    public TestDiscoveryEventHandler(ITestRequestHandler requestHandler)
    {
        _requestHandler = requestHandler;
    }

    /// <summary>
    /// Handles discovered tests
    /// </summary>
    /// <param name="discoveredTestCases">List of test cases</param>
    public void HandleDiscoveredTests(IEnumerable<TestCase>? discoveredTestCases)
    {
        EqtTrace.Info("Test Cases found ");
        _requestHandler.SendTestCases(discoveredTestCases);
    }

    /// <summary>
    /// Handle discovery complete.
    /// </summary>
    /// <param name="discoveryCompleteEventArgs"> Discovery Complete Events Args. </param>
    /// <param name="lastChunk"> The last chunk. </param>
    public void HandleDiscoveryComplete(DiscoveryCompleteEventArgs discoveryCompleteEventArgs, IEnumerable<TestCase>? lastChunk)
    {
        EqtTrace.Info(discoveryCompleteEventArgs.IsAborted ? "Discover Aborted." : "Discover Finished.");

        _requestHandler.DiscoveryComplete(discoveryCompleteEventArgs, lastChunk);
    }

    /// <summary>
    /// The handle discovery message.
    /// </summary>
    /// <param name="level"> Logging level. </param>
    /// <param name="message"> Logging message. </param>
    public void HandleLogMessage(TestMessageLevel level, string? message)
    {
        switch (level)
        {
            case TestMessageLevel.Informational:
                EqtTrace.Info(message);
                break;

            case TestMessageLevel.Warning:
                EqtTrace.Warning(message);
                break;

            case TestMessageLevel.Error:
                EqtTrace.Error(message);
                break;

            default:
                EqtTrace.Info(message);
                break;
        }

        _requestHandler.SendLog(level, message);
    }

    public void HandleRawMessage(string rawMessage)
    {
        // No-Op
        // TestHost at this point has no functionality where it requires rawmessage
    }
}