Add NotNull Empty and tests (#51)

This commit is contained in:
Adam Hathcock
2024-07-24 15:05:44 +01:00
committed by GitHub
parent ce3e591a47
commit 02f75c717c
6 changed files with 110 additions and 1 deletions
@@ -52,4 +52,13 @@ public static class NotNullExtensions
}
return obj.Value;
}
public static IEnumerable<T> Empty<T>(this IEnumerable<T>? obj)
{
if (obj is null)
{
return Enumerable.Empty<T>();
}
return obj;
}
}
@@ -358,6 +358,7 @@
"Microsoft.NET.Test.Sdk": "[17.10.0, )",
"NUnit": "[4.1.0, )",
"NUnit3TestAdapter": "[4.5.0, )",
"Shouldly": "[4.2.1, )",
"Speckle.Core": "[1.0.0, )",
"Speckle.Transports.Disk": "[1.0.0, )",
"altcover": "[8.8.74, )"
@@ -0,0 +1,61 @@
using NUnit.Framework;
using Shouldly;
using Speckle.Core.Common;
namespace Speckle.Core.Tests.Unit.Common;
public class NotNullTests
{
[TestCase(null, 0)]
[TestCase(new string[0], 0)]
[TestCase(new[] { "yay" }, 1)]
public void Empty(string[]? test, int length)
{
var list = NotNullExtensions.Empty(test).ToList();
list.Count.ShouldBe(length);
}
[Test]
public void NotNullClass()
{
var t = NotNullExtensions.NotNull("test");
t.ShouldNotBeNull().ShouldBe("test");
}
[Test]
public void NotNullStruct()
{
var t = NotNullExtensions.NotNull<int>(2);
t.ShouldBe(2);
}
[Test]
public async Task NotNullClass_Task()
{
var t = await NotNullExtensions.NotNull(Task.FromResult<string?>("test"));
t.ShouldNotBeNull().ShouldBe("test");
}
[Test]
public async Task NotNullStruct_Task()
{
var t = await NotNullExtensions.NotNull(Task.FromResult<int?>(2));
t.ShouldBe(2);
}
[Test]
public void NotNullClass_Exception() =>
Assert.Throws<ArgumentNullException>(() => NotNullExtensions.NotNull((string?)null));
[Test]
public void NotNullStruct_Exception() =>
Assert.Throws<ArgumentNullException>(() => NotNullExtensions.NotNull((int?)null));
[Test]
public void NotNullClass_Task_Exception() =>
Assert.ThrowsAsync<ArgumentNullException>(() => NotNullExtensions.NotNull(Task.FromResult((string?)null)));
[Test]
public void NotNullStruct_Task_Exception() =>
Assert.ThrowsAsync<ArgumentNullException>(() => NotNullExtensions.NotNull(Task.FromResult((int?)null)));
}
@@ -1,4 +1,4 @@
using NUnit.Framework;
using NUnit.Framework;
using Serilog.Context;
using Serilog.Events;
using Speckle.Core.Logging;
@@ -11,6 +11,7 @@
<PackageReference Include="Microsoft.NET.Test.Sdk" />
<PackageReference Include="NUnit" />
<PackageReference Include="NUnit3TestAdapter" />
<PackageReference Include="Shouldly" />
</ItemGroup>
<ItemGroup>
@@ -52,12 +52,36 @@
"resolved": "1.14.1",
"contentHash": "mOOmFYwad3MIOL14VCjj02LljyF1GNw1wP0YVlxtcPvqdxjGGMNdNJJxHptlry3MOd8b40Flm8RPOM8JOlN2sQ=="
},
"Shouldly": {
"type": "Direct",
"requested": "[4.2.1, )",
"resolved": "4.2.1",
"contentHash": "dKAKiSuhLKqD2TXwLKtqNg1nwzJcIKOOMncZjk9LYe4W+h+SCftpWdxwR79YZUIHMH+3Vu9s0s0UHNrgICLwRQ==",
"dependencies": {
"DiffEngine": "11.3.0",
"EmptyFiles": "4.4.0"
}
},
"Speckle.InterfaceGenerator": {
"type": "Direct",
"requested": "[0.9.5, )",
"resolved": "0.9.5",
"contentHash": "oU/L7pN1R7q8KkbrpQ3WJnHirPHqn+9DEA7asOcUiggV5dzVg1A/VYs7GOSusD24njxXh03tE3a2oTLOjt3cVg=="
},
"DiffEngine": {
"type": "Transitive",
"resolved": "11.3.0",
"contentHash": "k0ZgZqd09jLZQjR8FyQbSQE86Q7QZnjEzq1LPHtj1R2AoWO8sjV5x+jlSisL7NZAbUOI4y+7Bog8gkr9WIRBGw==",
"dependencies": {
"EmptyFiles": "4.4.0",
"System.Management": "6.0.1"
}
},
"EmptyFiles": {
"type": "Transitive",
"resolved": "4.4.0",
"contentHash": "gwJEfIGS7FhykvtZoscwXj/XwW+mJY6UbAZk+qtLKFUGWC95kfKXnj8VkxsZQnWBxJemM/q664rGLN5nf+OHZw=="
},
"GraphQL.Client.Abstractions": {
"type": "Transitive",
"resolved": "6.0.0",
@@ -259,11 +283,24 @@
"resolved": "4.5.0",
"contentHash": "pL2ChpaRRWI/p4LXyy4RgeWlYF2sgfj/pnVMvBqwNFr5cXg7CXNnWZWxrOONLg8VGdFB8oB+EG2Qw4MLgTOe+A=="
},
"System.CodeDom": {
"type": "Transitive",
"resolved": "6.0.0",
"contentHash": "CPc6tWO1LAer3IzfZufDBRL+UZQcj5uS207NHALQzP84Vp/z6wF0Aa0YZImOQY8iStY0A2zI/e3ihKNPfUm8XA=="
},
"System.ComponentModel.Annotations": {
"type": "Transitive",
"resolved": "4.5.0",
"contentHash": "UxYQ3FGUOtzJ7LfSdnYSFd7+oEv6M8NgUatatIN2HxNtDdlcvFAf+VIq4Of9cDMJEJC0aSRv/x898RYhB4Yppg=="
},
"System.Management": {
"type": "Transitive",
"resolved": "6.0.1",
"contentHash": "10J1D0h/lioojphfJ4Fuh5ZUThT/xOVHdV9roGBittKKNP2PMjrvibEdbVTGZcPra1399Ja3tqIJLyQrc5Wmhg==",
"dependencies": {
"System.CodeDom": "6.0.0"
}
},
"System.Memory": {
"type": "Transitive",
"resolved": "4.5.3",