Forge
csharpdeeb25a2
1using CascadeIDE.Services;
2using Xunit;
3
4namespace CascadeIDE.Tests;
5
6/// <summary>
7/// Тесты <see cref="CodeNavigationPresetMerge"/> не используют диск и <see cref="AppContext.BaseDirectory"/>.
8/// Вход для merge — JSON из <see cref="CodeNavigationPresetsLoader.ToPresetMergeJsonFromBundledToml"/> по встроенному бандлу (<see cref="CodeNavigationPresetsLoader.GetEmbeddedBundledPresetsToml"/>), как в рантайме без дублирования литералов.
9/// </summary>
10public sealed class CodeNavigationPresetMergeTests
11{
12 private static readonly string DefaultBundledMergeJson =
13 CodeNavigationPresetsLoader.ToPresetMergeJsonFromBundledToml(
14 CodeNavigationPresetsLoader.GetEmbeddedBundledPresetsToml());
15
16 [Fact]
17 public void Unknown_Preset_Returns_Error()
18 {
19 var (inc, exc, err) = CodeNavigationPresetMerge.Merge(
20 "no_such",
21 DefaultBundledMergeJson,
22 null,
23 null);
24 Assert.Null(inc);
25 Assert.Null(exc);
26 Assert.Contains("Неизвестный", err ?? "");
27 }
28
29 [Fact]
30 public void Peers_Only_From_Default_Presets()
31 {
32 var (inc, exc, err) = CodeNavigationPresetMerge.Merge(
33 "peers_only",
34 DefaultBundledMergeJson,
35 null,
36 null);
37 Assert.Null(err);
38 Assert.NotNull(inc);
39 Assert.Contains(CodeNavigationRelatedKinds.PartialPeer, inc);
40 Assert.Contains(CodeNavigationRelatedKinds.ProjectPeer, inc);
41 Assert.Equal(2, inc!.Count);
42 Assert.NotNull(exc);
43 Assert.Empty(exc!);
44 }
45
46 [Fact]
47 public void Request_Include_Overrides_Preset_Include()
48 {
49 var (inc, exc, err) = CodeNavigationPresetMerge.Merge(
50 "peers_only",
51 DefaultBundledMergeJson,
52 [CodeNavigationRelatedKinds.SameNamespace],
53 null);
54 Assert.Null(err);
55 Assert.NotNull(inc);
56 Assert.Single(inc!);
57 Assert.Equal(CodeNavigationRelatedKinds.SameNamespace, inc[0]);
58 }
59
60 [Fact]
61 public void Request_Exclude_Merges_With_Preset_Exclude()
62 {
63 var (inc, exc, err) = CodeNavigationPresetMerge.Merge(
64 "no_namespace_noise",
65 DefaultBundledMergeJson,
66 null,
67 [CodeNavigationRelatedKinds.TestCounterpart]);
68 Assert.Null(err);
69 Assert.Null(inc);
70 Assert.NotNull(exc);
71 Assert.Contains(CodeNavigationRelatedKinds.SameNamespace, exc);
72 Assert.Contains(CodeNavigationRelatedKinds.SameDirectory, exc);
73 Assert.Contains(CodeNavigationRelatedKinds.TestCounterpart, exc);
74 }
75}
76
View only · write via MCP/CIDE