public void Generate(IMethodSymbol symbol, StringBuilder sb) { if (symbol.MethodKind != MethodKind.Ordinary) { return; } sb.Append($"replace "); sb.AppendLine(symbol.GetMethodDeclaration()); sb.AppendLine(OpenCurlyBraces()); sb.AppendLine("try"); sb.AppendLine(OpenCurlyBraces()); sb.AppendLine(symbol.TraceEnterMethod()); foreach (IParameterSymbol parameter in symbol.Parameters) { sb.AppendLine(parameter.TraceParameter(symbol)); } sb.AppendLine(symbol.CallOriginalMethod()); sb.AppendLine(symbol.TraceReturnValue()); sb.AppendLine(symbol.TraceLeaveMethod()); sb.AppendLine(symbol.ReturnValue()); sb.AppendLine(CloseCurlyBraces()); sb.AppendLine("catch (Exception e)"); sb.AppendLine(OpenCurlyBraces()); sb.AppendLine(symbol.TraceException()); sb.AppendLine("throw;"); sb.AppendLine(CloseCurlyBraces()); sb.AppendLine(CloseCurlyBraces()); sb.AppendLine(); }
public void CallOriginalMethodTests(TypeKind typeKind, string methodName, string expected) { // Arange IMethodSymbol methodSymbol = GetMetodSymbol(TypeKind.Class, methodName); // Act var actual = methodSymbol.CallOriginalMethod(); // Assert Assert.Equal(expected, actual); }