mirror of
https://github.com/Tyrrrz/CliFx.git
synced 2025-10-25 15:19:17 +00:00
54 lines
1.6 KiB
C#
54 lines
1.6 KiB
C#
using System.IO;
|
|
using System.Linq;
|
|
using CliFx.Utilities;
|
|
using FluentAssertions;
|
|
using Xunit;
|
|
|
|
namespace CliFx.Tests
|
|
{
|
|
public class UtilitiesSpecs
|
|
{
|
|
[Fact]
|
|
public void Progress_ticker_can_be_used_to_report_progress_to_console()
|
|
{
|
|
// Arrange
|
|
using var stdOut = new MemoryStream();
|
|
var console = new VirtualConsole(output: stdOut, isOutputRedirected: false);
|
|
|
|
var ticker = console.CreateProgressTicker();
|
|
|
|
var progressValues = Enumerable.Range(0, 100).Select(p => p / 100.0).ToArray();
|
|
var progressStringValues = progressValues.Select(p => p.ToString("P2")).ToArray();
|
|
|
|
// Act
|
|
foreach (var progress in progressValues)
|
|
ticker.Report(progress);
|
|
|
|
var stdOutData = console.Output.Encoding.GetString(stdOut.ToArray());
|
|
|
|
// Assert
|
|
stdOutData.Should().ContainAll(progressStringValues);
|
|
}
|
|
|
|
[Fact]
|
|
public void Progress_ticker_does_not_write_to_console_if_output_is_redirected()
|
|
{
|
|
// Arrange
|
|
using var stdOut = new MemoryStream();
|
|
var console = new VirtualConsole(output: stdOut);
|
|
|
|
var ticker = console.CreateProgressTicker();
|
|
|
|
var progressValues = Enumerable.Range(0, 100).Select(p => p / 100.0).ToArray();
|
|
|
|
// Act
|
|
foreach (var progress in progressValues)
|
|
ticker.Report(progress);
|
|
|
|
var stdOutData = console.Output.Encoding.GetString(stdOut.ToArray());
|
|
|
|
// Assert
|
|
stdOutData.Should().BeEmpty();
|
|
}
|
|
}
|
|
} |