diff --git a/Extensions.Test/EnumerableExtensionsTests.cs b/Extensions.Test/EnumerableExtensionsTests.cs index 459a5bc..6e186ce 100644 --- a/Extensions.Test/EnumerableExtensionsTests.cs +++ b/Extensions.Test/EnumerableExtensionsTests.cs @@ -340,6 +340,21 @@ public void JoinThrowsArgumentNullExceptionWhenSeparatorIsNull() Assert.ThrowsExactly(() => items.Join(separator)); } + [TestMethod] + [DataRow(NullItemHandling.Remove)] + [DataRow(NullItemHandling.Include)] + [DataRow(NullItemHandling.Throw)] + public void JoinWithNullItemHandlingThrowsArgumentNullExceptionWhenSeparatorIsNull(NullItemHandling nullItemHandling) + { + // Arrange + List items = ["a", "b", "c"]; + string separator = null!; + + // Act & Assert + ArgumentNullException exception = Assert.ThrowsExactly(() => items.Join(separator, nullItemHandling)); + Assert.AreEqual("separator", exception.ParamName); + } + [TestMethod] public void JoinWithNullItemHandlingRemoveRemovesNullItems() { diff --git a/Extensions/EnumerableExtensions.cs b/Extensions/EnumerableExtensions.cs index 636c125..1e5c637 100644 --- a/Extensions/EnumerableExtensions.cs +++ b/Extensions/EnumerableExtensions.cs @@ -259,6 +259,13 @@ public static string Join(this IEnumerable items, string separator, NullIt } #pragma warning restore KTSU0004 // Use Ensure.NotNull instead of manual null check +#pragma warning disable KTSU0004 // Use Ensure.NotNull instead of manual null check + if (separator is null) + { + throw new ArgumentNullException(nameof(separator), "Separator cannot be null."); + } +#pragma warning restore KTSU0004 // Use Ensure.NotNull instead of manual null check + if (nullItemHandling is NullItemHandling.Throw) { if (items.AnyNull())