Пример #1
0
        public void FromResult_ReturnsCompletedOperation()
        {
            // Arrange
            var result = 25;

            // Act
            var op = AsyncResult.FromResult(result);

            // Assert
            AssertCompletedWithResult(op, result);
            Assert.True(op.CompletedSynchronously);
        }
Пример #2
0
        /// <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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        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);
        }