Files
speckle-sharp-connectors/Sdk/Speckle.Converters.Common.Tests/ConverterManagerTests.cs
T
Adam Hathcock 94104c2365 NameAndRankValue now uses a type to get FullName to avoid conflicts (#475)
* NameAndRankValue now uses a type to get FullName to avoid conflicts

* Full namespace for tests
2025-01-10 13:59:59 +00:00

59 lines
1.6 KiB
C#

using System.Collections.Concurrent;
using FluentAssertions;
using Microsoft.Extensions.DependencyInjection;
using NUnit.Framework;
using Speckle.Converters.Common.Registration;
using Speckle.Sdk.Common.Exceptions;
namespace Speckle.Converters.Common.Tests;
public class ConverterManagerTests
{
private sealed class TestConverter
{
public string TestString { get; set; }
}
private ConverterManager<object> SetupManager(string testString, Type targetType)
{
var serviceCollection = new ServiceCollection();
serviceCollection.AddTransient<TestConverter>();
var converterTypes = new ConcurrentDictionary<string, Type>();
converterTypes.TryAdd(testString, targetType);
var sut = new ConverterManager<object>(converterTypes, serviceCollection.BuildServiceProvider());
return sut;
}
[Test]
public void Test_Null()
{
var sut = SetupManager("Test", typeof(TestConverter));
Assert.Throws<ConversionNotSupportedException>(() => sut.ResolveConverter(typeof(string), false));
}
[Test]
public void Test_NoFallback()
{
var sut = SetupManager("System.String", typeof(TestConverter));
var converter = sut.ResolveConverter(typeof(string), false);
converter.Should().NotBeNull();
}
[Test]
public void Test_Fallback()
{
var sut = SetupManager("System.Object", typeof(TestConverter));
var converter = sut.ResolveConverter(typeof(string), true);
converter.Should().NotBeNull();
}
[Test]
public void Test_Fallback_Null()
{
var sut = SetupManager("Object", typeof(TestConverter));
Assert.Throws<ConversionNotSupportedException>(() => sut.ResolveConverter(typeof(string), false));
}
}