| Name | Message | Date |
|---|---|---|
| 📄 AnalyzeShould.cs | 5 days ago |
📄
core/tests/AnalyzerTests/AnalyzeShould.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
using System.Collections.Immutable; using System.Linq; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Shouldly; using Xunit; namespace Cfa.Tests.AnalyzerTests; public sealed class AnalyzeShould { [Fact] public void KeepTheOriginWhenItsCallsLeadBackToIt() { // Arrange var compilation = CSharpCompilation.Create( "Example", [CSharpSyntaxTree.ParseText("class Example { void Start() { Start(); } }")], [MetadataReference.CreateFromFile(typeof(object).Assembly.Location)] ); var origin = compilation.GetTypeByMetadataName("Example")!.GetMembers("Start").Single(); var calls = ImmutableDictionary.CreateBuilder<ISymbol, IImmutableList<Call>>(SymbolEqualityComparer.Default); calls[origin] = [new(origin, LinkKind.Direct)]; var graph = new CallGraph( origin, calls.ToImmutable(), ImmutableDictionary.Create<ISymbol, IImmutableList<Call>>(SymbolEqualityComparer.Default) ); // Act var analysis = Analyzer.Analyze(graph); // Assert analysis.Appearances[origin].ShouldBe(1u); analysis.CallsTo[origin].ShouldHaveSingleItem().Target.ShouldBe(origin); } }