diff --git a/All.sln b/All.sln index be7ae9a84a..c6ebca2a3b 100644 --- a/All.sln +++ b/All.sln @@ -568,6 +568,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Converters.Rhino7.T EndProject Project("{D954291E-2A0B-460D-934E-DC6B0785DB48}") = "Speckle.Converters.RhinoShared", "DUI3-DX\Converters\Rhino\Speckle.Converters.RhinoShared\Speckle.Converters.RhinoShared.shproj", "{E1C43415-3200-45F4-8BF9-A4DD7D7F2ED9}" EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Speckle.Testing", "DUI3-DX\Sdk\Speckle.Testing\Speckle.Testing.csproj", "{407E5EB0-E86F-499E-9BC1-39FE818C55AC}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug Mac|Any CPU = Debug Mac|Any CPU @@ -2882,6 +2884,22 @@ Global {DB892409-2185-4DDE-983E-F0DE4766129A}.Release|Any CPU.Build.0 = Release|Any CPU {DB892409-2185-4DDE-983E-F0DE4766129A}.Release|x64.ActiveCfg = Release|Any CPU {DB892409-2185-4DDE-983E-F0DE4766129A}.Release|x64.Build.0 = Release|Any CPU + {407E5EB0-E86F-499E-9BC1-39FE818C55AC}.Debug Mac|Any CPU.ActiveCfg = Debug|Any CPU + {407E5EB0-E86F-499E-9BC1-39FE818C55AC}.Debug Mac|Any CPU.Build.0 = Debug|Any CPU + {407E5EB0-E86F-499E-9BC1-39FE818C55AC}.Debug Mac|x64.ActiveCfg = Debug|Any CPU + {407E5EB0-E86F-499E-9BC1-39FE818C55AC}.Debug Mac|x64.Build.0 = Debug|Any CPU + {407E5EB0-E86F-499E-9BC1-39FE818C55AC}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {407E5EB0-E86F-499E-9BC1-39FE818C55AC}.Debug|Any CPU.Build.0 = Debug|Any CPU + {407E5EB0-E86F-499E-9BC1-39FE818C55AC}.Debug|x64.ActiveCfg = Debug|Any CPU + {407E5EB0-E86F-499E-9BC1-39FE818C55AC}.Debug|x64.Build.0 = Debug|Any CPU + {407E5EB0-E86F-499E-9BC1-39FE818C55AC}.Release Mac|Any CPU.ActiveCfg = Debug|Any CPU + {407E5EB0-E86F-499E-9BC1-39FE818C55AC}.Release Mac|Any CPU.Build.0 = Debug|Any CPU + {407E5EB0-E86F-499E-9BC1-39FE818C55AC}.Release Mac|x64.ActiveCfg = Debug|Any CPU + {407E5EB0-E86F-499E-9BC1-39FE818C55AC}.Release Mac|x64.Build.0 = Debug|Any CPU + {407E5EB0-E86F-499E-9BC1-39FE818C55AC}.Release|Any CPU.ActiveCfg = Release|Any CPU + {407E5EB0-E86F-499E-9BC1-39FE818C55AC}.Release|Any CPU.Build.0 = Release|Any CPU + {407E5EB0-E86F-499E-9BC1-39FE818C55AC}.Release|x64.ActiveCfg = Release|Any CPU + {407E5EB0-E86F-499E-9BC1-39FE818C55AC}.Release|x64.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -3099,6 +3117,7 @@ Global {99C39008-706C-45B9-8E7E-9D9B8928A278} = {D92751C8-1039-4005-90B2-913E55E0B8BD} {DB892409-2185-4DDE-983E-F0DE4766129A} = {34C2C062-E43F-4FB5-B839-64BC044CCEF3} {E1C43415-3200-45F4-8BF9-A4DD7D7F2ED9} = {34C2C062-E43F-4FB5-B839-64BC044CCEF3} + {407E5EB0-E86F-499E-9BC1-39FE818C55AC} = {2E00592E-558D-492D-88F9-3ECEE4C0C7DA} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {1D43D91B-4F01-4A78-8250-CC6F9BD93A14} diff --git a/DUI3-DX.slnf b/DUI3-DX.slnf index bc1590c26c..8b2707c7b7 100644 --- a/DUI3-DX.slnf +++ b/DUI3-DX.slnf @@ -30,7 +30,8 @@ "DUI3-DX\\Sdk\\Speckle.Autofac\\Speckle.Autofac.csproj", "DUI3-DX\\Sdk\\Speckle.Connectors.Utils\\Speckle.Connectors.Utils.csproj", "DUI3-DX\\Sdk\\Speckle.Converters.Common.DependencyInjection\\Speckle.Converters.Common.DependencyInjection.csproj", - "DUI3-DX\\Sdk\\Speckle.Converters.Common\\Speckle.Converters.Common.csproj" + "DUI3-DX\\Sdk\\Speckle.Converters.Common\\Speckle.Converters.Common.csproj", + "DUI3-DX\\Sdk\\Speckle.Testing\\Speckle.Testing.csproj" ] } } \ No newline at end of file diff --git a/DUI3-DX/Converters/Revit/Speckle.Converters.Revit2023.Tests/ModelCurveArrayToSpeckleConverterTests.cs b/DUI3-DX/Converters/Revit/Speckle.Converters.Revit2023.Tests/ModelCurveArrayToSpeckleConverterTests.cs index 553c307d3b..fe88658273 100644 --- a/DUI3-DX/Converters/Revit/Speckle.Converters.Revit2023.Tests/ModelCurveArrayToSpeckleConverterTests.cs +++ b/DUI3-DX/Converters/Revit/Speckle.Converters.Revit2023.Tests/ModelCurveArrayToSpeckleConverterTests.cs @@ -1,46 +1,30 @@ -using System.Collections; -using FluentAssertions; -using Moq; +using FluentAssertions; using NUnit.Framework; using Objects; using Speckle.Converters.Common; using Speckle.Converters.Common.Objects; -using Speckle.Converters.RevitShared; using Speckle.Converters.RevitShared.Helpers; using Speckle.Converters.RevitShared.Raw; using Speckle.Converters.RevitShared.Services; +using Speckle.Testing; namespace Speckle.Converters.Revit2023.Tests; -public class ModelCurveArrayToSpeckleConverterTests +public class ModelCurveArrayToSpeckleConverterTests: MoqTest { - private MockRepository _repository; - - private Mock _revitConversionContextStack; - private Mock _scalingServiceToSpeckle; - private Mock> _curveConverter; - - [SetUp] - public void Start() - { - _repository = new(MockBehavior.Strict); - _revitConversionContextStack = _repository.Create(); - _scalingServiceToSpeckle = _repository.Create(); - _curveConverter = _repository.Create>(); - } - - [TearDown] - public void Verify() => _repository.VerifyAll(); - [Test] public void Convert_Empty() { + var revitConversionContextStack = Create(); + var scalingServiceToSpeckle = Create(); + var curveConverter = Create>(); + var sut = new ModelCurveArrayToSpeckleConverter( - _revitConversionContextStack.Object, - _scalingServiceToSpeckle.Object, - _curveConverter.Object + revitConversionContextStack.Object, + scalingServiceToSpeckle.Object, + curveConverter.Object ); - var array = _repository.Create(); + var array = Create(); array.Setup(x => x.GetEnumerator()).Returns(Enumerable.Empty().GetEnumerator()); Assert.Throws(() => sut.Convert(array.Object)); } @@ -48,40 +32,44 @@ public void Convert_Empty() [Test] public void Convert() { - var endpoint1 = _repository.Create(); - var geometry1 = _repository.Create(); - var curve1 = _repository.Create(); + var revitConversionContextStack = Create(); + var scalingServiceToSpeckle = Create(); + var curveConverter = Create>(); + + var endpoint1 = Create(); + var geometry1 = Create(); + var curve1 = Create(); curve1.Setup(x => x.GeometryCurve).Returns(geometry1.Object); geometry1.Setup(x => x.Length).Returns(2); geometry1.Setup(x => x.GetEndPoint(0)).Returns(endpoint1.Object); - var endpoint2 = _repository.Create(); - var geometry2 = _repository.Create(); - var curve2 = _repository.Create(); + var endpoint2 = Create(); + var geometry2 = Create(); + var curve2 = Create(); curve2.Setup(x => x.GeometryCurve).Returns(geometry2.Object); geometry2.Setup(x => x.Length).Returns(3); geometry2.Setup(x => x.GetEndPoint(1)).Returns(endpoint2.Object); - var context = _repository.Create>(); - _revitConversionContextStack.Setup(x => x.Current).Returns(context.Object); + var context = Create>(); + revitConversionContextStack.Setup(x => x.Current).Returns(context.Object); var units = "units"; context.Setup(x => x.SpeckleUnits).Returns(units); var scaleLength = 2.2; - _scalingServiceToSpeckle.Setup(x => x.ScaleLength(2 + 3)).Returns(scaleLength); + scalingServiceToSpeckle.Setup(x => x.ScaleLength(2 + 3)).Returns(scaleLength); endpoint1.Setup(x => x.DistanceTo(endpoint2.Object)).Returns(4.4); - _curveConverter.Setup(x => x.Convert(geometry1.Object)).Returns(_repository.Create().Object); - _curveConverter.Setup(x => x.Convert(geometry2.Object)).Returns(_repository.Create().Object); + curveConverter.Setup(x => x.Convert(geometry1.Object)).Returns(Create().Object); + curveConverter.Setup(x => x.Convert(geometry2.Object)).Returns(Create().Object); var sut = new ModelCurveArrayToSpeckleConverter( - _revitConversionContextStack.Object, - _scalingServiceToSpeckle.Object, - _curveConverter.Object + revitConversionContextStack.Object, + scalingServiceToSpeckle.Object, + curveConverter.Object ); - var array = _repository.Create(); + var array = Create(); array .Setup(x => x.GetEnumerator()) diff --git a/DUI3-DX/Converters/Revit/Speckle.Converters.Revit2023.Tests/Speckle.Converters.Revit2023.Tests.csproj b/DUI3-DX/Converters/Revit/Speckle.Converters.Revit2023.Tests/Speckle.Converters.Revit2023.Tests.csproj index a133c6fd60..0cd0a92929 100644 --- a/DUI3-DX/Converters/Revit/Speckle.Converters.Revit2023.Tests/Speckle.Converters.Revit2023.Tests.csproj +++ b/DUI3-DX/Converters/Revit/Speckle.Converters.Revit2023.Tests/Speckle.Converters.Revit2023.Tests.csproj @@ -16,9 +16,10 @@ + - + diff --git a/DUI3-DX/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json b/DUI3-DX/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json index 2aae829496..dc6ca69e10 100644 --- a/DUI3-DX/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json +++ b/DUI3-DX/Converters/Revit/Speckle.Converters.Revit2023.Tests/packages.lock.json @@ -66,9 +66,9 @@ }, "Speckle.Revit2023.Fakes": { "type": "Direct", - "requested": "[0.2.1-preview.4, 1.0.0)", - "resolved": "0.2.1-preview.4", - "contentHash": "ZyPgvJ5BfC/lF+40bb24OSE8k5taszGU1fLs21dEI5GDsVRfPgeMIXFXDdpjjqtEZQbeteCWfkY3ef5OpHgW2g==", + "requested": "[0.2.1-preview.5, 1.0.0)", + "resolved": "0.2.1-preview.5", + "contentHash": "J5IWMCdG+ENVlxFrGc6blG2skWU0f9RXyjsNVGTokmAgELXDKJjggkQhBsU+9hVJPjpyGM38uNgJ1NKWEaur2w==", "dependencies": { "System.Drawing.Common": "8.0.6" } @@ -480,6 +480,13 @@ "Speckle.Objects": "[3.0.1-alpha.14, )" } }, + "speckle.testing": { + "type": "Project", + "dependencies": { + "Moq": "[4.20.70, )", + "NUnit": "[4.1.0, )" + } + }, "Microsoft.Extensions.Logging.Abstractions": { "type": "CentralTransitive", "requested": "[7.0.0, )", diff --git a/DUI3-DX/Converters/Rhino/Speckle.Converters.Rhino7.Tests/ArcToSpeckleConverterTests.cs b/DUI3-DX/Converters/Rhino/Speckle.Converters.Rhino7.Tests/ArcToSpeckleConverterTests.cs new file mode 100644 index 0000000000..e54a27b927 --- /dev/null +++ b/DUI3-DX/Converters/Rhino/Speckle.Converters.Rhino7.Tests/ArcToSpeckleConverterTests.cs @@ -0,0 +1,66 @@ +using FluentAssertions; +using Moq; +using NUnit.Framework; +using Rhino; +using Speckle.Converters.Common; +using Speckle.Converters.Common.Objects; +using Speckle.Converters.Rhino7.ToSpeckle.Raw; +using Speckle.Testing; + +namespace Speckle.Converters.Rhino7.Tests; + +public class ArcToSpeckleConverterTests : MoqTest +{ + [Test] + public void Convert_ShouldConvertArcCorrectly() + { + // Arrange + var radius = 1.1d; + var mockPointConverter = Create>(); + var mockPlaneConverter = Create>(); + var mockBoxConverter = Create>(); + var mockContextStack = Create>(); + var factory = Create(); + + + var context = Create>(); + context.Setup(x => x.SpeckleUnits).Returns("units"); + mockContextStack.Setup(cs => cs.Current).Returns(context.Object); + + var targetArc = Create(); + var targetPlane = Create(); + var targetBox = Create(); + var point3d = Create(); + var boundbox = Create(); + + targetArc.Setup(x => x.Plane).Returns(targetPlane.Object); + targetArc.Setup(x => x.Radius).Returns(radius); + targetArc.Setup(x => x.StartAngle).Returns(radius); + targetArc.Setup(x => x.EndAngle).Returns(radius); + targetArc.Setup(x => x.Angle).Returns(radius); + targetArc.Setup(x => x.Length).Returns(radius); + targetArc.Setup(x => x.StartPoint).Returns(point3d.Object); + targetArc.Setup(x => x.MidPoint).Returns(point3d.Object); + targetArc.Setup(x => x.EndPoint).Returns(point3d.Object); + targetArc.Setup(x => x.BoundingBox()).Returns(boundbox.Object); + factory.Setup(x => x.Create(boundbox.Object)).Returns(targetBox.Object); + + mockPlaneConverter.Setup(pc => pc.Convert(targetPlane.Object)).Returns(new SOG.Plane()); + mockPointConverter.Setup(pc => pc.Convert(It.IsAny())).Returns(new SOG.Point()); + mockBoxConverter.Setup(bc => bc.Convert(targetBox.Object)).Returns(new SOG.Box()); + + var converter = new ArcToSpeckleConverter( + mockPointConverter.Object, + mockPlaneConverter.Object, + mockBoxConverter.Object, + mockContextStack.Object, + factory.Object + ); + + // Act + var result = converter.Convert(targetArc.Object); + + // Assert + result.Should().NotBeNull(); + } +} diff --git a/DUI3-DX/Converters/Rhino/Speckle.Converters.Rhino7.Tests/EllipseToSpeckleConverterTests.cs b/DUI3-DX/Converters/Rhino/Speckle.Converters.Rhino7.Tests/EllipseToSpeckleConverterTests.cs index b61be644f8..b3e2e32a76 100644 --- a/DUI3-DX/Converters/Rhino/Speckle.Converters.Rhino7.Tests/EllipseToSpeckleConverterTests.cs +++ b/DUI3-DX/Converters/Rhino/Speckle.Converters.Rhino7.Tests/EllipseToSpeckleConverterTests.cs @@ -1,29 +1,22 @@ -using Moq; -using NUnit.Framework; +using NUnit.Framework; using Rhino; using Speckle.Converters.Common; using Speckle.Converters.Common.Objects; +using Speckle.Converters.Rhino7.ToSpeckle.Raw; +using Speckle.Testing; namespace Speckle.Converters.Rhino7.Tests; -public class EllipseToSpeckleConverterTests +public class EllipseToSpeckleConverterTests: MoqTest { - private MockRepository _repository; - private Mock> _conversionContextStack; - - private Mock> _planeConverter; - private Mock> _boxConverter; - - [SetUp] - public void Setup() + [Test] + public void Convert_Test() { - _repository = new(MockBehavior.Strict); - _conversionContextStack = _repository.Create>(); - _planeConverter = _repository.Create>(); - _boxConverter = _repository.Create>(); - } + var conversionContextStack = Create>(); + var planeConverter = Create>(); + var boxConverter = Create>(); - [TearDown] - public void Verify() => _repository.VerifyAll(); + var x = new EllipseToSpeckleConverter(planeConverter.Object, boxConverter.Object, conversionContextStack.Object); + } } diff --git a/DUI3-DX/Converters/Rhino/Speckle.Converters.Rhino7.Tests/Speckle.Converters.Rhino7.Tests.csproj b/DUI3-DX/Converters/Rhino/Speckle.Converters.Rhino7.Tests/Speckle.Converters.Rhino7.Tests.csproj index 0366a6427c..ab6430cc58 100644 --- a/DUI3-DX/Converters/Rhino/Speckle.Converters.Rhino7.Tests/Speckle.Converters.Rhino7.Tests.csproj +++ b/DUI3-DX/Converters/Rhino/Speckle.Converters.Rhino7.Tests/Speckle.Converters.Rhino7.Tests.csproj @@ -1,4 +1,4 @@ - + net8.0 @@ -15,10 +15,11 @@ - + + - + diff --git a/DUI3-DX/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json b/DUI3-DX/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json index b073a0375f..4e2bcc6622 100644 --- a/DUI3-DX/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json +++ b/DUI3-DX/Converters/Rhino/Speckle.Converters.Rhino7.Tests/packages.lock.json @@ -66,9 +66,9 @@ }, "Speckle.Rhino7.Fakes": { "type": "Direct", - "requested": "[0.2.1-preview.4, )", - "resolved": "0.2.1-preview.4", - "contentHash": "8o2pESS4SWjLG1nc62Jo1CzTbbwm8ad61KF1y2NVDUbbfzd4YPkY7VFF4zJUM3sW0pWhnkslOomOPblg9Px22Q==", + "requested": "[0.2.1-preview.5, )", + "resolved": "0.2.1-preview.5", + "contentHash": "ugh9ojdGDmtj8nXtPiSVMFxrr7eztUqyuNT8TYHflALOdphyd9663Q5MxUJT74D629W6BZhRefLaIPYH9FIxMQ==", "dependencies": { "System.Drawing.Common": "8.0.6" } @@ -480,6 +480,13 @@ "Speckle.Objects": "[3.0.1-alpha.14, )" } }, + "speckle.testing": { + "type": "Project", + "dependencies": { + "Moq": "[4.20.70, )", + "NUnit": "[4.1.0, )" + } + }, "Microsoft.Extensions.Logging.Abstractions": { "type": "CentralTransitive", "requested": "[7.0.0, )", diff --git a/DUI3-DX/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/ArcToSpeckleConverter.cs b/DUI3-DX/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/ArcToSpeckleConverter.cs index 82c89c2551..34a6f4022b 100644 --- a/DUI3-DX/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/ArcToSpeckleConverter.cs +++ b/DUI3-DX/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/ArcToSpeckleConverter.cs @@ -10,18 +10,19 @@ public class ArcToSpeckleConverter : ITypedConverter private readonly ITypedConverter _planeConverter; private readonly ITypedConverter _boxConverter; private readonly IConversionContextStack _contextStack; + private readonly IBoxFactory _boxFactory; public ArcToSpeckleConverter( ITypedConverter pointConverter, ITypedConverter planeConverter, ITypedConverter boxConverter, - IConversionContextStack contextStack - ) + IConversionContextStack contextStack, IBoxFactory boxFactory) { _pointConverter = pointConverter; _planeConverter = planeConverter; _boxConverter = boxConverter; _contextStack = contextStack; + _boxFactory = boxFactory; } /// @@ -47,6 +48,6 @@ public SOG.Arc Convert(RG.Arc target) => endPoint = _pointConverter.Convert(target.EndPoint), domain = new SOP.Interval(0, 1), length = target.Length, - bbox = _boxConverter.Convert(new RG.Box(target.BoundingBox())) + bbox = _boxConverter.Convert(_boxFactory.Create(target.BoundingBox())) }; } diff --git a/DUI3-DX/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/BoxFactory.cs b/DUI3-DX/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/BoxFactory.cs new file mode 100644 index 0000000000..fd39fa2ba8 --- /dev/null +++ b/DUI3-DX/Converters/Rhino/Speckle.Converters.RhinoShared/ToSpeckle/Raw/BoxFactory.cs @@ -0,0 +1,9 @@ +using Speckle.InterfaceGenerator; + +namespace Speckle.Converters.Rhino7.ToSpeckle.Raw; + +[GenerateAutoInterface] +public class BoxFactory : IBoxFactory +{ + public RG.Box Create(RG.BoundingBox bb) => new(bb); +} diff --git a/DUI3-DX/Sdk/Speckle.Testing/MoqTest.cs b/DUI3-DX/Sdk/Speckle.Testing/MoqTest.cs new file mode 100644 index 0000000000..dd2a8e591d --- /dev/null +++ b/DUI3-DX/Sdk/Speckle.Testing/MoqTest.cs @@ -0,0 +1,18 @@ +using Moq; +using NUnit.Framework; + +namespace Speckle.Testing; + +public abstract class MoqTest +{ + + [SetUp] + public void Setup() => Repository = new(MockBehavior.Strict); + + [TearDown] + public void Verify() => Repository.VerifyAll(); + + protected MockRepository Repository { get; private set; } =new(MockBehavior.Strict); + + protected Mock Create() where T : class => Repository.Create(); +} diff --git a/DUI3-DX/Sdk/Speckle.Testing/Speckle.Testing.csproj b/DUI3-DX/Sdk/Speckle.Testing/Speckle.Testing.csproj new file mode 100644 index 0000000000..a266dd26d2 --- /dev/null +++ b/DUI3-DX/Sdk/Speckle.Testing/Speckle.Testing.csproj @@ -0,0 +1,10 @@ + + + + net8.0 + + + + + + diff --git a/DUI3-DX/Sdk/Speckle.Testing/packages.lock.json b/DUI3-DX/Sdk/Speckle.Testing/packages.lock.json new file mode 100644 index 0000000000..9dba1909b7 --- /dev/null +++ b/DUI3-DX/Sdk/Speckle.Testing/packages.lock.json @@ -0,0 +1,67 @@ +{ + "version": 2, + "dependencies": { + "net8.0": { + "Microsoft.SourceLink.GitHub": { + "type": "Direct", + "requested": "[8.0.0, )", + "resolved": "8.0.0", + "contentHash": "G5q7OqtwIyGTkeIOAc3u2ZuV/kicQaec5EaRnc0pIeSnh9LUjj+PYQrJYBURvDt7twGl2PKA7nSN0kz1Zw5bnQ==", + "dependencies": { + "Microsoft.Build.Tasks.Git": "8.0.0", + "Microsoft.SourceLink.Common": "8.0.0" + } + }, + "Moq": { + "type": "Direct", + "requested": "[4.20.70, )", + "resolved": "4.20.70", + "contentHash": "4rNnAwdpXJBuxqrOCzCyICXHSImOTRktCgCWXWykuF1qwoIsVvEnR7PjbMk/eLOxWvhmj5Kwt+kDV3RGUYcNwg==", + "dependencies": { + "Castle.Core": "5.1.1" + } + }, + "NUnit": { + "type": "Direct", + "requested": "[4.1.0, )", + "resolved": "4.1.0", + "contentHash": "MT/DpAhjtiytzhTgTqIhBuWx4y26PKfDepYUHUM+5uv4TsryHC2jwFo5e6NhWkApCm/G6kZ80dRjdJFuAxq3rg==" + }, + "PolySharp": { + "type": "Direct", + "requested": "[1.14.1, )", + "resolved": "1.14.1", + "contentHash": "mOOmFYwad3MIOL14VCjj02LljyF1GNw1wP0YVlxtcPvqdxjGGMNdNJJxHptlry3MOd8b40Flm8RPOM8JOlN2sQ==" + }, + "Speckle.InterfaceGenerator": { + "type": "Direct", + "requested": "[0.9.5, )", + "resolved": "0.9.5", + "contentHash": "oU/L7pN1R7q8KkbrpQ3WJnHirPHqn+9DEA7asOcUiggV5dzVg1A/VYs7GOSusD24njxXh03tE3a2oTLOjt3cVg==" + }, + "Castle.Core": { + "type": "Transitive", + "resolved": "5.1.1", + "contentHash": "rpYtIczkzGpf+EkZgDr9CClTdemhsrwA/W5hMoPjLkRFnXzH44zDLoovXeKtmxb1ykXK9aJVODSpiJml8CTw2g==", + "dependencies": { + "System.Diagnostics.EventLog": "6.0.0" + } + }, + "Microsoft.Build.Tasks.Git": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "bZKfSIKJRXLTuSzLudMFte/8CempWjVamNUR5eHJizsy+iuOuO/k2gnh7W0dHJmYY0tBf+gUErfluCv5mySAOQ==" + }, + "Microsoft.SourceLink.Common": { + "type": "Transitive", + "resolved": "8.0.0", + "contentHash": "dk9JPxTCIevS75HyEQ0E4OVAFhB2N+V9ShCXf8Q6FkUQZDkgLI12y679Nym1YqsiSysuQskT7Z+6nUf3yab6Vw==" + }, + "System.Diagnostics.EventLog": { + "type": "Transitive", + "resolved": "6.0.0", + "contentHash": "lcyUiXTsETK2ALsZrX+nWuHSIQeazhqPphLfaRxzdGaG93+0kELqpgEHtwWOlQe7+jSFnKwaCAgL4kjeZCQJnw==" + } + } + } +} \ No newline at end of file