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$");