71 lines
2.0 KiB
C#
71 lines
2.0 KiB
C#
using System.Threading;
|
|
using System.Threading.Tasks;
|
|
using FlowScope.Addressables;
|
|
using FlowScope.Container;
|
|
using FlowScope.Resources;
|
|
using NUnit.Framework;
|
|
|
|
namespace FlowScope.PackageTests.EditMode
|
|
{
|
|
public sealed class PackageSmokeTests
|
|
{
|
|
[Test]
|
|
public void PackageAssemblies_CanBeReferencedFromPackageTests()
|
|
{
|
|
var container = new Container();
|
|
var backend = new AddressablesResourceBackend();
|
|
IResourceService resources = new ResourceService(new ImmediateBackend());
|
|
|
|
container.RegisterInstance(resources);
|
|
|
|
Assert.AreEqual("Addressables", backend.Name);
|
|
Assert.AreSame(resources, container.Resolve<IResourceService>());
|
|
|
|
container.Dispose();
|
|
}
|
|
|
|
[Test]
|
|
public void ResourceService_LoadAsync_CanRunInsidePackageTestAssembly()
|
|
{
|
|
var backend = new ImmediateBackend();
|
|
var service = new ResourceService(backend);
|
|
|
|
using var handle = service
|
|
.LoadAsync<TestAsset>("package-smoke", CancellationToken.None)
|
|
.GetAwaiter()
|
|
.GetResult();
|
|
|
|
Assert.That(handle.Asset, Is.Not.Null);
|
|
Assert.AreEqual(1, backend.LoadCalls);
|
|
|
|
handle.Dispose();
|
|
|
|
Assert.AreEqual(1, backend.ReleaseCalls);
|
|
}
|
|
|
|
private sealed class ImmediateBackend : IResourceBackend
|
|
{
|
|
public string Name => "Immediate";
|
|
public int LoadCalls { get; private set; }
|
|
public int ReleaseCalls { get; private set; }
|
|
|
|
public Task<T> LoadAsync<T>(string key, CancellationToken cancellationToken)
|
|
where T : class
|
|
{
|
|
LoadCalls++;
|
|
return Task.FromResult(new TestAsset() as T);
|
|
}
|
|
|
|
public void Release<T>(string key, T asset)
|
|
where T : class
|
|
{
|
|
ReleaseCalls++;
|
|
}
|
|
}
|
|
|
|
private sealed class TestAsset
|
|
{
|
|
}
|
|
}
|
|
}
|