Example #1
0
        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();
        }
Example #2
0
        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);
        }