// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information. using System; using System.Threading.Tasks; namespace Microsoft.AspNet.Mvc.Core.Test { public class TestController { public static void VoidAction() { } public async Task TaskAction(int i, string s) { return; } public async Task TaskValueTypeAction(int i, string s) { Console.WriteLine(s); return i; } public async Task> TaskOfTaskAction(int i, string s) { return TaskValueTypeAction(i, s); } public Task TaskValueTypeActionWithoutAsync(int i, string s) { return TaskValueTypeAction(i, s); } public async Task TaskActionWithException(int i, string s) { throw new NotImplementedException("Not Implemented Exception"); } public Task TaskActionWithExceptionWithoutAsync(int i, string s) { throw new NotImplementedException("Not Implemented Exception"); } public async Task TaskActionThrowAfterAwait(int i, string s) { await Task.Delay(500); throw new ArgumentException("Argument Exception"); } public TaskDerivedType TaskActionWithCustomTaskReturnType(int i, string s) { Console.WriteLine(s); return new TaskDerivedType(); } public TaskOfTDerivedType TaskActionWithCustomTaskOfTReturnType(int i, string s) { Console.WriteLine(s); return new TaskOfTDerivedType(1); } /// /// Returns a Task instead of a Task. This should throw an InvalidOperationException. /// /// public Task UnwrappedTask(int i, string s) { return Task.Factory.StartNew(async () => await Task.Delay(50)); } public string Echo(string input) { return input; } public string EchoWithException(string input) { throw new NotImplementedException(); } public dynamic ReturnTaskAsDynamicValue(int i, string s) { return Task.Factory.StartNew(() => i); } public class TaskDerivedType : Task { public TaskDerivedType() : base(() => Console.WriteLine("In The Constructor")) { } } public class TaskOfTDerivedType : Task { public TaskOfTDerivedType(T input) : base(() => input) { } } } }