提交 21f3b5c6 编写于 作者: C Cyrus Najmabadi

Add tests that validate a bunch of different pattern detection codepaths.

上级 8a8747fc
......@@ -2745,6 +2745,162 @@ void Goo()
Regex.Anchor("^"));
}
[WpfFact, Trait(Traits.Feature, Traits.Features.Classification)]
public async Task TestRegex4()
{
await TestAsync(
@"
using System.Text.RegularExpressions;
class Program
{
void Goo()
{
var r = /* lang=regex */@""$\a(?#comment)"";
}
}",
Keyword("var"),
Regex.Anchor("$"),
Regex.OtherEscape("\\"),
Regex.OtherEscape("a"),
Regex.Comment("(?#comment)"));
}
[WpfFact, Trait(Traits.Feature, Traits.Features.Classification)]
public async Task TestRegex5()
{
await TestAsync(
@"
using System.Text.RegularExpressions;
class Program
{
void Goo()
{
var r = /* lang=regexp */@""$\a(?#comment)"";
}
}",
Keyword("var"),
Regex.Anchor("$"),
Regex.OtherEscape("\\"),
Regex.OtherEscape("a"),
Regex.Comment("(?#comment)"));
}
[WpfFact, Trait(Traits.Feature, Traits.Features.Classification)]
public async Task TestRegex6()
{
await TestAsync(
@"
using System.Text.RegularExpressions;
class Program
{
void Goo()
{
var r = /* lang=regexp */@""$\a(?#comment) # not end of line comment"";
}
}",
Keyword("var"),
Regex.Anchor("$"),
Regex.OtherEscape("\\"),
Regex.OtherEscape("a"),
Regex.Comment("(?#comment)"),
Regex.Text(" # not end of line comment"));
}
[WpfFact, Trait(Traits.Feature, Traits.Features.Classification)]
public async Task TestRegex7()
{
await TestAsync(
@"
using System.Text.RegularExpressions;
class Program
{
void Goo()
{
var r = /* lang=regexp,ignorepatternwhitespace */@""$\a(?#comment) # is end of line comment"";
}
}",
Keyword("var"),
Regex.Anchor("$"),
Regex.OtherEscape("\\"),
Regex.OtherEscape("a"),
Regex.Comment("(?#comment)"),
Regex.Comment("# is end of line comment"));
}
[WpfFact, Trait(Traits.Feature, Traits.Features.Classification)]
public async Task TestRegex8()
{
await TestAsync(
@"
using System.Text.RegularExpressions;
class Program
{
void Goo()
{
var r = /* lang = regexp , ignorepatternwhitespace */@""$\a(?#comment) # is end of line comment"";
}
}",
Keyword("var"),
Regex.Anchor("$"),
Regex.OtherEscape("\\"),
Regex.OtherEscape("a"),
Regex.Comment("(?#comment)"),
Regex.Comment("# is end of line comment"));
}
[WpfFact, Trait(Traits.Feature, Traits.Features.Classification)]
public async Task TestRegex9()
{
await TestAsync(
@"
using System.Text.RegularExpressions;
class Program
{
void Goo()
{
var r = new Regex(@""$\a(?#comment) # is end of line comment"", RegexOptions.IgnorePatternWhitespace);
}
}",
Keyword("var"),
Class("Regex"),
Regex.Anchor("$"),
Regex.OtherEscape("\\"),
Regex.OtherEscape("a"),
Regex.Comment("(?#comment)"),
Regex.Comment("# is end of line comment"),
Enum("RegexOptions"),
EnumMember("IgnorePatternWhitespace"));
}
[WpfFact, Trait(Traits.Feature, Traits.Features.Classification)]
public async Task TestRegex10()
{
await TestAsync(
@"
using System.Text.RegularExpressions;
class Program
{
void Goo()
{
var r = new Regex(@""$\a(?#comment) # is not end of line comment"");
}
}",
Keyword("var"),
Class("Regex"),
Regex.Anchor("$"),
Regex.OtherEscape("\\"),
Regex.OtherEscape("a"),
Regex.Comment("(?#comment)"),
Regex.Text(" # is not end of line comment"));
}
[Fact, Trait(Traits.Feature, Traits.Features.Classification)]
public async Task TestUnmanagedConstraint_LocalFunction_Keyword()
{
......
// Copyright (c) Microsoft. All Rights Reserved. Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Linq;
namespace Microsoft.CodeAnalysis.Editor.UnitTests.Classification
{
......@@ -35,6 +36,14 @@ public override int GetHashCode()
public override string ToString()
{
if (ClassificationName.StartsWith("regex"))
{
var remainder = ClassificationName.Substring("regex - ".Length);
var parts = remainder.Split(' ');
var type = string.Join("", parts.Select(Capitalize));
return "Regex." + $"{type}(\"{Text}\")";
}
switch (ClassificationName)
{
case "punctuation":
......@@ -68,8 +77,11 @@ public override string ToString()
goto default;
default:
return $"{char.ToUpperInvariant(ClassificationName[0])}{ClassificationName.Substring(1)}(\"{Text}\")";
return $"{Capitalize(ClassificationName)}(\"{Text}\")";
}
}
private static string Capitalize(string val)
=> char.ToUpperInvariant(val[0]) + val.Substring(1);
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册