mirror of
https://github.com/Tyrrrz/CliFx.git
synced 2025-10-25 15:19:17 +00:00
52 lines
1.5 KiB
C#
52 lines
1.5 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using FluentAssertions;
|
|
using FluentAssertions.Execution;
|
|
using FluentAssertions.Primitives;
|
|
|
|
namespace CliFx.Tests.Utils.Extensions;
|
|
|
|
internal static class AssertionExtensions
|
|
{
|
|
public static void ConsistOfLines(
|
|
this StringAssertions assertions,
|
|
IEnumerable<string> lines
|
|
) =>
|
|
assertions
|
|
.Subject.Split(new[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries)
|
|
.Should()
|
|
.Equal(lines);
|
|
|
|
public static void ConsistOfLines(this StringAssertions assertions, params string[] lines) =>
|
|
assertions.ConsistOfLines((IEnumerable<string>)lines);
|
|
|
|
public static AndConstraint<StringAssertions> ContainAllInOrder(
|
|
this StringAssertions assertions,
|
|
IEnumerable<string> values
|
|
)
|
|
{
|
|
var lastIndex = 0;
|
|
|
|
foreach (var value in values)
|
|
{
|
|
var index = assertions.Subject.IndexOf(value, lastIndex, StringComparison.Ordinal);
|
|
|
|
if (index < 0)
|
|
{
|
|
Execute.Assertion.FailWith(
|
|
$"Expected string '{assertions.Subject}' to contain '{value}' after position {lastIndex}."
|
|
);
|
|
}
|
|
|
|
lastIndex = index;
|
|
}
|
|
|
|
return new AndConstraint<StringAssertions>(assertions);
|
|
}
|
|
|
|
public static AndConstraint<StringAssertions> ContainAllInOrder(
|
|
this StringAssertions assertions,
|
|
params string[] values
|
|
) => assertions.ContainAllInOrder((IEnumerable<string>)values);
|
|
}
|