src/SSC/ParallelDiffPathSegments.cs

実行済み 34 · 未実行 0 · 対象外 147
Coverage source: 043e27b9e5febd713c747d2558802e450fad8edd

実行済みCoberturaのhit数が1以上の行です。
未実行カバレッジ対象ですがhit数が0の行です。
対象外Coberturaに実行対象として記録されていない行です。
行状態HitsSource
1 対象外 namespace SSC;
2 対象外
3 対象外 /// <summary>
4 対象外 /// 差分 path の選択子が要素を識別する方法を表します。
5 対象外 /// </summary>
6 対象外 public enum ParallelDiffPathSelectorKind
7 対象外 {
8 対象外 /// <summary>
9 対象外 /// 比較 key の文字列表現で要素を識別します。
10 対象外 /// </summary>
11 対象外 Key,
12 対象外
13 対象外 /// <summary>
14 対象外 /// key を持たない sequence 内の並び順で要素を識別します。
15 対象外 /// </summary>
16 対象外 Ordinal,
17 対象外 }
18 対象外
19 対象外 /// <summary>
20 対象外 /// 差分 path segment の選択子を表します。
21 対象外 /// </summary>
22 対象外 public readonly struct ParallelDiffPathSelector
23 対象外 {
24 対象外 private ParallelDiffPathSelector(
25 対象外 ParallelDiffPathSelectorKind kind,
26 対象外 string? keyText,
27 対象外 int? ordinal)
28 対象外 {
29 実行済み 84 Kind = kind;
30 実行済み 84 KeyText = keyText;
31 実行済み 84 Ordinal = ordinal;
32 実行済み 84 }
33 対象外
34 対象外 /// <summary>
35 対象外 /// 要素を識別する方法を取得します。
36 対象外 /// </summary>
37 実行済み 201 public ParallelDiffPathSelectorKind Kind { get; }
38 対象外
39 対象外 /// <summary>
40 対象外 /// <see cref="Kind"/> が <see cref="ParallelDiffPathSelectorKind.Key"/> の場合の比較 key 文字列を取得します。
41 対象外 /// </summary>
42 実行済み 393 public string? KeyText { get; }
43 対象外
44 対象外 /// <summary>
45 対象外 /// <see cref="Kind"/> が <see cref="ParallelDiffPathSelectorKind.Ordinal"/> の場合の並び順を取得します。
46 対象外 /// </summary>
47 実行済み 5 public int? Ordinal { get; }
48 対象外
49 対象外 /// <summary>
50 対象外 /// 内部で生成した比較 key 文字列から key 選択子を生成します。
51 対象外 /// </summary>
52 対象外 internal static ParallelDiffPathSelector FromKey(string keyText)
53 対象外 {
54 実行済み 76 return new ParallelDiffPathSelector(ParallelDiffPathSelectorKind.Key, keyText, null);
55 対象外 }
56 対象外
57 対象外 /// <summary>
58 対象外 /// 内部で生成した並び順から ordinal 選択子を生成します。
59 対象外 /// </summary>
60 対象外 internal static ParallelDiffPathSelector FromOrdinal(int ordinal)
61 対象外 {
62 実行済み 8 return new ParallelDiffPathSelector(ParallelDiffPathSelectorKind.Ordinal, null, ordinal);
63 対象外 }
64 対象外 }
65 対象外
66 対象外 /// <summary>
67 対象外 /// SSC の差分 path を構成する具体的な segment 1件を表します。
68 対象外 /// </summary>
69 対象外 /// <remarks>
70 対象外 /// segment は <c>Root</c>、<c>Items[A]</c>、<c>Children[#0]</c> のような、dot で区切られる要素です。
71 対象外 /// この型は特定位置を表すため、pattern 用の wildcard は保持しません。
72 対象外 /// </remarks>
73 対象外 public sealed class ParallelDiffPathSegment
74 対象外 {
75 実行済み 188 private ParallelDiffPathSegment(
76 実行済み 188 string memberName,
77 実行済み 188 ParallelDiffPathSelector? selector)
78 対象外 {
79 実行済み 188 ValidateMemberName(memberName);
80 実行済み 173 MemberName = memberName;
81 実行済み 173 Selector = selector;
82 実行済み 173 }
83 対象外
84 対象外 /// <summary>
85 対象外 /// member 名を取得します。
86 対象外 /// </summary>
87 実行済み 411 public string MemberName { get; }
88 対象外
89 対象外 /// <summary>
90 対象外 /// container 要素を識別する選択子を取得します。通常の member の場合は <see langword="null"/> です。
91 対象外 /// </summary>
92 実行済み 370 public ParallelDiffPathSelector? Selector { get; }
93 対象外
94 対象外 /// <summary>
95 対象外 /// 選択子を持たない member segment を生成します。
96 対象外 /// </summary>
97 対象外 /// <param name="memberName">member 名。</param>
98 対象外 /// <returns>生成した segment。</returns>
99 対象外 /// <exception cref="ArgumentException">
100 対象外 /// <paramref name="memberName"/> が空、または path grammar で表現できない文字を含む場合。
101 対象外 /// </exception>
102 対象外 public static ParallelDiffPathSegment Member(string memberName)
103 対象外 {
104 実行済み 86 return new ParallelDiffPathSegment(memberName, selector: null);
105 対象外 }
106 対象外
107 対象外 /// <summary>
108 対象外 /// 比較 key で container 要素を識別する segment を生成します。
109 対象外 /// </summary>
110 対象外 /// <param name="memberName">container member 名。</param>
111 対象外 /// <param name="keyText">比較 key の文字列表現。</param>
112 対象外 /// <returns>生成した segment。</returns>
113 対象外 /// <exception cref="ArgumentException">
114 対象外 /// <paramref name="memberName"/> または <paramref name="keyText"/> が空、
115 対象外 /// もしくは <paramref name="memberName"/> が path grammar で表現できない文字を含む場合。
116 対象外 /// </exception>
117 対象外 public static ParallelDiffPathSegment Key(string memberName, string keyText)
118 対象外 {
119 実行済み 12 ArgumentException.ThrowIfNullOrEmpty(keyText);
120 実行済み 10 return new ParallelDiffPathSegment(memberName, ParallelDiffPathSelector.FromKey(keyText));
121 対象外 }
122 対象外
123 対象外 /// <summary>
124 対象外 /// 標準差分 path の生成用に、空文字列を含む比較 key で container 要素を識別する segment を生成します。
125 対象外 /// </summary>
126 対象外 /// <param name="memberName">container member 名。</param>
127 対象外 /// <param name="keyText">比較処理が生成した比較 key の文字列表現。</param>
128 対象外 /// <returns>標準差分 path 用の segment。</returns>
129 対象外 /// <remarks>
130 対象外 /// この内部経路は既存比較結果の標準 path 互換性を維持するためだけに使用します。
131 対象外 /// 公開 <see cref="Key(string, string)"/> の空文字列拒否契約は変更しません。
132 対象外 /// </remarks>
133 対象外 internal static ParallelDiffPathSegment StandardKey(string memberName, string keyText)
134 対象外 {
135 実行済み 66 ArgumentNullException.ThrowIfNull(keyText);
136 実行済み 66 return new ParallelDiffPathSegment(memberName, ParallelDiffPathSelector.FromKey(keyText));
137 対象外 }
138 対象外
139 対象外 /// <summary>
140 対象外 /// key を持たない sequence 内の並び順で要素を識別する segment を生成します。
141 対象外 /// </summary>
142 対象外 /// <param name="memberName">container member 名。</param>
143 対象外 /// <param name="ordinal">0から始まる並び順。</param>
144 対象外 /// <returns>生成した segment。</returns>
145 対象外 /// <exception cref="ArgumentException">
146 対象外 /// <paramref name="memberName"/> が空、または path grammar で表現できない文字を含む場合。
147 対象外 /// </exception>
148 対象外 /// <exception cref="ArgumentOutOfRangeException"><paramref name="ordinal"/> が負数の場合。</exception>
149 対象外 public static ParallelDiffPathSegment Ordinal(string memberName, int ordinal)
150 対象外 {
151 実行済み 9 ArgumentOutOfRangeException.ThrowIfNegative(ordinal);
152 実行済み 8 return new ParallelDiffPathSegment(memberName, ParallelDiffPathSelector.FromOrdinal(ordinal));
153 対象外 }
154 対象外
155 対象外 /// <summary>
156 対象外 /// 現在の選択子を維持し、member 名だけを変更した segment を生成します。
157 対象外 /// </summary>
158 対象外 /// <param name="memberName">新しい member 名。</param>
159 対象外 /// <returns>member 名を変更した segment。</returns>
160 対象外 /// <exception cref="ArgumentException">
161 対象外 /// <paramref name="memberName"/> が空、または path grammar で表現できない文字を含む場合。
162 対象外 /// </exception>
163 対象外 public ParallelDiffPathSegment WithMemberName(string memberName)
164 対象外 {
165 実行済み 18 return new ParallelDiffPathSegment(memberName, Selector);
166 対象外 }
167 対象外
168 対象外 private static void ValidateMemberName(string memberName)
169 対象外 {
170 実行済み 188 ArgumentException.ThrowIfNullOrEmpty(memberName);
171 対象外
172 実行済み 182 if (memberName.Contains('.')
173 実行済み 182 || memberName.Contains('[')
174 実行済み 182 || memberName.Contains(']'))
175 対象外 {
176 実行済み 9 throw new ArgumentException(
177 実行済み 9 "Diff path member name cannot contain '.', '[' or ']'.",
178 実行済み 9 nameof(memberName));
179 対象外 }
180 実行済み 173 }
181 対象外 }