Browse Source

Fix PlatformSupport.UnitTests

pull/7989/head
Rustam Sayfutdinov 4 years ago
parent
commit
578f5fc1cb
  1. 1
      nukebuild/Build.cs
  2. 8
      src/Avalonia.PlatformSupport/AssetLoader.cs
  3. 2
      src/Avalonia.PlatformSupport/Avalonia.PlatformSupport.csproj
  4. 10
      src/Avalonia.PlatformSupport/Internal/AssemblyDescriptor.cs
  5. 11
      src/Avalonia.PlatformSupport/Internal/AssemblyDescriptorResolver.cs
  6. 6
      tests/Avalonia.PlatformSupport.UnitTests/AssetLoaderTests.cs

1
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 => _ => _

8
src/Avalonia.PlatformSupport/AssetLoader.cs

@ -14,14 +14,14 @@ namespace Avalonia.PlatformSupport
/// </summary>
public class AssetLoader : IAssetLoader
{
private static AssemblyDescriptorResolver s_assemblyDescriptorResolver = new();
private static IAssemblyDescriptorResolver s_assemblyDescriptorResolver = new AssemblyDescriptorResolver();
private AssemblyDescriptor? _defaultResmAssembly;
/// <remarks>
/// Introduced for tests.
/// </remarks>
internal static void SetAssemblyDescriptorResolver(AssemblyDescriptorResolver resolver) =>
internal static void SetAssemblyDescriptorResolver(IAssemblyDescriptorResolver resolver) =>
s_assemblyDescriptorResolver = resolver;
/// <summary>
@ -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)
{

2
src/Avalonia.PlatformSupport/Avalonia.PlatformSupport.csproj

@ -19,6 +19,6 @@
<ItemGroup>
<InternalsVisibleTo Include="$(AssemblyName).UnitTests, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c1bba1142285fe0419326fb25866ba62c47e6c2b5c1ab0c95b46413fad375471232cb81706932e1cef38781b9ebd39d5100401bacb651c6c5bbf59e571e81b3bc08d2a622004e08b1a6ece82a7e0b9857525c86d2b95fab4bc3dce148558d7f3ae61aa3a234086902aeface87d9dfdd32b9d2fe3c6dd4055b5ab4b104998bd87" />
<InternalsVisibleTo Include="DynamicProxyGenAssembly2, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c1bba1142285fe0419326fb25866ba62c47e6c2b5c1ab0c95b46413fad375471232cb81706932e1cef38781b9ebd39d5100401bacb651c6c5bbf59e571e81b3bc08d2a622004e08b1a6ece82a7e0b9857525c86d2b95fab4bc3dce148558d7f3ae61aa3a234086902aeface87d9dfdd32b9d2fe3c6dd4055b5ab4b104998bd87" />
<InternalsVisibleTo Include="DynamicProxyGenAssembly2, PublicKey=0024000004800000940000000602000000240000525341310004000001000100c547cac37abd99c8db225ef2f6c8a3602f3b3606cc9891605d02baa56104f4cfc0734aa39b93bf7852f7d9266654753cc297e7d2edfe0bac1cdcf9f717241550e0a7b191195b7667bb4f64bcb8e2121380fd1d9d46ad2d92d2d15605093924cceaf74c4861eff62abf69b9291ed0a340e113be11e6a7d3113e92484cf7045cc7" />
</ItemGroup>
</Project>

10
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<string, IAssetDescriptor>? Resources { get; }
Dictionary<string, IAssetDescriptor>? AvaloniaResources { get; }
string? Name { get; }
}
internal class AssemblyDescriptor : IAssemblyDescriptor
{
public AssemblyDescriptor(Assembly assembly)
{

11
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<string, AssemblyDescriptor> _assemblyNameCache = new();
IAssemblyDescriptor GetAssembly(string name);
}
internal class AssemblyDescriptorResolver: IAssemblyDescriptorResolver
{
private readonly Dictionary<string, IAssemblyDescriptor> _assemblyNameCache = new();
public AssemblyDescriptor GetAssembly(string name)
public IAssemblyDescriptor GetAssembly(string name)
{
if (name == null)
throw new ArgumentNullException(nameof(name));

6
tests/Avalonia.PlatformSupport.UnitTests/AssetLoaderTests.cs

@ -16,7 +16,7 @@ public class AssetLoaderTests
static AssetLoaderTests()
{
var resolver = Mock.Of<AssemblyDescriptorResolver>();
var resolver = Mock.Of<IAssemblyDescriptorResolver>();
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<MockAssembly>();
Mock.Get(assembly).Setup(x => x.GetName()).Returns(new AssemblyName(assemblyName));
Mock.Get(assembly).Setup(x => x.FullName).Returns(assemblyName);
var descriptor = Mock.Of<AssemblyDescriptor>();
var descriptor = Mock.Of<IAssemblyDescriptor>();
Mock.Get(descriptor).Setup(x => x.Assembly).Returns(assembly);
return descriptor;
}

Loading…
Cancel
Save