diff --git a/LICENSE b/LICENSE index 48f4c860..8cbeda4b 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -Copyright (c) 2020-2024 Andrei Sergeev, Pavel Moskovoy +Copyright (c) 2020-2025 Andrei Sergeev, Pavel Moskovoy Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/src/core-unit/Unit.Tests.Old/Unit.Tests.Old.csproj b/src/core-unit/Unit.Tests.Old/Unit.Tests.Old.csproj index 9a099dd8..d4741c79 100644 --- a/src/core-unit/Unit.Tests.Old/Unit.Tests.Old.csproj +++ b/src/core-unit/Unit.Tests.Old/Unit.Tests.Old.csproj @@ -11,19 +11,19 @@ false true Andrei Sergeev, Pavel Moskovoy - Copyright © 2020-2024 Andrei Sergeev, Pavel Moskovoy + Copyright © 2020-2025 Andrei Sergeev, Pavel Moskovoy PrimeFuncPack.Core.Tests PrimeFuncPack.Core.Unit.Tests.Old - + all runtime; build; native; contentfiles; analyzers; buildtransitive - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/core-unit/Unit.Tests.Old/UnitTests/UnitTests.Comparison.Obsolete.cs b/src/core-unit/Unit.Tests.Old/UnitTests/UnitTests.Comparison.Obsolete.cs new file mode 100644 index 00000000..66d24e1f --- /dev/null +++ b/src/core-unit/Unit.Tests.Old/UnitTests/UnitTests.Comparison.Obsolete.cs @@ -0,0 +1,52 @@ +using System; +using System.Collections.Generic; +using static PrimeFuncPack.UnitTest.TestData; + +namespace PrimeFuncPack.Core.Tests; + +partial class UnitTests +{ + [Obsolete] + [Test] + public void CompareTo_Obj_Unit_ExpectZero() + { + object? obj = default(Unit); + + var actual = Unit.Value.CompareTo(obj); + Assert.That(actual, Is.Zero); + } + + [Obsolete] + [Test] + public void CompareTo_Obj_Null_ExpectGreaterThanZero_ExpectOne() + { + object? obj = null; + + var actual = Unit.Value.CompareTo(obj); + + Assert.That(actual, Is.Positive); + Assert.That(actual, Is.EqualTo(1)); + } + + [Obsolete] + [Test] + [TestCaseSource(nameof(CompareTo_Obj_NotUnit_ExpectArgumentException_TestCases))] + public void CompareTo_Obj_NotUnit_ExpectArgumentException(object obj) + { + var ex = Assert.Throws(() => _ = Unit.Value.CompareTo(obj))!; + + Assert.That(ex.ParamName, Is.EqualTo("obj")); + + var containsExpectedMessage = ex.Message.Contains("Object must be of type Unit.", StringComparison.Ordinal); + Assert.That(containsExpectedMessage, Is.True); + } + + private static IEnumerable CompareTo_Obj_NotUnit_ExpectArgumentException_TestCases() + { + yield return new object(); + yield return PlusFifteen; + yield return PlusFifteenIdRefType; + yield return SomeTextStructType; + yield return Array.Empty(); + } +} diff --git a/src/core-unit/Unit.Tests.Old/UnitTests/UnitTests.Comparison.cs b/src/core-unit/Unit.Tests.Old/UnitTests/UnitTests.Comparison.cs index e12b89df..33a7cc63 100644 --- a/src/core-unit/Unit.Tests.Old/UnitTests/UnitTests.Comparison.cs +++ b/src/core-unit/Unit.Tests.Old/UnitTests/UnitTests.Comparison.cs @@ -15,38 +15,6 @@ public void CompareTo_Typed_ExpectZero() Assert.That(actual, Is.Zero); } - [Test] - public void CompareTo_Obj_Unit_ExpectZero() - { - object? obj = default(Unit); - - var actual = Unit.Value.CompareTo(obj); - Assert.That(actual, Is.Zero); - } - - [Test] - public void CompareTo_Obj_Null_ExpectGreaterThanZero_ExpectOne() - { - object? obj = null; - - var actual = Unit.Value.CompareTo(obj); - - Assert.That(actual, Is.Positive); - Assert.That(actual, Is.EqualTo(1)); - } - - [Test] - [TestCaseSource(nameof(CompareTo_Obj_NotUnit_ExpectArgumentException_TestCases))] - public void CompareTo_Obj_NotUnit_ExpectArgumentException(object obj) - { - var ex = Assert.Throws(() => _ = Unit.Value.CompareTo(obj))!; - - Assert.That(ex.ParamName, Is.EqualTo("obj")); - - var containsExpectedMessage = ex.Message.Contains("The object is not Unit.", StringComparison.Ordinal); - Assert.That(containsExpectedMessage, Is.True); - } - [Test] public void Compare_Static_ExpectZero() { @@ -96,13 +64,4 @@ public void Compare_Operator_GreaterThan_ExpectFalse() var actual = left > right; Assert.That(actual, Is.False); } - - private static IEnumerable CompareTo_Obj_NotUnit_ExpectArgumentException_TestCases() - { - yield return new object(); - yield return PlusFifteen; - yield return PlusFifteenIdRefType; - yield return SomeTextStructType; - yield return Array.Empty(); - } } diff --git a/src/core-unit/Unit.Tests/Unit.Tests.csproj b/src/core-unit/Unit.Tests/Unit.Tests.csproj index bab840c9..bfd81daf 100644 --- a/src/core-unit/Unit.Tests/Unit.Tests.csproj +++ b/src/core-unit/Unit.Tests/Unit.Tests.csproj @@ -11,7 +11,7 @@ false true Andrei Sergeev, Pavel Moskovoy - Copyright © 2020-2024 Andrei Sergeev, Pavel Moskovoy + Copyright © 2020-2025 Andrei Sergeev, Pavel Moskovoy PrimeFuncPack.Core.Tests PrimeFuncPack.Core.Unit.Tests @@ -21,7 +21,7 @@ - + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/src/core-unit/Unit/Unit.csproj b/src/core-unit/Unit/Unit.csproj index 3eddeb21..93466ed8 100644 --- a/src/core-unit/Unit/Unit.csproj +++ b/src/core-unit/Unit/Unit.csproj @@ -15,11 +15,11 @@ https://github.com/pfpack/pfpack-core-unit pfpack Andrei Sergeev, Pavel Moskovoy - Copyright © 2020-2024 Andrei Sergeev, Pavel Moskovoy + Copyright © 2020-2025 Andrei Sergeev, Pavel Moskovoy PrimeFuncPack Core.Unit is a core library for .NET consisting of Unit type targeted for use in functional programming. System PrimeFuncPack.Core.Unit - 3.0.1 + 3.0.2-rc.1 diff --git a/src/core-unit/Unit/Unit/Unit.Comparison.Obsolete.cs b/src/core-unit/Unit/Unit/Unit.Comparison.Obsolete.cs new file mode 100644 index 00000000..7867e69b --- /dev/null +++ b/src/core-unit/Unit/Unit/Unit.Comparison.Obsolete.cs @@ -0,0 +1,13 @@ +namespace System; + +// TODO: Remove Nongeneric IComparable declaration/implementation in v4.0 +partial struct Unit : IComparable +{ + [Obsolete("This method is obsolete. Call CompareTo(Unit) instead.")] + public int CompareTo(object? obj) => obj switch + { + null => 1, + Unit => default, + _ => throw new ArgumentException($"Object must be of type {nameof(Unit)}.", nameof(obj)) + }; +} diff --git a/src/core-unit/Unit/Unit/Unit.Comparison.cs b/src/core-unit/Unit/Unit/Unit.Comparison.cs index 91dc930b..5c9ee03e 100644 --- a/src/core-unit/Unit/Unit/Unit.Comparison.cs +++ b/src/core-unit/Unit/Unit/Unit.Comparison.cs @@ -3,13 +3,4 @@ partial struct Unit { public int CompareTo(Unit other) => default; - - public int CompareTo(object? obj) => obj switch - { - null => 1, - - Unit => default, - - _ => throw new ArgumentException("The object is not Unit.", nameof(obj)) - }; } diff --git a/src/core-unit/Unit/Unit/Unit.cs b/src/core-unit/Unit/Unit/Unit.cs index dcddb532..4f26a02f 100644 --- a/src/core-unit/Unit/Unit/Unit.cs +++ b/src/core-unit/Unit/Unit/Unit.cs @@ -3,6 +3,6 @@ namespace System; [JsonConverter(typeof(UnitJsonConverter))] -public readonly partial struct Unit : IEquatable, IComparable, IComparable +public readonly partial struct Unit : IEquatable, IComparable { } diff --git a/src/core-unit/Unit/UnitJsonConverter/UnitJsonConverter.cs b/src/core-unit/Unit/UnitJsonConverter/UnitJsonConverter.cs index 6472a1f6..d7419761 100644 --- a/src/core-unit/Unit/UnitJsonConverter/UnitJsonConverter.cs +++ b/src/core-unit/Unit/UnitJsonConverter/UnitJsonConverter.cs @@ -9,21 +9,16 @@ public override Unit Read(ref Utf8JsonReader reader, Type typeToConvert, JsonSer { switch (reader.TokenType) { - case JsonTokenType.StartObject: - case JsonTokenType.StartArray: + case JsonTokenType.StartObject or JsonTokenType.StartArray: reader.Skip(); return default; - case JsonTokenType.String: - case JsonTokenType.Number: - case JsonTokenType.True: - case JsonTokenType.False: - case JsonTokenType.Null: + case JsonTokenType.String or JsonTokenType.Number or JsonTokenType.True or JsonTokenType.False or JsonTokenType.Null: return default; case var unexpected: throw new JsonException($"An unexpected JSON token type ({unexpected})."); - }; + } } public override void Write(Utf8JsonWriter writer, Unit value, JsonSerializerOptions options)