diff --git a/src/Sentry/StringOrRegex.cs b/src/Sentry/StringOrRegex.cs index 1a5e672e8a..c8e316f8e8 100644 --- a/src/Sentry/StringOrRegex.cs +++ b/src/Sentry/StringOrRegex.cs @@ -11,6 +11,11 @@ public class StringOrRegex internal readonly Regex? _regex; internal readonly string? _string; + /// + /// Whether this instance contains a regular expression. + /// + public bool IsRegex => _regex is Regex; + /// /// Constructs a instance. /// diff --git a/test/Sentry.Tests/ApiApprovalTests.Run.DotNet10_0.verified.txt b/test/Sentry.Tests/ApiApprovalTests.Run.DotNet10_0.verified.txt index 56ca748572..cfe8324b12 100644 --- a/test/Sentry.Tests/ApiApprovalTests.Run.DotNet10_0.verified.txt +++ b/test/Sentry.Tests/ApiApprovalTests.Run.DotNet10_0.verified.txt @@ -1358,6 +1358,7 @@ namespace Sentry { public StringOrRegex(System.Text.RegularExpressions.Regex regex) { } public StringOrRegex(string stringOrRegex) { } + public bool IsRegex { get; } public override bool Equals(object? obj) { } public override int GetHashCode() { } public override string ToString() { } diff --git a/test/Sentry.Tests/ApiApprovalTests.Run.DotNet8_0.verified.txt b/test/Sentry.Tests/ApiApprovalTests.Run.DotNet8_0.verified.txt index 56ca748572..cfe8324b12 100644 --- a/test/Sentry.Tests/ApiApprovalTests.Run.DotNet8_0.verified.txt +++ b/test/Sentry.Tests/ApiApprovalTests.Run.DotNet8_0.verified.txt @@ -1358,6 +1358,7 @@ namespace Sentry { public StringOrRegex(System.Text.RegularExpressions.Regex regex) { } public StringOrRegex(string stringOrRegex) { } + public bool IsRegex { get; } public override bool Equals(object? obj) { } public override int GetHashCode() { } public override string ToString() { } diff --git a/test/Sentry.Tests/ApiApprovalTests.Run.DotNet9_0.verified.txt b/test/Sentry.Tests/ApiApprovalTests.Run.DotNet9_0.verified.txt index 56ca748572..cfe8324b12 100644 --- a/test/Sentry.Tests/ApiApprovalTests.Run.DotNet9_0.verified.txt +++ b/test/Sentry.Tests/ApiApprovalTests.Run.DotNet9_0.verified.txt @@ -1358,6 +1358,7 @@ namespace Sentry { public StringOrRegex(System.Text.RegularExpressions.Regex regex) { } public StringOrRegex(string stringOrRegex) { } + public bool IsRegex { get; } public override bool Equals(object? obj) { } public override int GetHashCode() { } public override string ToString() { } diff --git a/test/Sentry.Tests/ApiApprovalTests.Run.Net4_8.verified.txt b/test/Sentry.Tests/ApiApprovalTests.Run.Net4_8.verified.txt index 49ade0556e..c26aac91b1 100644 --- a/test/Sentry.Tests/ApiApprovalTests.Run.Net4_8.verified.txt +++ b/test/Sentry.Tests/ApiApprovalTests.Run.Net4_8.verified.txt @@ -1339,6 +1339,7 @@ namespace Sentry { public StringOrRegex(System.Text.RegularExpressions.Regex regex) { } public StringOrRegex(string stringOrRegex) { } + public bool IsRegex { get; } public override bool Equals(object? obj) { } public override int GetHashCode() { } public override string ToString() { } @@ -2065,4 +2066,4 @@ public static class SentryExceptionExtensions public static void AddSentryContext(this System.Exception ex, string name, System.Collections.Generic.IReadOnlyDictionary data) { } public static void AddSentryTag(this System.Exception ex, string name, string value) { } public static void SetSentryMechanism(this System.Exception ex, string type, string? description = null, bool? handled = default, bool? terminal = default) { } -} \ No newline at end of file +} diff --git a/test/Sentry.Tests/StringOrRegexTests.cs b/test/Sentry.Tests/StringOrRegexTests.cs index 2799f2fffd..ece9e32a75 100644 --- a/test/Sentry.Tests/StringOrRegexTests.cs +++ b/test/Sentry.Tests/StringOrRegexTests.cs @@ -3,17 +3,41 @@ namespace Sentry.Tests; public class StringOrRegexTests { [Fact] - public void StringOrRegex_ImplicitlyConvertsFromString() + public void Constructor_String_IsRegexFalse() + { + var target = new StringOrRegex("abc"); + target.IsRegex.Should().BeFalse(); + } + + [Fact] + public void Constructor_Regex_IsRegexTrue() + { + var target = new StringOrRegex(new Regex("^abc.*ghi$")); + target.IsRegex.Should().BeTrue(); + } + + [Fact] + public void Constructor_NullRegex_IsRegexFalse() + { + var target = new StringOrRegex((Regex)null!); + target.IsRegex.Should().BeFalse(); + target.ToString().Should().BeEmpty(); + } + + [Fact] + public void ImplicitConversion_String_PreservesValueAndType() { StringOrRegex target = "abc"; + target.IsRegex.Should().BeFalse(); target._string.Should().Be("abc"); target._regex.Should().BeNull(); } [Fact] - public void StringOrRegex_ImplicitlyConvertsFromRegex() + public void ImplicitConversion_Regex_PreservesValueAndType() { StringOrRegex target = new Regex("^abc.*ghi$"); + target.IsRegex.Should().BeTrue(); target._string.Should().BeNull(); target._regex.Should().NotBeNull(); target._regex?.ToString().Should().Be("^abc.*ghi$");