public void ClassWithAsyncMethod() { ClearMessage(); var type = testResult.Assembly.GetType("ClassWithAsyncMethod"); var instance = (dynamic)Activator.CreateInstance(type); TraceRunner.Capture(() => { var task = (Task)instance.MethodWithAwaitAsync("123", 42); task.Wait(); }); var methodBases = GetMethodInfoField(); Assert.Single(methodBases); var methodBase = methodBases.First(); Assert.Equal("MethodWithAwaitAsync", methodBase.Name); var messages = GetMessagesField(); Assert.Single(messages); var message = messages.First(); Assert.Equal("File name '123' with id '42'", message); }
public void ClassWithAsyncMethodWithFastPath(bool recurse) { ClearMessage(); var type = testResult.Assembly.GetType("ClassWithAsyncMethod"); var instance = (dynamic)Activator.CreateInstance(type); TraceRunner.Capture(() => { var task = (Task)instance.MethodWithFastPathAsync(recurse, "123", 42); task.Wait(); }); var methodBases = GetMethodInfoField(); // Interceptor can't deal with 2 test cases //Assert.Equal(recurse ? 2 : 1, methodBases.Count); var methodBase = methodBases.Last(); Assert.Equal("MethodWithFastPathAsync", methodBase.Name); var messages = GetMessagesField(); Assert.Equal(recurse ? 2 : 1, messages.Count); var message = messages.First(); Assert.Equal("File name '123' with id '42'", message); }
public void ClassWithAsyncMethodWithUnusedParameters() { ClearMessage(); var type = testResult.Assembly.GetType("ClassWithAsyncMethod"); var instance = (dynamic)Activator.CreateInstance(type); TraceRunner.Capture(() => { var task = (Task)instance.MethodWithAwaitButUnusedParametersAsync("123", 42); task.Wait(); }); var error = testResult.Errors.First(); Assert.Equal("Parameter 'fileName' is not available on the async state machine. Probably it has been optimized away by the compiler. Please update the format so it excludes this parameter.", error.Text); // Note: must prefer TimeSpan above long var interceptorTypes = GetInterceptorTypesField(); Assert.Single(interceptorTypes); var interceptorType = interceptorTypes.First(); Assert.Equal(InterceptorType.TimeSpan.ToString(), interceptorType); }
public void ClassWithAsyncWithoutFormattingMethod() { ClearMessage(); var type = testResult.Assembly.GetType("ClassWithAsyncMethod"); var instance = (dynamic)Activator.CreateInstance(type); TraceRunner.Capture(() => { var task = (Task)instance.MethodWithAwaitWithoutFormattingAsync("123", 42); task.Wait(); }); var methodBases = GetMethodInfoField(); Assert.Single(methodBases); var methodBase = methodBases.First(); Assert.Equal("MethodWithAwaitWithoutFormattingAsync", methodBase.Name); var messages = GetMessagesField(); Assert.Empty(messages); // Note: must prefer TimeSpan above long var interceptorTypes = GetInterceptorTypesField(); Assert.Single(interceptorTypes); var interceptorType = interceptorTypes.First(); Assert.Equal(InterceptorType.TimeSpan.ToString(), interceptorType); }
public void InheritedClassDoingConstructionCall() { var type = testResult.Assembly.GetType("InheritedClassDoingConstructionCall"); var message = TraceRunner.Capture(() => Activator.CreateInstance(type)); Assert.Single(message); Assert.True(message[0].StartsWith("InheritedClassDoingConstructionCall.ctor "), message[0]); }
public void ClassWithExpressionBodiedMember() { var type = testResult.Assembly.GetType("ClassWithExpressionBodiedMember"); var instance = (dynamic)Activator.CreateInstance(type); var message = TraceRunner.Capture(() => instance.Method()); Assert.StartsWith("ClassWithExpressionBodiedMember.get_FooBar ", message.First()); }
public void GenericClassWithMethod() { var type = testResult.Assembly.GetType("GenericClassWithMethod`1[[System.String, mscorlib]]"); var instance = (dynamic)Activator.CreateInstance(type); var message = TraceRunner.Capture(() => instance.Method()); Assert.Single(message); Assert.StartsWith("GenericClassWithMethod`1.Method ", message.First()); }
public void ClassWithAttribute() { var type = testResult.Assembly.GetType("ClassWithAttribute"); var instance = (dynamic)Activator.CreateInstance(type); var message = TraceRunner.Capture(() => instance.Method()); Assert.Single(message); Assert.StartsWith("ClassWithAttribute.Method ", message.First()); }
public void ClassWithConstructor() { var type = testResult.Assembly.GetType("ClassWithConstructor"); var message = TraceRunner.Capture(() => Activator.CreateInstance(type)); Assert.Equal(2, message.Count); Assert.StartsWith("ClassWithConstructor.cctor ", message[0]); Assert.StartsWith("ClassWithConstructor.ctor ", message[1]); }
public void MethodWithReturn() { var type = testResult.Assembly.GetType("MiscMethods"); var instance = (dynamic)Activator.CreateInstance(type); var message = TraceRunner.Capture(() => instance.MethodWithReturn()); Assert.Single(message); Assert.StartsWith("MiscMethods.MethodWithReturn ", message.First()); }
public void InheritedClass() { var type = testResult.Assembly.GetType("InheritedClass"); var message = TraceRunner.Capture(() => Activator.CreateInstance(type)); Assert.Single(message); var first = message.First(); Assert.True(first.StartsWith("InheritedClass.ctor "), first); }
public void ClassWithNoAttribute() { var message = TraceRunner.Capture(() => { var instance = testResult.GetInstance("ClassWithNoAttribute"); instance.Method(); }); Assert.Single(message); Assert.StartsWith("ClassWithNoAttribute.Method ", message.First()); }
public void ClassWithAsyncMethod() { var instance = testResult.GetInstance("ClassWithCompilerGeneratedTypes"); var message = TraceRunner.Capture(() => { var task = (Task)instance.AsyncMethod(); task.Wait(); }); Assert.Single(message); Assert.StartsWith("ClassWithCompilerGeneratedTypes.AsyncMethod ", message.First()); }
public void ClassWithAsyncMethodWithFastPath(bool recurse) { var type = testResult.Assembly.GetType("ClassWithAsyncMethod"); var instance = (dynamic)Activator.CreateInstance(type); var message = TraceRunner.Capture(() => { var task = (Task)instance.MethodWithFastPathAsync(recurse); task.Wait(); }); Assert.Equal(recurse ? 2 : 1, message.Count); Assert.StartsWith("ClassWithAsyncMethod.MethodWithFastPathAsync ", message.First()); }
public void ClassWithYieldMethod() { var instance = testResult.GetInstance("ClassWithCompilerGeneratedTypes"); var message = TraceRunner.Capture(() => { var task = (IEnumerable <string>)instance.YieldMethod(); task.ToList(); }); Assert.Empty(message); //TODO: support yield //Assert.True(message.First().StartsWith("ClassWithCompilerGeneratedTypes.YieldMethod ")); }
public void ClassWithAsyncMethod() { var type = testResult.Assembly.GetType("ClassWithAsyncMethod"); var instance = (dynamic)Activator.CreateInstance(type); var message = TraceRunner.Capture(() => { var task = (Task)instance.MethodWithAwaitAsync(); task.Wait(); }); Assert.Single(message); Assert.StartsWith("ClassWithAsyncMethod.MethodWithAwaitAsync ", message.First()); }
public void ClassWithYieldMethod() { var type = testResult.Assembly.GetType("ClassWithYieldMethod"); var instance = (dynamic)Activator.CreateInstance(type); var message = TraceRunner.Capture(() => { var task = (IEnumerable <string>)instance.YieldMethod(); task.ToList(); }); Assert.Empty(message); //TODO: support yield //Assert.True(message.First().StartsWith("ClassWithYieldMethod.YieldMethod ")); }
public void ClassWithGenericAsyncMethod() { ClearMessage(); var type = testResult.Assembly.GetType("ClassWithAsyncMethod"); var instance = (dynamic)Activator.CreateInstance(type); TraceRunner.Capture(() => { var task = (Task <int>)instance.GenericMethodAsync <int>(); task.Wait(); }); var methodBases = GetMethodInfoField(); Assert.Single(methodBases); var methodBase = methodBases.First(); Assert.Equal("GenericMethodAsync", methodBase.Name); }
public void ClassWithAsyncMethodThatThrowsException() { ClearMessage(); var type = testResult.Assembly.GetType("ClassWithAsyncMethod"); var instance = (dynamic)Activator.CreateInstance(type); TraceRunner.Capture(() => { try { var task = (Task)instance.MethodWithAwaitAndExceptionAsync("123", 42); task.Wait(); } catch (Exception) { // Expected } }); var methodBases = GetMethodInfoField(); var methodBase = methodBases.Last(); Assert.Equal("MethodWithAwaitAndExceptionAsync", methodBase.Name); var messages = GetMessagesField(); Assert.Single(messages); var message = messages.First(); Assert.Equal("File name '123' with id '42'", message); // Note: must prefer TimeSpan above long var interceptorTypes = GetInterceptorTypesField(); Assert.Single(interceptorTypes); var interceptorType = interceptorTypes.First(); Assert.Equal(InterceptorType.TimeSpan.ToString(), interceptorType); }
public void ClassWithAsyncMethodThatThrowsException() { var type = testResult.Assembly.GetType("ClassWithAsyncMethod"); var instance = (dynamic)Activator.CreateInstance(type); var message = TraceRunner.Capture(() => { try { var task = (Task)instance.MethodWithAwaitAndExceptionAsync(); task.Wait(); } catch (Exception) { // Expected } }); Assert.Single(message); Assert.StartsWith("ClassWithAsyncMethod.MethodWithAwaitAndExceptionAsync ", message.First()); }
public void ClassWithAsyncAndThisMethod() { ClearMessage(); var type = testResult.Assembly.GetType("ClassWithAsyncMethod"); var instance = (dynamic)Activator.CreateInstance(type); TraceRunner.Capture(() => { var task = (Task)instance.MethodWithAwaitAndThisAsync("123", 42); task.Wait(); }); var methodBases = GetMethodInfoField(); Assert.Single(methodBases); var methodBase = methodBases.First(); Assert.Equal("MethodWithAwaitAndThisAsync", methodBase.Name); var messages = GetMessagesField(); Assert.Single(messages); var message = messages.First(); Assert.Equal("Current object: 'TEST VALUE' | File name '123' with id '42'", message); // Note: must prefer TimeSpan above long var interceptorTypes = GetInterceptorTypesField(); Assert.Single(interceptorTypes); var interceptorType = interceptorTypes.First(); Assert.Equal(InterceptorType.TimeSpan.ToString(), interceptorType); }
public void ClassWithAsyncMethodThatThrowsException() { var type = testResult.Assembly.GetType("ClassWithAsyncMethod"); var instance = (dynamic)Activator.CreateInstance(type); TraceRunner.Capture(() => { try { var task = (Task)instance.MethodWithAwaitAndExceptionAsync(); task.Wait(); } catch (Exception) { // Expected } }); var methodBases = GetMethodInfoField(); var methodBase = methodBases.Last(); Assert.Equal("MethodWithAwaitAndExceptionAsync", methodBase.Name); }