namespace Spectre.Console.Testing;
///
/// A fake type resolver suitable for testing.
///
public sealed class FakeTypeResolver : ITypeResolver
{
private readonly Dictionary> _registrations;
private readonly Dictionary> _instances;
///
/// Initializes a new instance of the class.
///
/// The registrations.
/// The singleton registrations.
public FakeTypeResolver(
Dictionary> registrations,
Dictionary> instances)
{
_registrations = registrations ?? throw new ArgumentNullException(nameof(registrations));
_instances = instances ?? throw new ArgumentNullException(nameof(instances));
}
///
public object? Resolve(Type? type)
{
if (type == null)
{
return null;
}
if (_instances.TryGetValue(type, out var instances))
{
return instances.FirstOrDefault();
}
if (_registrations.TryGetValue(type, out var registrations))
{
return registrations.Count == 0
? null
: Activator.CreateInstance(type);
}
return null;
}
}