public void MethodHasExpectedComplexity(string method, int expectedComplexity)
{
var tree = CSharpSyntaxTree.ParseText(method);
var compilation = CSharpCompilation.Create(
"x",
syntaxTrees: new[] { tree },
references: new MetadataReference[] { MetadataReference.CreateFromFile(typeof(object).Assembly.Location), MetadataReference.CreateFromFile(typeof(Task).Assembly.Location) },
options: new CSharpCompilationOptions(OutputKind.DynamicallyLinkedLibrary, usings: new[] { "System", "System.Threading.Tasks" }));
var model = compilation.GetSemanticModel(tree, true);
var syntaxNode = tree
.GetRoot()
.DescendantNodes()
.OfType<MethodDeclarationSyntax>()
.First();
var metrics = new m.Metrics();
var timer = metrics.Timer(
typeof(ProjectMetricTests),
"TestTimer",
m.TimeUnit.Milliseconds,
m.TimeUnit.Microseconds);
var result = timer.Time(() => _counter.Calculate(syntaxNode, model));
Assert.Equal(expectedComplexity, result);
}