diff --git a/FrameworkFeatureConstants.props b/FrameworkFeatureConstants.props
index e6a8d50e..cd17d346 100644
--- a/FrameworkFeatureConstants.props
+++ b/FrameworkFeatureConstants.props
@@ -12,6 +12,9 @@
$(DefineConstants);STACK_TRACE_HIDDEN_SUPPORTED;DATE_ONLY_SUPPORTED;TIME_ONLY_SUPPORTED;PRIORITY_QUEUE;TRY_GET_NON_ENUMERATED_COUNT;HTTP_HEADERS_NON_VALIDATED;ELEMENT_AT_INDEX
+
+ $(DefineConstants);GENERIC_MATH;GENERIC_PARSEABLE
+
$(DefineConstants);RANDOM_SHUFFLE
diff --git a/Funcky.Test/Extensions/ParseExtensions/ParseExtensionsTest.Generic.cs b/Funcky.Test/Extensions/ParseExtensions/ParseExtensionsTest.Generic.cs
new file mode 100644
index 00000000..d6277843
--- /dev/null
+++ b/Funcky.Test/Extensions/ParseExtensions/ParseExtensionsTest.Generic.cs
@@ -0,0 +1,36 @@
+#if GENERIC_PARSEABLE
+using System.Globalization;
+
+namespace Funcky.Test.Extensions.ParseExtensions;
+
+public sealed partial class ParseExtensionsTest
+{
+ [Theory]
+ [MemberData(nameof(ParseableDoubleNumbers))]
+ public void ParseGenericStringReturnsTheExpectedDouble(Option expected, string input)
+ {
+ Assert.Equal(expected, input.ParseNumberOrNone(NumberStyles.Number, null));
+ Assert.Equal(expected, input.ParseOrNone(null));
+ }
+
+ [Theory]
+ [MemberData(nameof(ParseableDoubleNumbers))]
+ public void ParseGenericSpanReturnsTheExpectedDouble(Option expected, string input)
+ {
+ Assert.Equal(expected, input.AsSpan().ParseNumberOrNone(NumberStyles.Number, null));
+ Assert.Equal(expected, input.AsSpan().ParseOrNone(null));
+ }
+
+ public static TheoryData