зеркало из https://github.com/dotnet/sdk.git
76 строки
2.8 KiB
C#
76 строки
2.8 KiB
C#
// Licensed to the .NET Foundation under one or more agreements.
|
|
// The .NET Foundation licenses this file to you under the MIT license.
|
|
|
|
using Microsoft.DotNet.ApiCompat;
|
|
|
|
namespace Microsoft.DotNet.ApiCompatibility.Tests
|
|
{
|
|
public class RegexStringTransformerTests
|
|
{
|
|
[Fact]
|
|
public void Transform_CaptureGroupPatternDoesNotMatchInput_ReturnsInput()
|
|
{
|
|
const string CaptureGroupPattern = "(abc)def";
|
|
const string ReplacementPattern = "$1";
|
|
const string Input = "ghi";
|
|
|
|
string output = new RegexStringTransformer(CaptureGroupPattern, ReplacementPattern).Transform(Input);
|
|
|
|
Assert.Equal(Input, output);
|
|
}
|
|
|
|
[Fact]
|
|
public void Transform_ReplacementPatternWithoutCaptureGroups_ReturnsReplacementPattern()
|
|
{
|
|
const string CaptureGroupPattern = "(abc)d*";
|
|
const string ReplacementPattern = "xyz";
|
|
const string Input = "abc";
|
|
|
|
string output = new RegexStringTransformer(CaptureGroupPattern, ReplacementPattern).Transform(Input);
|
|
|
|
Assert.Equal(ReplacementPattern, output);
|
|
}
|
|
|
|
[Fact]
|
|
public void Transform_ReplacementPatternWithTooManyReplacementMarkers_ReturnOutputWithoutTransformedReplacementMarkers()
|
|
{
|
|
const string CaptureGroupPattern = "(abc)(def)ghi";
|
|
const string ReplacementPattern = "1:$1, 2:$2, 3:$3";
|
|
const string Input = "abcdefghi";
|
|
|
|
string output = new RegexStringTransformer(CaptureGroupPattern, ReplacementPattern).Transform(Input);
|
|
|
|
Assert.Equal("1:abc, 2:def, 3:$3", output);
|
|
}
|
|
|
|
[Fact]
|
|
public void Transform_SameNumberOfGroupsAndMarkers_ReturnsExpected()
|
|
{
|
|
const string CaptureGroupPattern = @".+\\(.+)\\(.+)";
|
|
const string ReplacementPattern = "lib/$1/$2";
|
|
const string Input = @"C:\git\runtime\artifacts\bin\System.Linq\Debug\net7.0-android\System.Linq.dll";
|
|
|
|
string output = new RegexStringTransformer(CaptureGroupPattern, ReplacementPattern).Transform(Input);
|
|
|
|
Assert.Equal("lib/net7.0-android/System.Linq.dll", output);
|
|
}
|
|
|
|
[Fact]
|
|
public void Transform_MultiplePatterns_ReturnsExpected()
|
|
{
|
|
var patterns = new (string, string)[]
|
|
{
|
|
(@".+\\(.+)\\(.+)", "lib/$1/$2"),
|
|
(@"(.+)/(net\d.\d)-(.+)/(.+)", "runtimes/$3/$1/$2/$4"),
|
|
("runtimes/windows/", "runtimes/win/")
|
|
};
|
|
|
|
const string Input = @"C:\git\runtime\artifacts\bin\System.Linq\Debug\net7.0-android\System.Linq.dll";
|
|
|
|
string output = new RegexStringTransformer(patterns).Transform(Input);
|
|
|
|
Assert.Equal("runtimes/android/lib/net7.0/System.Linq.dll", output);
|
|
}
|
|
}
|
|
}
|