From b4c4958c249923e5c660ca4e553b8f5bb434bb20 Mon Sep 17 00:00:00 2001 From: Mateusz Cieciura Date: Fri, 24 Mar 2023 18:11:17 +0100 Subject: [PATCH 1/2] Add HasValue and IsEmpty properties --- ValueOf.Tests/HasValue.cs | 71 ++++++++++++++++++++++++++++++ ValueOf.Tests/ValueOf.Tests.csproj | 6 +-- ValueOf/ValueOf.cs | 4 ++ 3 files changed, 78 insertions(+), 3 deletions(-) create mode 100644 ValueOf.Tests/HasValue.cs diff --git a/ValueOf.Tests/HasValue.cs b/ValueOf.Tests/HasValue.cs new file mode 100644 index 0000000..2effe9e --- /dev/null +++ b/ValueOf.Tests/HasValue.cs @@ -0,0 +1,71 @@ +using System; +using NUnit.Framework; + +namespace ValueOf.Tests +{ + public class IntId : ValueOf { } + public class StringId : ValueOf { } + public class GuidId : ValueOf { } + + public class HasValue + { + [Test] + public void HasValueWhenDefaultIntegerIdThenHasValueIsFalseAndIsEmptyIsTrue() + { + var id = new IntId(); + + Assert.IsFalse(id.HasValue); + Assert.IsTrue(id.IsEmpty); + } + + [Test] + public void HasValueWhenEmptyStringIdThenHasValueIsFalseAndIsEmptyIsTrue() + { + var id = new StringId(); + + Assert.IsFalse(id.HasValue); + Assert.IsTrue(id.IsEmpty); + } + + [Test] + public void HasValueWhenDefaultGuidIdThenHasValueIsFalseAndIsEmptyIsTrue() + { + var id = new GuidId(); + + Assert.IsFalse(id.HasValue); + Assert.IsTrue(id.IsEmpty); + } + [Test] + public void HasValueWhenIntegerIdThenHasValueIsTrueAndIsEmptyIsFalse() + { + var value = new Random().Next(1, 100); + var id = IntId.From(value); + + Assert.IsTrue(id.HasValue); + Assert.IsFalse(id.IsEmpty); + Assert.AreEqual(value, id.Value); + } + + [Test] + public void HasValueWhenStringIdThenHasValueIsTrueAndIsEmptyIsFalse() + { + var value = Guid.NewGuid().ToString(); + var id = StringId.From(value); + + Assert.IsTrue(id.HasValue); + Assert.IsFalse(id.IsEmpty); + Assert.AreEqual(value, id.Value); + } + + [Test] + public void HasValueWhenGuidIdThenHasValueIsTrueAndIsEmptyIsFalse() + { + var value = Guid.NewGuid(); + var id = GuidId.From(value); + + Assert.IsTrue(id.HasValue); + Assert.IsFalse(id.IsEmpty); + Assert.AreEqual(value, id.Value); + } + } +} diff --git a/ValueOf.Tests/ValueOf.Tests.csproj b/ValueOf.Tests/ValueOf.Tests.csproj index c5b1259..6407972 100644 --- a/ValueOf.Tests/ValueOf.Tests.csproj +++ b/ValueOf.Tests/ValueOf.Tests.csproj @@ -5,9 +5,9 @@ - - - + + + diff --git a/ValueOf/ValueOf.cs b/ValueOf/ValueOf.cs index e6e5666..c4c28bf 100644 --- a/ValueOf/ValueOf.cs +++ b/ValueOf/ValueOf.cs @@ -41,6 +41,10 @@ static ValueOf() public TValue Value { get; protected set; } + public bool HasValue => Value != null && !Value.Equals(default(TValue)); + + public bool IsEmpty => !HasValue; + public static TThis From(TValue item) { TThis x = Factory(); From c2a9c304e8dc111b7a98433e50b849d2c6d2f484 Mon Sep 17 00:00:00 2001 From: Mateusz Cieciura Date: Sat, 25 Mar 2023 20:28:11 +0100 Subject: [PATCH 2/2] Add extra empty line between tests --- ValueOf.Tests/HasValue.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/ValueOf.Tests/HasValue.cs b/ValueOf.Tests/HasValue.cs index 2effe9e..8f7935f 100644 --- a/ValueOf.Tests/HasValue.cs +++ b/ValueOf.Tests/HasValue.cs @@ -35,6 +35,7 @@ public void HasValueWhenDefaultGuidIdThenHasValueIsFalseAndIsEmptyIsTrue() Assert.IsFalse(id.HasValue); Assert.IsTrue(id.IsEmpty); } + [Test] public void HasValueWhenIntegerIdThenHasValueIsTrueAndIsEmptyIsFalse() {