diff --git a/src/primitives-linq/Primitives.Linq/Primitives.Linq.csproj b/src/primitives-linq/Primitives.Linq/Primitives.Linq.csproj index 6f233c1..4754c78 100644 --- a/src/primitives-linq/Primitives.Linq/Primitives.Linq.csproj +++ b/src/primitives-linq/Primitives.Linq/Primitives.Linq.csproj @@ -17,7 +17,7 @@ PrimeFuncPack Primitives.Linq is a core library for .NET consisting of useful extensions making work with Linq easier. System PrimeFuncPack.Primitives.Linq - 2.0.0-rc.1.0.1 + 2.0.0-rc.1.0.2 diff --git a/src/primitives-pipeline/Primitives.Pipeline/Primitives.Pipeline.csproj b/src/primitives-pipeline/Primitives.Pipeline/Primitives.Pipeline.csproj index 13b1367..9ad8798 100644 --- a/src/primitives-pipeline/Primitives.Pipeline/Primitives.Pipeline.csproj +++ b/src/primitives-pipeline/Primitives.Pipeline/Primitives.Pipeline.csproj @@ -17,7 +17,7 @@ PrimeFuncPack Primitives.Pipeline is a core library for .NET consisting of useful extensions making work with functional pipelines easier. System PrimeFuncPack.Primitives.Pipeline - 2.0.0-rc.1.0.1 + 2.0.0-rc.1.0.2 diff --git a/src/primitives-predicates/Primitives.Predicates/Primitives.Predicates.csproj b/src/primitives-predicates/Primitives.Predicates/Primitives.Predicates.csproj index 022f6a3..5137ea0 100644 --- a/src/primitives-predicates/Primitives.Predicates/Primitives.Predicates.csproj +++ b/src/primitives-predicates/Primitives.Predicates/Primitives.Predicates.csproj @@ -17,7 +17,7 @@ PrimeFuncPack Primitives.Predicates is a core library for .NET consisting of useful extensions and predicates making work with the nullable feature easier. System PrimeFuncPack.Primitives.Predicates - 2.0.0-rc.1.0.1 + 2.0.0-rc.1.0.2 diff --git a/src/primitives-strings/Primitives.Strings.Tests/StringExtensions.Tests/ToStringOrEmpty_Obsolete.cs b/src/primitives-strings/Primitives.Strings.Tests/StringExtensions.Tests/ToStringOrEmpty_Obsolete.cs new file mode 100644 index 0000000..9529d14 --- /dev/null +++ b/src/primitives-strings/Primitives.Strings.Tests/StringExtensions.Tests/ToStringOrEmpty_Obsolete.cs @@ -0,0 +1,35 @@ +using NUnit.Framework; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; + +namespace PrimeFuncPack.Primitives.Tests; + +partial class StringExtensionsTests +{ + [Test] + public void ToStringOrEmpty_ExpectIsObsoleteWithError() + { + const string expectedObsoleteMessage = "This method is obsolete. Consider to call obj?.ToString().OrEmpty() instead."; + + IReadOnlyCollection methods = typeof(StringExtensions) + .GetMethods(BindingFlags.Public | BindingFlags.Static) + .Where(method => method.Name == nameof(StringExtensions.ToStringOrEmpty)) + .ToArray(); + + Assert.AreEqual(2, methods.Count); + + Assert.IsTrue( + methods.All( + method => method.CustomAttributes.Any( + attr + => + attr.AttributeType == typeof(ObsoleteAttribute) && + attr.ConstructorArguments.Count == 2 && + attr.ConstructorArguments[0].ArgumentType == typeof(string) && + attr.ConstructorArguments[0].Value is expectedObsoleteMessage && + attr.ConstructorArguments[1].ArgumentType == typeof(bool) && + attr.ConstructorArguments[1].Value is true))); + } +} diff --git a/src/primitives-strings/Primitives.Strings.Tests/StringExtensions.Tests/ToStringOrEmpty_Ref.cs b/src/primitives-strings/Primitives.Strings.Tests/StringExtensions.Tests/ToStringOrEmpty_Ref.cs index a5bc877..e9f1add 100644 --- a/src/primitives-strings/Primitives.Strings.Tests/StringExtensions.Tests/ToStringOrEmpty_Ref.cs +++ b/src/primitives-strings/Primitives.Strings.Tests/StringExtensions.Tests/ToStringOrEmpty_Ref.cs @@ -6,6 +6,7 @@ namespace PrimeFuncPack.Primitives.Tests; partial class StringExtensionsTests { + [Obsolete] [Test] public void ToStringOrEmpty_Ref_SourceIsNull_ExpectEmpty() { @@ -15,6 +16,7 @@ public void ToStringOrEmpty_Ref_SourceIsNull_ExpectEmpty() Assert.IsEmpty(actual); } + [Obsolete] [Test] public void ToStringOrEmpty_Ref_SourceToStringIsNull_ExpectEmpty() { @@ -24,6 +26,7 @@ public void ToStringOrEmpty_Ref_SourceToStringIsNull_ExpectEmpty() Assert.IsEmpty(actual); } + [Obsolete] [Test] [TestCase(EmptyString)] [TestCase(WhiteSpaceString)] diff --git a/src/primitives-strings/Primitives.Strings.Tests/StringExtensions.Tests/ToStringOrEmpty_StructNullable.cs b/src/primitives-strings/Primitives.Strings.Tests/StringExtensions.Tests/ToStringOrEmpty_StructNullable.cs index 2cc26d7..26cd032 100644 --- a/src/primitives-strings/Primitives.Strings.Tests/StringExtensions.Tests/ToStringOrEmpty_StructNullable.cs +++ b/src/primitives-strings/Primitives.Strings.Tests/StringExtensions.Tests/ToStringOrEmpty_StructNullable.cs @@ -6,6 +6,7 @@ namespace PrimeFuncPack.Primitives.Tests; partial class StringExtensionsTests { + [Obsolete] [Test] public void ToStringOrEmpty_StructNullable_SourceIsNull_ExpectEmpty() { @@ -15,6 +16,7 @@ public void ToStringOrEmpty_StructNullable_SourceIsNull_ExpectEmpty() Assert.IsEmpty(actual); } + [Obsolete] [Test] public void ToStringOrEmpty_StructNullable_SourceToStringIsNull_ExpectEmpty() { @@ -24,6 +26,7 @@ public void ToStringOrEmpty_StructNullable_SourceToStringIsNull_ExpectEmpty() Assert.IsEmpty(actual); } + [Obsolete] [Test] [TestCase(EmptyString)] [TestCase(WhiteSpaceString)] diff --git a/src/primitives-strings/Primitives.Strings.Tests/Strings.Tests/ToStringOrEmpty_Obsolete.cs b/src/primitives-strings/Primitives.Strings.Tests/Strings.Tests/ToStringOrEmpty_Obsolete.cs new file mode 100644 index 0000000..b46650d --- /dev/null +++ b/src/primitives-strings/Primitives.Strings.Tests/Strings.Tests/ToStringOrEmpty_Obsolete.cs @@ -0,0 +1,35 @@ +using NUnit.Framework; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Reflection; + +namespace PrimeFuncPack.Primitives.Tests; + +partial class StringsTests +{ + [Test] + public void ToStringOrEmpty_ExpectIsObsoleteWithError() + { + const string expectedObsoleteMessage = "This method is obsolete. Consider to call obj?.ToString().OrEmpty() instead."; + + IReadOnlyCollection methods = typeof(Strings) + .GetMethods(BindingFlags.Public | BindingFlags.Static) + .Where(method => method.Name == nameof(Strings.ToStringOrEmpty)) + .ToArray(); + + Assert.AreEqual(2, methods.Count); + + Assert.IsTrue( + methods.All( + method => method.CustomAttributes.Any( + attr + => + attr.AttributeType == typeof(ObsoleteAttribute) && + attr.ConstructorArguments.Count == 2 && + attr.ConstructorArguments[0].ArgumentType == typeof(string) && + attr.ConstructorArguments[0].Value is expectedObsoleteMessage && + attr.ConstructorArguments[1].ArgumentType == typeof(bool) && + attr.ConstructorArguments[1].Value is true))); + } +} diff --git a/src/primitives-strings/Primitives.Strings.Tests/Strings.Tests/ToStringOrEmpty_Ref.cs b/src/primitives-strings/Primitives.Strings.Tests/Strings.Tests/ToStringOrEmpty_Ref.cs index b1ce47f..1382e10 100644 --- a/src/primitives-strings/Primitives.Strings.Tests/Strings.Tests/ToStringOrEmpty_Ref.cs +++ b/src/primitives-strings/Primitives.Strings.Tests/Strings.Tests/ToStringOrEmpty_Ref.cs @@ -6,6 +6,7 @@ namespace PrimeFuncPack.Primitives.Tests; partial class StringsTests { + [Obsolete] [Test] public void ToStringOrEmpty_Ref_SourceIsNull_ExpectEmpty() { @@ -15,6 +16,7 @@ public void ToStringOrEmpty_Ref_SourceIsNull_ExpectEmpty() Assert.IsEmpty(actual); } + [Obsolete] [Test] public void ToStringOrEmpty_Ref_SourceToStringIsNull_ExpectEmpty() { @@ -24,6 +26,7 @@ public void ToStringOrEmpty_Ref_SourceToStringIsNull_ExpectEmpty() Assert.IsEmpty(actual); } + [Obsolete] [Test] [TestCase(EmptyString)] [TestCase(WhiteSpaceString)] diff --git a/src/primitives-strings/Primitives.Strings.Tests/Strings.Tests/ToStringOrEmpty_StructNullable.cs b/src/primitives-strings/Primitives.Strings.Tests/Strings.Tests/ToStringOrEmpty_StructNullable.cs index 0d10402..be569cf 100644 --- a/src/primitives-strings/Primitives.Strings.Tests/Strings.Tests/ToStringOrEmpty_StructNullable.cs +++ b/src/primitives-strings/Primitives.Strings.Tests/Strings.Tests/ToStringOrEmpty_StructNullable.cs @@ -6,6 +6,7 @@ namespace PrimeFuncPack.Primitives.Tests; partial class StringsTests { + [Obsolete] [Test] public void ToStringOrEmpty_StructNullable_SourceIsNull_ExpectEmpty() { @@ -15,6 +16,7 @@ public void ToStringOrEmpty_StructNullable_SourceIsNull_ExpectEmpty() Assert.IsEmpty(actual); } + [Obsolete] [Test] public void ToStringOrEmpty_StructNullable_SourceToStringIsNull_ExpectEmpty() { @@ -24,6 +26,7 @@ public void ToStringOrEmpty_StructNullable_SourceToStringIsNull_ExpectEmpty() Assert.IsEmpty(actual); } + [Obsolete] [Test] [TestCase(EmptyString)] [TestCase(WhiteSpaceString)] diff --git a/src/primitives-strings/Primitives.Strings/InternalObsolete/InternalObsoleteErrors.cs b/src/primitives-strings/Primitives.Strings/InternalObsolete/InternalObsoleteErrors.cs new file mode 100644 index 0000000..2154fe5 --- /dev/null +++ b/src/primitives-strings/Primitives.Strings/InternalObsolete/InternalObsoleteErrors.cs @@ -0,0 +1,6 @@ +namespace System; + +internal static class InternalObsoleteErrors +{ + public const bool ToStringOrEmpty = true; +} diff --git a/src/primitives-strings/Primitives.Strings/InternalObsolete/InternalObsoleteMessages.cs b/src/primitives-strings/Primitives.Strings/InternalObsolete/InternalObsoleteMessages.cs new file mode 100644 index 0000000..09c26a5 --- /dev/null +++ b/src/primitives-strings/Primitives.Strings/InternalObsolete/InternalObsoleteMessages.cs @@ -0,0 +1,6 @@ +namespace System; + +internal static class InternalObsoleteMessages +{ + public const string ToStringOrEmpty = "This method is obsolete. Consider to call obj?.ToString().OrEmpty() instead."; +} diff --git a/src/primitives-strings/Primitives.Strings/Primitives.Strings.csproj b/src/primitives-strings/Primitives.Strings/Primitives.Strings.csproj index a036b72..21bf34f 100644 --- a/src/primitives-strings/Primitives.Strings/Primitives.Strings.csproj +++ b/src/primitives-strings/Primitives.Strings/Primitives.Strings.csproj @@ -17,7 +17,7 @@ PrimeFuncPack Primitives.Strings is a core library for .NET consisting of useful extensions making work with strings easier. System PrimeFuncPack.Primitives.Strings - 2.0.0-rc.1.0.1 + 2.0.0-rc.2.0.0 diff --git a/src/primitives-strings/Primitives.Strings/StringExtensions.cs b/src/primitives-strings/Primitives.Strings/StringExtensions.cs index 46ad447..33bfa0f 100644 --- a/src/primitives-strings/Primitives.Strings/StringExtensions.cs +++ b/src/primitives-strings/Primitives.Strings/StringExtensions.cs @@ -19,11 +19,15 @@ public static string OrEmpty(this string? value) => Strings.OrNullIfWhiteSpace(value); + // TODO: Consider to delete the method in v3.0 + [Obsolete(InternalObsoleteMessages.ToStringOrEmpty, error: InternalObsoleteErrors.ToStringOrEmpty)] [MethodImpl(MethodImplOptions.AggressiveInlining)] public static string ToStringOrEmpty(this T? value) => Strings.ToStringOrEmpty(value); + // TODO: Consider to delete the method in v3.0 + [Obsolete(InternalObsoleteMessages.ToStringOrEmpty, error: InternalObsoleteErrors.ToStringOrEmpty)] [MethodImpl(MethodImplOptions.AggressiveInlining)] public static string ToStringOrEmpty(this T? value) where T : struct => diff --git a/src/primitives-strings/Primitives.Strings/Strings.cs b/src/primitives-strings/Primitives.Strings/Strings.cs index b822964..4f40fbe 100644 --- a/src/primitives-strings/Primitives.Strings/Strings.cs +++ b/src/primitives-strings/Primitives.Strings/Strings.cs @@ -28,11 +28,15 @@ public static string OrEmpty(string? value) ? null : value; + // TODO: Consider to delete the method in v3.0 + [Obsolete(InternalObsoleteMessages.ToStringOrEmpty, error: InternalObsoleteErrors.ToStringOrEmpty)] [MethodImpl(MethodImplOptions.AggressiveInlining)] public static string ToStringOrEmpty(T? value) => value?.ToString() ?? Empty; + // TODO: Consider to delete the method in v3.0 + [Obsolete(InternalObsoleteMessages.ToStringOrEmpty, error: InternalObsoleteErrors.ToStringOrEmpty)] [MethodImpl(MethodImplOptions.AggressiveInlining)] public static string ToStringOrEmpty(T? value) where T : struct => diff --git a/src/primitives/Primitives/Primitives.csproj b/src/primitives/Primitives/Primitives.csproj index 192fae2..e6c12b7 100644 --- a/src/primitives/Primitives/Primitives.csproj +++ b/src/primitives/Primitives/Primitives.csproj @@ -17,7 +17,7 @@ PrimeFuncPack Primitives is a core library for .NET consisting of useful extensions and predicates making work with functional pipelines, Linq, strings, the nullable feature, etc. easier. System PrimeFuncPack.Primitives - 2.0.0-rc.1.0.1 + 2.0.0-rc.2.0.0 @@ -32,10 +32,10 @@ - - - - + + + +