src/SSC/GeneratedProjectionRuntime.cs

実行済み 220 · 未実行 53 · 対象外 358
Coverage source: 043e27b9e5febd713c747d2558802e450fad8edd

実行済みCoberturaのhit数が1以上の行です。
未実行カバレッジ対象ですがhit数が0の行です。
対象外Coberturaに実行対象として記録されていない行です。
行状態HitsSource
1 対象外 namespace SSC;
2 対象外
3 対象外 public readonly struct ParallelGeneratedMeta
4 対象外 {
5 対象外 private readonly IParallelNode _node;
6 対象外
7 対象外 public ParallelGeneratedMeta(IParallelNode node)
8 対象外 {
9 実行済み 13 _node = node;
10 実行済み 13 }
11 対象外
12 実行済み 9 public int Count => _node.Count;
13 対象外
14 実行済み 4 public string? KeyText => _node.KeyText;
15 対象外
16 未実行 0 public ValueState GetState(int modelIndex) => _node.GetState(modelIndex);
17 対象外 }
18 対象外
19 対象外 public sealed class ParallelGeneratedDictionary<TKey, TElement, TView> : IEnumerable<TView>
20 対象外 where TKey : notnull
21 対象外 {
22 対象外 private readonly IReadOnlyList<ParallelNode<TElement>> _nodes;
23 対象外 private readonly int _modelCount;
24 対象外 private readonly Func<ParallelNode<TElement>, TView> _viewFactory;
25 対象外 private Dictionary<string, int>? _keyIndexCache;
26 対象外 private Dictionary<object, int>? _keyValueIndexCache;
27 対象外
28 実行済み 40 public ParallelGeneratedDictionary(
29 実行済み 40 IReadOnlyList<ParallelNode<TElement>> nodes,
30 実行済み 40 int modelCount,
31 実行済み 40 Func<ParallelNode<TElement>, TView> viewFactory)
32 対象外 {
33 実行済み 40 ArgumentNullException.ThrowIfNull(nodes);
34 実行済み 40 ArgumentOutOfRangeException.ThrowIfNegative(modelCount);
35 実行済み 40 ArgumentNullException.ThrowIfNull(viewFactory);
36 実行済み 40 _nodes = nodes;
37 実行済み 40 _modelCount = modelCount;
38 実行済み 40 _viewFactory = viewFactory;
39 実行済み 40 }
40 対象外
41 未実行 0 public int Count => _nodes.Count;
42 対象外
43 対象外 public TView this[TKey key]
44 対象外 {
45 対象外 get
46 対象外 {
47 実行済み 32 ArgumentNullException.ThrowIfNull(key);
48 実行済み 32 return ResolveByKeyValue(NormalizeKey(key));
49 対象外 }
50 対象外 }
51 対象外
52 対象外 public TView AtIndex(int index)
53 対象外 {
54 実行済み 2 ValidateIndex(index);
55 実行済み 2 return _viewFactory(_nodes[index]);
56 対象外 }
57 対象外
58 対象外 public TView ByPathKey(string discriminator)
59 対象外 {
60 実行済み 6 ArgumentNullException.ThrowIfNull(discriminator);
61 実行済み 6 if (!ParallelGeneratedKeyText.TryUnescapeXPathLikeDiscriminator(discriminator, out var keyText))
62 対象外 {
63 未実行 0 keyText = discriminator;
64 対象外 }
65 対象外
66 実行済み 6 return ResolveByKeyText(keyText, "generated dictionary");
67 対象外 }
68 対象外
69 対象外 public ParallelGeneratedModelList<TElement, TView> SelectModel(int modelIndex)
70 対象外 {
71 未実行 0 ValidateModelIndex(modelIndex);
72 未実行 0 return new ParallelGeneratedModelList<TElement, TView>(_nodes, _viewFactory, modelIndex);
73 対象外 }
74 対象外
75 対象外 public IEnumerator<TView> GetEnumerator()
76 対象外 {
77 未実行 0 for (var index = 0; index < _nodes.Count; index++)
78 対象外 {
79 未実行 0 yield return _viewFactory(_nodes[index]);
80 対象外 }
81 未実行 0 }
82 対象外
83 未実行 0 System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => GetEnumerator();
84 対象外
85 対象外 private TView ResolveByKeyText(string keyText, string containerName)
86 対象外 {
87 実行済み 6 if (GetKeyIndexCache().TryGetValue(keyText, out var index))
88 対象外 {
89 実行済み 6 return _viewFactory(_nodes[index]);
90 対象外 }
91 対象外
92 未実行 0 throw new CompareExecutionException(
93 未実行 0 CompareIssueCode.KeyNotFound,
94 未実行 0 $"key '{keyText}' was not found in {containerName}.");
95 対象外 }
96 対象外
97 対象外 private TView ResolveByKeyValue(object key)
98 対象外 {
99 実行済み 32 if (GetKeyValueIndexCache().TryGetValue(key, out var index))
100 対象外 {
101 実行済み 31 return _viewFactory(_nodes[index]);
102 対象外 }
103 対象外
104 実行済み 1 throw new CompareExecutionException(
105 実行済み 1 CompareIssueCode.KeyNotFound,
106 実行済み 1 $"key '{key}' was not found in generated dictionary.");
107 対象外 }
108 対象外
109 対象外 private void ValidateIndex(int index)
110 対象外 {
111 実行済み 2 if (index >= 0 && index < _nodes.Count)
112 対象外 {
113 実行済み 2 return;
114 対象外 }
115 対象外
116 未実行 0 throw new CompareExecutionException(
117 未実行 0 CompareIssueCode.ModelIndexOutOfRange,
118 未実行 0 $"dictionary index '{index}' is out of range for count '{_nodes.Count}'.");
119 対象外 }
120 対象外
121 対象外 private void ValidateModelIndex(int modelIndex)
122 対象外 {
123 未実行 0 if (modelIndex >= 0 && modelIndex < _modelCount)
124 対象外 {
125 未実行 0 return;
126 対象外 }
127 対象外
128 未実行 0 throw new CompareExecutionException(
129 未実行 0 CompareIssueCode.ModelIndexOutOfRange,
130 未実行 0 $"model index '{modelIndex}' is out of range for count '{_modelCount}'.");
131 対象外 }
132 対象外
133 対象外 private Dictionary<string, int> GetKeyIndexCache()
134 対象外 {
135 実行済み 6 if (_keyIndexCache is not null)
136 対象外 {
137 未実行 0 return _keyIndexCache;
138 対象外 }
139 対象外
140 実行済み 6 _keyIndexCache = ParallelGeneratedKeyText.CreateKeyIndexCache(_nodes);
141 実行済み 6 return _keyIndexCache;
142 対象外 }
143 対象外
144 対象外 private Dictionary<object, int> GetKeyValueIndexCache()
145 対象外 {
146 実行済み 32 if (_keyValueIndexCache is not null)
147 対象外 {
148 未実行 0 return _keyValueIndexCache;
149 対象外 }
150 対象外
151 実行済み 64 var comparer = _nodes.FirstOrDefault(static node => node.KeyComparer is not null)?.KeyComparer
152 実行済み 32 ?? EqualityComparer<object>.Default;
153 実行済み 32 var keyValueIndexCache = new Dictionary<object, int>(comparer);
154 実行済み 168 for (var index = 0; index < _nodes.Count; index++)
155 対象外 {
156 実行済み 52 var keyValue = _nodes[index].KeyValue;
157 実行済み 52 if (keyValue is not null)
158 対象外 {
159 実行済み 52 keyValueIndexCache.TryAdd(keyValue, index);
160 対象外 }
161 対象外 }
162 対象外
163 実行済み 32 _keyValueIndexCache = keyValueIndexCache;
164 実行済み 32 return _keyValueIndexCache;
165 対象外 }
166 対象外
167 対象外 private static object NormalizeKey(object key) =>
168 実行済み 32 key is DateTime dateTime ? dateTime.ToUniversalTime() : key;
169 対象外 }
170 対象外
171 対象外 public sealed class ParallelGeneratedList<TElement, TView> : IReadOnlyList<TView>
172 対象外 {
173 対象外 private readonly IReadOnlyList<ParallelNode<TElement>> _nodes;
174 対象外 private readonly int _modelCount;
175 対象外 private readonly Func<ParallelNode<TElement>, TView> _viewFactory;
176 対象外 private Dictionary<string, int>? _keyIndexCache;
177 対象外
178 対象外 public ParallelGeneratedList(IReadOnlyList<ParallelNode<TElement>> nodes, Func<ParallelNode<TElement>, TView> viewFactory)
179 未実行 0 : this(nodes, nodes.Count > 0 ? nodes[0].Count : 0, viewFactory)
180 対象外 {
181 未実行 0 }
182 対象外
183 実行済み 51 public ParallelGeneratedList(
184 実行済み 51 IReadOnlyList<ParallelNode<TElement>> nodes,
185 実行済み 51 int modelCount,
186 実行済み 51 Func<ParallelNode<TElement>, TView> viewFactory)
187 対象外 {
188 実行済み 51 ArgumentNullException.ThrowIfNull(nodes);
189 実行済み 51 ArgumentOutOfRangeException.ThrowIfNegative(modelCount);
190 実行済み 51 ArgumentNullException.ThrowIfNull(viewFactory);
191 実行済み 51 _nodes = nodes;
192 実行済み 51 _modelCount = modelCount;
193 実行済み 51 _viewFactory = viewFactory;
194 実行済み 51 }
195 対象外
196 未実行 0 public int Count => _nodes.Count;
197 対象外
198 対象外 public TView this[int index]
199 対象外 {
200 対象外 get
201 対象外 {
202 実行済み 30 ValidateIndex(index);
203 実行済み 29 return _viewFactory(_nodes[index]);
204 対象外 }
205 対象外 }
206 対象外
207 対象外 public TView this[string keyText]
208 対象外 {
209 対象外 get
210 対象外 {
211 実行済み 4 ArgumentNullException.ThrowIfNull(keyText);
212 対象外
213 実行済み 4 var keyIndexCache = GetKeyIndexCache();
214 実行済み 4 if (ParallelGeneratedKeyText.TryUnescapeXPathLikeDiscriminator(keyText, out var unescapedKeyText)
215 実行済み 4 && keyIndexCache.TryGetValue(unescapedKeyText, out var index))
216 対象外 {
217 未実行 0 return _viewFactory(_nodes[index]);
218 対象外 }
219 対象外
220 実行済み 4 if (keyIndexCache.TryGetValue(keyText, out index))
221 対象外 {
222 実行済み 3 return _viewFactory(_nodes[index]);
223 対象外 }
224 対象外
225 実行済み 1 throw new CompareExecutionException(
226 実行済み 1 CompareIssueCode.KeyNotFound,
227 実行済み 1 $"key '{keyText}' was not found in generated list.");
228 対象外 }
229 対象外 }
230 対象外
231 対象外 public ParallelGeneratedModelList<TElement, TView> SelectModel(int modelIndex)
232 対象外 {
233 実行済み 7 ValidateModelIndex(modelIndex);
234 実行済み 6 return new ParallelGeneratedModelList<TElement, TView>(_nodes, _viewFactory, modelIndex);
235 対象外 }
236 対象外
237 対象外 private void ValidateIndex(int index)
238 対象外 {
239 実行済み 30 if (index >= 0 && index < _nodes.Count)
240 対象外 {
241 実行済み 29 return;
242 対象外 }
243 対象外
244 実行済み 1 throw new CompareExecutionException(
245 実行済み 1 CompareIssueCode.ModelIndexOutOfRange,
246 実行済み 1 $"list index '{index}' is out of range for count '{_nodes.Count}'.");
247 対象外 }
248 対象外
249 対象外 private void ValidateModelIndex(int modelIndex)
250 対象外 {
251 実行済み 7 if (modelIndex >= 0 && modelIndex < _modelCount)
252 対象外 {
253 実行済み 6 return;
254 対象外 }
255 対象外
256 実行済み 1 throw new CompareExecutionException(
257 実行済み 1 CompareIssueCode.ModelIndexOutOfRange,
258 実行済み 1 $"model index '{modelIndex}' is out of range for count '{_modelCount}'.");
259 対象外 }
260 対象外
261 対象外 private Dictionary<string, int> GetKeyIndexCache()
262 対象外 {
263 実行済み 4 if (_keyIndexCache is not null)
264 対象外 {
265 未実行 0 return _keyIndexCache;
266 対象外 }
267 対象外
268 実行済み 4 _keyIndexCache = ParallelGeneratedKeyText.CreateKeyIndexCache(_nodes);
269 実行済み 4 return _keyIndexCache;
270 対象外 }
271 対象外
272 未実行 0 public TView AtIndex(int index) => this[index];
273 対象外
274 未実行 0 public TView ByPathKey(string discriminator) => this[discriminator];
275 対象外
276 対象外 public IEnumerator<TView> GetEnumerator()
277 対象外 {
278 実行済み 102 for (var index = 0; index < _nodes.Count; index++)
279 対象外 {
280 実行済み 35 yield return _viewFactory(_nodes[index]);
281 対象外 }
282 実行済み 16 }
283 対象外
284 未実行 0 System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => GetEnumerator();
285 対象外 }
286 対象外
287 対象外 internal static class ParallelGeneratedKeyText
288 対象外 {
289 対象外 public static Dictionary<string, int> CreateKeyIndexCache<TElement>(IReadOnlyList<ParallelNode<TElement>> nodes)
290 対象外 {
291 実行済み 10 var keyIndexCache = new Dictionary<string, int>(StringComparer.Ordinal);
292 実行済み 68 for (var index = 0; index < nodes.Count; index++)
293 対象外 {
294 実行済み 24 var keyText = nodes[index].KeyText;
295 実行済み 24 if (keyText is not null)
296 対象外 {
297 実行済み 24 keyIndexCache.TryAdd(keyText, index);
298 対象外 }
299 対象外 }
300 対象外
301 実行済み 10 return keyIndexCache;
302 対象外 }
303 対象外
304 対象外 public static bool TryUnescapeXPathLikeDiscriminator(string keyText, out string unescapedKeyText)
305 対象外 {
306 実行済み 10 var builder = new System.Text.StringBuilder(keyText.Length);
307 実行済み 10 var changed = false;
308 実行済み 80 for (var index = 0; index < keyText.Length; index++)
309 対象外 {
310 実行済み 30 var current = keyText[index];
311 実行済み 30 if (current != '\\')
312 対象外 {
313 実行済み 22 builder.Append(current);
314 実行済み 22 continue;
315 対象外 }
316 対象外
317 実行済み 8 if (index + 1 >= keyText.Length)
318 対象外 {
319 未実行 0 unescapedKeyText = string.Empty;
320 未実行 0 return false;
321 対象外 }
322 対象外
323 実行済み 8 var escaped = keyText[++index];
324 実行済み 8 if (escaped is not (']' or '\\' or '#'))
325 対象外 {
326 未実行 0 unescapedKeyText = string.Empty;
327 未実行 0 return false;
328 対象外 }
329 対象外
330 実行済み 8 builder.Append(escaped);
331 実行済み 8 changed = true;
332 対象外 }
333 対象外
334 実行済み 10 unescapedKeyText = changed ? builder.ToString() : keyText;
335 実行済み 10 return changed;
336 対象外 }
337 対象外 }
338 対象外
339 対象外 public sealed class ParallelGeneratedModelList<TElement, TView> : IReadOnlyList<TView>
340 対象外 {
341 対象外 private readonly IReadOnlyList<ParallelNode<TElement>> _nodes;
342 対象外 private readonly Func<ParallelNode<TElement>, TView> _viewFactory;
343 対象外 private readonly int[] _selectedNodeIndexes;
344 対象外
345 実行済み 6 internal ParallelGeneratedModelList(
346 実行済み 6 IReadOnlyList<ParallelNode<TElement>> nodes,
347 実行済み 6 Func<ParallelNode<TElement>, TView> viewFactory,
348 実行済み 6 int modelIndex)
349 対象外 {
350 実行済み 6 ArgumentNullException.ThrowIfNull(nodes);
351 実行済み 6 ArgumentNullException.ThrowIfNull(viewFactory);
352 実行済み 6 _nodes = nodes;
353 実行済み 6 _viewFactory = viewFactory;
354 対象外
355 実行済み 6 var selectedNodeIndexes = new List<int>(_nodes.Count);
356 実行済み 36 for (var index = 0; index < _nodes.Count; index++)
357 対象外 {
358 実行済み 12 if (_nodes[index].GetPresenceState(modelIndex) != NodePresenceState.Missing)
359 対象外 {
360 実行済み 8 selectedNodeIndexes.Add(index);
361 対象外 }
362 対象外 }
363 対象外
364 実行済み 6 _selectedNodeIndexes = [.. selectedNodeIndexes];
365 実行済み 6 }
366 対象外
367 未実行 0 public int Count => _selectedNodeIndexes.Length;
368 対象外
369 対象外 public TView this[int index]
370 対象外 {
371 対象外 get
372 対象外 {
373 実行済み 3 ValidateIndex(index);
374 実行済み 2 return _viewFactory(_nodes[_selectedNodeIndexes[index]]);
375 対象外 }
376 対象外 }
377 対象外
378 対象外 public IEnumerator<TView> GetEnumerator()
379 対象外 {
380 実行済み 40 for (var index = 0; index < _selectedNodeIndexes.Length; index++)
381 対象外 {
382 実行済み 12 yield return _viewFactory(_nodes[_selectedNodeIndexes[index]]);
383 対象外 }
384 実行済み 8 }
385 対象外
386 未実行 0 System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator() => GetEnumerator();
387 対象外
388 対象外 private void ValidateIndex(int index)
389 対象外 {
390 実行済み 3 if (index >= 0 && index < _selectedNodeIndexes.Length)
391 対象外 {
392 実行済み 2 return;
393 対象外 }
394 対象外
395 実行済み 1 throw new CompareExecutionException(
396 実行済み 1 CompareIssueCode.ModelIndexOutOfRange,
397 実行済み 1 $"list index '{index}' is out of range for count '{_selectedNodeIndexes.Length}'.");
398 対象外 }
399 対象外 }
400 対象外
401 対象外 public sealed class ParallelGeneratedValue<TModel, TValue>
402 対象外 {
403 対象外 private readonly ParallelNode<TModel> _node;
404 対象外 private readonly IParallelNode? _valueNode;
405 対象外 private readonly Func<TModel, TValue> _getter;
406 対象外
407 実行済み 99 public ParallelGeneratedValue(ParallelNode<TModel> node, Func<TModel, TValue> getter)
408 対象外 {
409 実行済み 99 ArgumentNullException.ThrowIfNull(node);
410 実行済み 99 ArgumentNullException.ThrowIfNull(getter);
411 実行済み 99 _node = node;
412 実行済み 99 _getter = getter;
413 実行済み 99 }
414 対象外
415 対象外 public ParallelGeneratedValue(
416 対象外 ParallelNode<TModel> node,
417 対象外 IParallelNode valueNode,
418 対象外 Func<TModel, TValue> getter)
419 実行済み 95 : this(node, getter)
420 対象外 {
421 実行済み 95 ArgumentNullException.ThrowIfNull(valueNode);
422 実行済み 95 _valueNode = valueNode;
423 実行済み 95 }
424 対象外
425 実行済み 80 public TValue this[int modelIndex] => ResolveValue(modelIndex, out _);
426 対象外
427 対象外 public ValueState GetState(int modelIndex)
428 対象外 {
429 実行済み 17 if (_valueNode is not null)
430 対象外 {
431 実行済み 13 return _valueNode.GetState(modelIndex);
432 対象外 }
433 対象外
434 実行済み 4 var selectedValue = ResolveValue(modelIndex, out var selectedPresence);
435 実行済み 4 return GetState(
436 実行済み 4 modelIndex,
437 実行済み 4 selectedValue,
438 実行済み 4 selectedPresence,
439 実行済み 4 index =>
440 実行済み 4 {
441 実行済み 3 var value = ResolveValue(index, out var presence);
442 実行済み 3 return new ResolvedGeneratedValue(value, presence);
443 実行済み 4 });
444 対象外 }
445 対象外
446 対象外 private ValueState GetState(
447 対象外 int modelIndex,
448 対象外 TValue selectedValue,
449 対象外 NodePresenceState selectedPresence,
450 対象外 Func<int, ResolvedGeneratedValue> getResolvedValue)
451 対象外 {
452 実行済み 4 if (selectedPresence == NodePresenceState.Missing)
453 対象外 {
454 実行済み 1 return ValueState.Missing;
455 対象外 }
456 対象外
457 実行済み 3 if (_node.Count <= 1)
458 対象外 {
459 未実行 0 return ValueState.Missing;
460 対象外 }
461 対象外
462 実行済み 3 var matched = true;
463 実行済み 16 for (var index = 0; index < _node.Count; index++)
464 対象外 {
465 実行済み 6 if (index == modelIndex)
466 対象外 {
467 対象外 continue;
468 対象外 }
469 対象外
470 実行済み 3 var other = getResolvedValue(index);
471 実行済み 3 if (other.Presence == NodePresenceState.Missing)
472 対象外 {
473 未実行 0 matched = false;
474 未実行 0 break;
475 対象外 }
476 対象外
477 実行済み 3 if (other.Presence != selectedPresence)
478 対象外 {
479 実行済み 1 matched = false;
480 実行済み 1 break;
481 対象外 }
482 対象外
483 実行済み 2 if (selectedPresence == NodePresenceState.PresentValue
484 実行済み 2 && !EqualityComparer<TValue>.Default.Equals(selectedValue, other.Value))
485 対象外 {
486 未実行 0 matched = false;
487 未実行 0 break;
488 対象外 }
489 対象外 }
490 対象外
491 実行済み 3 return ValueStateExtensions.ToComparisonState(hasComparisonTarget: true, matched);
492 対象外 }
493 対象外
494 対象外 public ParallelGeneratedValue<TModel, TNext> Select<TNext>(Func<TValue, TNext> selector)
495 対象外 {
496 実行済み 1 ArgumentNullException.ThrowIfNull(selector);
497 対象外
498 実行済み 1 return new ParallelGeneratedValue<TModel, TNext>(
499 実行済み 1 _node,
500 実行済み 1 model =>
501 実行済み 1 {
502 実行済み 6 var value = _getter(model);
503 実行済み 6 if (value is null)
504 実行済み 1 {
505 未実行 0 return default!;
506 実行済み 1 }
507 実行済み 1
508 実行済み 6 return selector(value);
509 実行済み 1 });
510 対象外 }
511 対象外
512 対象外 public override string ToString()
513 対象外 {
514 実行済み 3 return _valueNode?.ToString() ?? CreateDerivedLeaf().ToString();
515 対象外 }
516 対象外
517 対象外 private ParallelNode<TValue> CreateDerivedLeaf()
518 対象外 {
519 実行済み 1 var values = new TValue?[_node.Count];
520 実行済み 1 var states = new ValueState[_node.Count];
521 実行済み 6 for (var modelIndex = 0; modelIndex < _node.Count; modelIndex++)
522 対象外 {
523 実行済み 2 values[modelIndex] = ResolveValue(modelIndex, out _);
524 実行済み 2 states[modelIndex] = GetState(modelIndex);
525 対象外 }
526 対象外
527 実行済み 1 return ParallelNode<TValue>.CreateLeaf(values, states);
528 対象外 }
529 対象外
530 対象外 private readonly struct ResolvedGeneratedValue
531 対象外 {
532 対象外 public ResolvedGeneratedValue(TValue value, NodePresenceState presence)
533 対象外 {
534 実行済み 3 Value = value;
535 実行済み 3 Presence = presence;
536 実行済み 3 }
537 対象外
538 実行済み 2 public TValue Value { get; }
539 対象外
540 実行済み 6 public NodePresenceState Presence { get; }
541 対象外 }
542 対象外
543 対象外 private TValue ResolveValue(int modelIndex, out NodePresenceState state)
544 対象外 {
545 実行済み 89 state = _node.GetPresenceState(modelIndex);
546 実行済み 89 if (state == NodePresenceState.Missing)
547 対象外 {
548 実行済み 7 return default!;
549 対象外 }
550 対象外
551 実行済み 82 var model = _node[modelIndex];
552 実行済み 82 if (model is null)
553 対象外 {
554 未実行 0 state = NodePresenceState.PresentNull;
555 未実行 0 return default!;
556 対象外 }
557 対象外
558 実行済み 82 var value = _getter(model);
559 実行済み 82 if (value is null)
560 対象外 {
561 実行済み 1 state = NodePresenceState.PresentNull;
562 実行済み 1 return default!;
563 対象外 }
564 対象外
565 実行済み 81 state = NodePresenceState.PresentValue;
566 実行済み 81 return value;
567 対象外 }
568 対象外 }
569 対象外
570 対象外 public static class ParallelGeneratedRuntime
571 対象外 {
572 対象外 public static ParallelNode<T> RequireNode<T>(Parallel<T> node, string apiName)
573 対象外 {
574 実行済み 17 ArgumentNullException.ThrowIfNull(node);
575 実行済み 17 if (node is ParallelNode<T> parallelNode)
576 対象外 {
577 実行済み 16 return parallelNode;
578 対象外 }
579 対象外
580 実行済み 1 throw new ArgumentException(
581 実行済み 1 $"{apiName} can be used only with compare result nodes.",
582 実行済み 1 nameof(node));
583 対象外 }
584 対象外
585 対象外 public static ParallelNode<TMember> RequireMemberNode<TParent, TMember>(
586 対象外 ParallelNode<TParent> node,
587 対象外 string memberName,
588 対象外 string apiName)
589 対象外 {
590 実行済み 41 ArgumentNullException.ThrowIfNull(node);
591 実行済み 41 ArgumentException.ThrowIfNullOrEmpty(memberName);
592 実行済み 41 ArgumentException.ThrowIfNullOrEmpty(apiName);
593 対象外
594 実行済み 41 var internalNode = (IParallelNodeInternal)node;
595 実行済み 41 if (!internalNode.TryGetMemberNode(memberName, out var rawMemberNode))
596 対象外 {
597 未実行 0 throw new ArgumentException(
598 未実行 0 $"{apiName} cannot find generated member node '{memberName}'.",
599 未実行 0 nameof(memberName));
600 対象外 }
601 対象外
602 実行済み 41 if (rawMemberNode is ParallelNode<TMember> memberNode)
603 対象外 {
604 実行済み 41 return memberNode;
605 対象外 }
606 対象外
607 未実行 0 throw new ArgumentException(
608 未実行 0 $"{apiName} can be used only with generated member node '{memberName}'.",
609 未実行 0 nameof(memberName));
610 対象外 }
611 対象外
612 対象外 public static IParallelNode RequireMemberNode<TParent>(
613 対象外 ParallelNode<TParent> node,
614 対象外 string memberName,
615 対象外 string apiName)
616 対象外 {
617 実行済み 95 ArgumentNullException.ThrowIfNull(node);
618 実行済み 95 ArgumentException.ThrowIfNullOrEmpty(memberName);
619 実行済み 95 ArgumentException.ThrowIfNullOrEmpty(apiName);
620 対象外
621 実行済み 95 var internalNode = (IParallelNodeInternal)node;
622 実行済み 95 if (internalNode.TryGetMemberNode(memberName, out var rawMemberNode))
623 対象外 {
624 実行済み 95 return rawMemberNode;
625 対象外 }
626 対象外
627 未実行 0 throw new ArgumentException(
628 未実行 0 $"{apiName} cannot find generated member node '{memberName}'.",
629 未実行 0 nameof(memberName));
630 対象外 }
631 対象外 }