diff --git a/nukebuild/Build.cs b/nukebuild/Build.cs
index 9fcb9d6b7f..f0f677b844 100644
--- a/nukebuild/Build.cs
+++ b/nukebuild/Build.cs
@@ -221,6 +221,7 @@ partial class Build : NukeBuild
RunCoreTest("Avalonia.Markup.Xaml.UnitTests");
RunCoreTest("Avalonia.Skia.UnitTests");
RunCoreTest("Avalonia.ReactiveUI.UnitTests");
+ RunCoreTest("Avalonia.PlatformSupport.UnitTests");
});
Target RunRenderTests => _ => _
diff --git a/src/Avalonia.PlatformSupport/AssetLoader.cs b/src/Avalonia.PlatformSupport/AssetLoader.cs
index fb03ec2f6e..0e33c3d4c7 100644
--- a/src/Avalonia.PlatformSupport/AssetLoader.cs
+++ b/src/Avalonia.PlatformSupport/AssetLoader.cs
@@ -14,14 +14,14 @@ namespace Avalonia.PlatformSupport
///
public class AssetLoader : IAssetLoader
{
- private static AssemblyDescriptorResolver s_assemblyDescriptorResolver = new();
+ private static IAssemblyDescriptorResolver s_assemblyDescriptorResolver = new AssemblyDescriptorResolver();
private AssemblyDescriptor? _defaultResmAssembly;
///
/// Introduced for tests.
///
- internal static void SetAssemblyDescriptorResolver(AssemblyDescriptorResolver resolver) =>
+ internal static void SetAssemblyDescriptorResolver(IAssemblyDescriptorResolver resolver) =>
s_assemblyDescriptorResolver = resolver;
///
@@ -182,13 +182,13 @@ namespace Avalonia.PlatformSupport
throw new ArgumentException($"Unsupported url type: " + uri.Scheme, nameof(uri));
}
- private (AssemblyDescriptor asm, string path) GetResAsmAndPath(Uri uri)
+ private (IAssemblyDescriptor asm, string path) GetResAsmAndPath(Uri uri)
{
var asm = s_assemblyDescriptorResolver.GetAssembly(uri.Authority);
return (asm, uri.GetUnescapeAbsolutePath());
}
- private AssemblyDescriptor? GetAssembly(Uri? uri)
+ private IAssemblyDescriptor? GetAssembly(Uri? uri)
{
if (uri != null)
{
diff --git a/src/Avalonia.PlatformSupport/Avalonia.PlatformSupport.csproj b/src/Avalonia.PlatformSupport/Avalonia.PlatformSupport.csproj
index 420ac0796c..5336f1e630 100644
--- a/src/Avalonia.PlatformSupport/Avalonia.PlatformSupport.csproj
+++ b/src/Avalonia.PlatformSupport/Avalonia.PlatformSupport.csproj
@@ -19,6 +19,6 @@
-
+
diff --git a/src/Avalonia.PlatformSupport/Internal/AssemblyDescriptor.cs b/src/Avalonia.PlatformSupport/Internal/AssemblyDescriptor.cs
index a3de7f2b8a..64ffec8482 100644
--- a/src/Avalonia.PlatformSupport/Internal/AssemblyDescriptor.cs
+++ b/src/Avalonia.PlatformSupport/Internal/AssemblyDescriptor.cs
@@ -6,7 +6,15 @@ using Avalonia.Utilities;
namespace Avalonia.PlatformSupport.Internal;
-internal class AssemblyDescriptor
+internal interface IAssemblyDescriptor
+{
+ Assembly Assembly { get; }
+ Dictionary? Resources { get; }
+ Dictionary? AvaloniaResources { get; }
+ string? Name { get; }
+}
+
+internal class AssemblyDescriptor : IAssemblyDescriptor
{
public AssemblyDescriptor(Assembly assembly)
{
diff --git a/src/Avalonia.PlatformSupport/Internal/AssemblyDescriptorResolver.cs b/src/Avalonia.PlatformSupport/Internal/AssemblyDescriptorResolver.cs
index a78051a9c4..28ae35d57d 100644
--- a/src/Avalonia.PlatformSupport/Internal/AssemblyDescriptorResolver.cs
+++ b/src/Avalonia.PlatformSupport/Internal/AssemblyDescriptorResolver.cs
@@ -5,11 +5,16 @@ using System.Reflection;
namespace Avalonia.PlatformSupport.Internal;
-internal class AssemblyDescriptorResolver
+internal interface IAssemblyDescriptorResolver
{
- private readonly Dictionary _assemblyNameCache = new();
+ IAssemblyDescriptor GetAssembly(string name);
+}
+
+internal class AssemblyDescriptorResolver: IAssemblyDescriptorResolver
+{
+ private readonly Dictionary _assemblyNameCache = new();
- public AssemblyDescriptor GetAssembly(string name)
+ public IAssemblyDescriptor GetAssembly(string name)
{
if (name == null)
throw new ArgumentNullException(nameof(name));
diff --git a/tests/Avalonia.PlatformSupport.UnitTests/AssetLoaderTests.cs b/tests/Avalonia.PlatformSupport.UnitTests/AssetLoaderTests.cs
index f950fb7e99..dfd195073b 100644
--- a/tests/Avalonia.PlatformSupport.UnitTests/AssetLoaderTests.cs
+++ b/tests/Avalonia.PlatformSupport.UnitTests/AssetLoaderTests.cs
@@ -16,7 +16,7 @@ public class AssetLoaderTests
static AssetLoaderTests()
{
- var resolver = Mock.Of();
+ var resolver = Mock.Of();
var descriptor = CreateAssemblyDescriptor(AssemblyNameWithWhitespace);
Mock.Get(resolver).Setup(x => x.GetAssembly(AssemblyNameWithWhitespace)).Returns(descriptor);
@@ -49,13 +49,13 @@ public class AssetLoaderTests
Assert.Equal(AssemblyNameWithNonAscii, assemblyActual?.FullName);
}
- private static AssemblyDescriptor CreateAssemblyDescriptor(string assemblyName)
+ private static IAssemblyDescriptor CreateAssemblyDescriptor(string assemblyName)
{
var assembly = Mock.Of();
Mock.Get(assembly).Setup(x => x.GetName()).Returns(new AssemblyName(assemblyName));
Mock.Get(assembly).Setup(x => x.FullName).Returns(assemblyName);
- var descriptor = Mock.Of();
+ var descriptor = Mock.Of();
Mock.Get(descriptor).Setup(x => x.Assembly).Returns(assembly);
return descriptor;
}