提交 7ee0802f 编写于 作者: J John Hamby

Convert test to use the instrumentation checker.

上级 56e63772
......@@ -850,56 +850,49 @@ void L1()
// Method 5 is the synthesized instance constructor for D.
}
";
" + InstrumentationHelperSource;
string expectedOutput = @"Flushing
Method 1
File 1
True
True
True
Method 2
File 1
True
True
Method 4
File 1
True
True
True
True
False
True
False
True
True
True
True
True
Method 5
File 1
Method 7
File 1
True
True
False
True
True
True
True
True
True
True
True
True
True
True
";
var checker = new CSharpInstrumentationChecker();
checker.Method(1, 1, "public static void Main")
.True("TestMain();")
.True("Microsoft.CodeAnalysis.Runtime.Instrumentation.FlushPayload();");
checker.Method(2, 1, "static void TestMain")
.True("new D().M1();");
checker.Method(4, 1, "public void M1()")
.True("L1();")
.True("1")
.True("var f = new Func<int>")
.False("2")
.True("var f1 = new Func<int>")
.False("x + 3")
.True("var f2 = new Func<int, int>")
.True("x + 4")
.True("var f3 = new Func<int, int>")
.True("f();")
.True("f3(2);");
checker.Method(5, 1, snippet: null, expectBodySpan: false);
checker.Method(7, 1)
.True()
.False()
.True()
.True()
.True()
.True()
.True()
.True()
.True()
.True()
.True()
.True()
.True();
CompilationVerifier verifier = CompileAndVerify(source + InstrumentationHelperSource, expectedOutput: expectedOutput, options: TestOptions.ReleaseExe);
CompilationVerifier verifier = CompileAndVerify(source, expectedOutput: checker.ExpectedOutput, options: TestOptions.ReleaseExe);
verifier.VerifyDiagnostics();
verifier = CompileAndVerify(source + InstrumentationHelperSource, expectedOutput: expectedOutput, options: TestOptions.DebugExe);
checker.CompleteCheck(verifier.Compilation, source);
verifier = CompileAndVerify(source, expectedOutput: checker.ExpectedOutput, options: TestOptions.DebugExe);
verifier.VerifyDiagnostics();
checker.CompleteCheck(verifier.Compilation, source);
}
[Fact]
......
......@@ -272,18 +272,23 @@ protected BaseInstrumentationChecker()
/// It will be verified against the start of the actual method source span.
/// If no snippet is passed in, then snippet validation will be disabled for the whole method (subsequent calls to `True` or `False`).
/// </param>
public MethodChecker Method(int method, int file, string snippet = null)
public MethodChecker Method(int method, int file, string snippet = null, bool expectBodySpan = true)
{
AddConsoleExpectation($"Method {method}");
AddConsoleExpectation($"File {file}");
var result = new MethodChecker(this, noSnippets: snippet == null);
if (snippet == null)
// Most methods have a span that indicates that the method has been entered.
if (expectBodySpan)
{
return new MethodChecker(this, noSnippets: true).True();
result = result.True(snippet);
}
if (snippet != null)
{
_spanExpectations.Add(method, result);
}
var result = new MethodChecker(this).True(snippet);
_spanExpectations.Add(method, result);
return result;
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册