public void FromResult_ReturnsCompletedOperation() { // Arrange var result = 25; // Act var op = AsyncResult.FromResult(result); // Assert AssertCompletedWithResult(op, result); Assert.True(op.CompletedSynchronously); }
/// <summary> /// Asynchronously loads a scene with the specified name. /// </summary> /// <param name="sceneName">Name of the scene to load.</param> /// <param name="loadMode">The scene load mode.</param> /// <returns>A <see cref="IAsyncOperation{TResult}"/> that can be used to track the operation progress.</returns> public static IAsyncOperation <Scene> LoadSceneAsync(string sceneName, LoadSceneMode loadMode) { var scene = SceneManager.GetSceneByName(sceneName); if (scene.isLoaded) { return(AsyncResult.FromResult(scene)); } var result = new Helpers.SceneRequestResult(sceneName, loadMode); result.Start(); return(result); }
public async Task Unwrap_ReturnsInnerResult() { // Arrange var op1 = AsyncResult.FromResult(1); var op2 = AsyncResult.FromResult(op1); // Act var op = op2.Unwrap(); await op; // Assert Assert.True(op.IsCompletedSuccessfully); Assert.Equal(1, op.Result); }
public async Task Unwrap_SucceedsIfBothOperationsSucceed() { // Arrange var op1 = AsyncResult.Delay(1); var op2 = AsyncResult.FromResult(op1); // Act var op = op2.Unwrap(); await op; // Assert Assert.True(op.IsCompletedSuccessfully); Assert.True(op1.IsCompleted); Assert.True(op2.IsCompleted); }
public async Task Unwrap_FailsIfInnerOperationFails() { // Arrange var expectedException = new Exception(); var actualException = default(Exception); var op1 = AsyncResult.FromException(expectedException); var op2 = AsyncResult.FromResult(op1); var op = op2.Unwrap(); // Act try { await op; } catch (Exception e) { actualException = e; } // Assert Assert.True(op.IsFaulted); Assert.Equal(expectedException, actualException); }