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()); container.Dispose(); } [Test] public void ResourceService_LoadAsync_CanRunInsidePackageTestAssembly() { var backend = new ImmediateBackend(); var service = new ResourceService(backend); using var handle = service .LoadAsync("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 LoadAsync(string key, CancellationToken cancellationToken) where T : class { LoadCalls++; return Task.FromResult(new TestAsset() as T); } public void Release(string key, T asset) where T : class { ReleaseCalls++; } } private sealed class TestAsset { } } }