< Summary - CoreWCF Coverage — PR #1766

Information
Class: CoreWCF.Diagnostics.EncodingFallbackAwareXmlTextWriter
Assembly: CoreWCF.Primitives
File(s): /home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.Primitives/src/CoreWCF/Diagnostics/EncodingFallbackAwareXmlTextWriter.cs
Line coverage
65%
Covered lines: 15
Uncovered lines: 8
Coverable lines: 23
Total lines: 62
Line coverage: 65.2%
Branch coverage
50%
Covered branches: 7
Total branches: 14
Branch coverage: 50%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
.ctor(...)100%11100%
WriteString(...)75%4466.66%
ContainsInvalidXmlChar(...)40%101057.14%

File(s)

/home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.Primitives/src/CoreWCF/Diagnostics/EncodingFallbackAwareXmlTextWriter.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.IO;
 5using System.Text;
 6using System.Xml;
 7
 8namespace CoreWCF.Diagnostics
 9{
 10    internal class EncodingFallbackAwareXmlTextWriter : XmlTextWriter
 11    {
 12        private readonly Encoding _encoding;
 13
 114        internal EncodingFallbackAwareXmlTextWriter(TextWriter writer) : base(writer)
 15        {
 116            _encoding = writer.Encoding;
 117        }
 18
 19        public override void WriteString(string value)
 20        {
 621            if (!string.IsNullOrEmpty(value) &&
 622                ContainsInvalidXmlChar(value))
 23            {
 024                byte[] blob = _encoding.GetBytes(value);
 025                value = _encoding.GetString(blob);
 26            }
 27
 628            base.WriteString(value);
 629        }
 30
 31        private bool ContainsInvalidXmlChar(string value)
 32        {
 633            if (string.IsNullOrEmpty(value))
 34            {
 035                return false;
 36            }
 37
 638            int i = 0;
 639            int len = value.Length;
 40
 11541            while (i < len)
 42            {
 10943                if (XmlConvert.IsXmlChar(value[i]))
 44                {
 10945                    i++;
 10946                    continue;
 47                }
 48
 049                if (i + 1 < len &&
 050                    XmlConvert.IsXmlSurrogatePair(value[i + 1], value[i]))
 51                {
 052                    i += 2;
 053                    continue;
 54                }
 55
 056                return true;
 57            }
 58
 659            return false;
 60        }
 61    }
 62}