File: MessageSinkTestOutputHelper.cs
Project: ..\..\..\test\ProjectTemplates\Microsoft.Extensions.AI.Templates.IntegrationTests\Microsoft.Extensions.AI.Templates.Tests.csproj (Microsoft.Extensions.AI.Templates.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using System.Text;
using Xunit;
using Xunit.Sdk;
 
namespace Microsoft.Shared.ProjectTemplates.Tests;
 
public sealed class MessageSinkTestOutputHelper : ITestOutputHelper
{
    private readonly IMessageSink _messageSink;
    private readonly StringBuilder _sb = new();
 
    public MessageSinkTestOutputHelper(IMessageSink messageSink)
    {
        _messageSink = messageSink;
    }
 
    public string Output => _sb.ToString();
 
    public void Write(string message)
    {
        _sb.Append(message);
        _messageSink.OnMessage(new Xunit.v3.DiagnosticMessage(message));
    }
 
    public void Write(string format, params object[] args)
    {
        _sb.AppendFormat(System.Globalization.CultureInfo.InvariantCulture, format, args);
        _messageSink.OnMessage(new Xunit.v3.DiagnosticMessage(format, args));
    }
 
    public void WriteLine(string message)
    {
        _sb.AppendLine(message);
        _messageSink.OnMessage(new Xunit.v3.DiagnosticMessage(message));
    }
 
    public void WriteLine(string format, params object[] args)
    {
        _sb.AppendFormat(System.Globalization.CultureInfo.InvariantCulture, format, args);
        _sb.AppendLine();
        _messageSink.OnMessage(new Xunit.v3.DiagnosticMessage(format, args));
    }
}