diff --git a/src/NetEvolve.FluentValue/Constraints/DefaultConstraint.cs b/src/NetEvolve.FluentValue/Constraints/DefaultConstraint.cs index 24d0d01..c2d03b5 100644 --- a/src/NetEvolve.FluentValue/Constraints/DefaultConstraint.cs +++ b/src/NetEvolve.FluentValue/Constraints/DefaultConstraint.cs @@ -8,7 +8,7 @@ internal sealed class DefaultConstraint : ConstraintBase public override bool IsSatisfiedBy(object? value) => value?.GetType() switch { - { IsValueType: true } valueType => TypeExtensions.GetDefault(valueType)?.Equals(value) ?? false, + { IsValueType: true } valueType => Equals(TypeExtensions.GetDefault(valueType), value), _ => false, }; diff --git a/src/NetEvolve.FluentValue/Constraints/NotDefaultConstraint.cs b/src/NetEvolve.FluentValue/Constraints/NotDefaultConstraint.cs index 1ac1059..4fd65c9 100644 --- a/src/NetEvolve.FluentValue/Constraints/NotDefaultConstraint.cs +++ b/src/NetEvolve.FluentValue/Constraints/NotDefaultConstraint.cs @@ -8,7 +8,7 @@ internal sealed class NotDefaultConstraint : ConstraintBase public override bool IsSatisfiedBy(object? value) => value?.GetType() switch { - { IsValueType: true } valueType => !TypeExtensions.GetDefault(valueType)?.Equals(value) ?? false, + { IsValueType: true } valueType => !Equals(TypeExtensions.GetDefault(valueType), value), _ => true, }; diff --git a/src/NetEvolve.FluentValue/TypeExtensions.cs b/src/NetEvolve.FluentValue/TypeExtensions.cs index c8184e1..23353a3 100644 --- a/src/NetEvolve.FluentValue/TypeExtensions.cs +++ b/src/NetEvolve.FluentValue/TypeExtensions.cs @@ -4,18 +4,6 @@ internal static class TypeExtensions { - internal static object? GetDefault(this Type value) - { - if (!value.IsValueType) - { - return null; - } - - var underlying = Nullable.GetUnderlyingType(value); - if (underlying is not null) - { - return null; - } - return Activator.CreateInstance(value)!; - } + // Nullable yields null from Activator.CreateInstance, so no explicit handling is needed. + internal static object? GetDefault(this Type value) => value.IsValueType ? Activator.CreateInstance(value) : null; } diff --git a/tests/NetEvolve.FluentValue.Tests.Unit/TypeExtensionsTests.cs b/tests/NetEvolve.FluentValue.Tests.Unit/TypeExtensionsTests.cs index 1bb5a55..390cf7e 100644 --- a/tests/NetEvolve.FluentValue.Tests.Unit/TypeExtensionsTests.cs +++ b/tests/NetEvolve.FluentValue.Tests.Unit/TypeExtensionsTests.cs @@ -7,7 +7,7 @@ public class TypeExtensionsTests { [Test] [MethodDataSource(nameof(GetDefaultData))] - public async Task IsNullableType_ShouldReturnTrue_WhenTypeIsNullable(object? expected, Type type) + public async Task GetDefault_ShouldReturnExpected(object? expected, Type type) { // Arrange & Act var result = TypeExtensions.GetDefault(type);