< Summary

Information
Class: System.Text.Json.Serialization.Converters.IEnumerableDefaultConverter<T1, T2>
Assembly: System.Text.Json
File(s): C:\h\w\B31A098C\w\BB5A0A33\e\runtime-utils\Runner\runtime\src\libraries\System.Text.Json\src\System\Text\Json\Serialization\Converters\Collection\IEnumerableDefaultConverter.cs
Line coverage
0%
Covered lines: 0
Uncovered lines: 30
Coverable lines: 30
Total lines: 59
Line coverage: 0%
Branch coverage
0%
Covered branches: 0
Total branches: 10
Branch coverage: 0%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
OnWriteResume(...)0%10100%

File(s)

C:\h\w\B31A098C\w\BB5A0A33\e\runtime-utils\Runner\runtime\src\libraries\System.Text.Json\src\System\Text\Json\Serialization\Converters\Collection\IEnumerableDefaultConverter.cs

#LineLine coverage
 1// Licensed to the .NET Foundation under one or more agreements.
 2// The .NET Foundation licenses this file to you under the MIT license.
 3
 4using System.Collections.Generic;
 5using System.Diagnostics;
 6
 7namespace System.Text.Json.Serialization.Converters
 8{
 9    /// <summary>
 10    /// Default base class implementation of <cref>JsonIEnumerableConverter{TCollection, TElement}</cref>.
 11    /// </summary>
 12    internal abstract class IEnumerableDefaultConverter<TCollection, TElement> : JsonCollectionConverter<TCollection, TE
 13        where TCollection : IEnumerable<TElement>
 14    {
 015        internal override bool CanHaveMetadata => true;
 16
 17        protected override bool OnWriteResume(Utf8JsonWriter writer, TCollection value, JsonSerializerOptions options, r
 018        {
 019            Debug.Assert(value is not null);
 20
 21            IEnumerator<TElement> enumerator;
 022            if (state.Current.CollectionEnumerator == null)
 023            {
 024                enumerator = value.GetEnumerator();
 025                state.Current.CollectionEnumerator = enumerator;
 026                if (!enumerator.MoveNext())
 027                {
 028                    enumerator.Dispose();
 029                    return true;
 30                }
 031            }
 32            else
 033            {
 034                Debug.Assert(state.Current.CollectionEnumerator is IEnumerator<TElement>);
 035                enumerator = (IEnumerator<TElement>)state.Current.CollectionEnumerator;
 036            }
 37
 038            JsonConverter<TElement> converter = GetElementConverter(ref state);
 39            do
 040            {
 041                if (ShouldFlush(ref state, writer))
 042                {
 043                    return false;
 44                }
 45
 046                TElement element = enumerator.Current;
 047                if (!converter.TryWrite(writer, element, options, ref state))
 048                {
 049                    return false;
 50                }
 51
 052                state.Current.EndCollectionElement();
 053            } while (enumerator.MoveNext());
 54
 055            enumerator.Dispose();
 056            return true;
 057        }
 58    }
 59}