Ejemplo n.º 1
0
        public async Task DisposeAsync_CanDisposeAfterCallingRunAsync()
        {
            // Arrange
            var builder = new WebAssemblyHostBuilder(new TestJSUnmarshalledRuntime());

            builder.Services.AddSingleton <DisposableService>();
            var host            = builder.Build();
            var cultureProvider = new TestSatelliteResourcesLoader();

            var disposable = host.Services.GetRequiredService <DisposableService>();

            var cts = new CancellationTokenSource();

            // Act
            await using (host)
            {
                var task = host.RunAsyncCore(cts.Token, cultureProvider);

                cts.Cancel();
                await task.TimeoutAfter(TimeSpan.FromSeconds(3));
            }

            // Assert
            Assert.Equal(1, disposable.DisposeCount);
        }
Ejemplo n.º 2
0
        public async Task RunAsync_CanExitBasedOnCancellationToken()
        {
            // Arrange
            var builder         = new WebAssemblyHostBuilder(new TestJSUnmarshalledRuntime());
            var host            = builder.Build();
            var cultureProvider = new TestSatelliteResourcesLoader();

            var cts = new CancellationTokenSource();

            // Act
            var task = host.RunAsyncCore(cts.Token, cultureProvider);

            cts.Cancel();
            await task.TimeoutAfter(TimeSpan.FromSeconds(3));

            // Assert (does not throw)
        }
Ejemplo n.º 3
0
        public async Task RunAsync_CallingTwiceCausesException()
        {
            // Arrange
            var builder         = new WebAssemblyHostBuilder(new TestJSUnmarshalledRuntime());
            var host            = builder.Build();
            var cultureProvider = new TestSatelliteResourcesLoader();

            var cts  = new CancellationTokenSource();
            var task = host.RunAsyncCore(cts.Token, cultureProvider);

            // Act
            var ex = await Assert.ThrowsAsync <InvalidOperationException>(() => host.RunAsyncCore(cts.Token));

            cts.Cancel();
            await task.TimeoutAfter(TimeSpan.FromSeconds(3));

            // Assert
            Assert.Equal("The host has already started.", ex.Message);
        }