< Summary - CoreWCF Coverage — PR #1766

Information
Class: CoreWCF.Channels.XmlBufferedByteStreamReader
Assembly: CoreWCF.Primitives
File(s): /home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.Primitives/src/CoreWCF/Channels/XmlBufferedByteStreamReader.cs
Line coverage
90%
Covered lines: 30
Uncovered lines: 3
Coverable lines: 33
Total lines: 85
Line coverage: 90.9%
Branch coverage
66%
Covered branches: 4
Total branches: 6
Branch coverage: 66.6%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Cyclomatic complexity NPath complexity Sequence coverage
.ctor(...)100%11100%
OnClose()100%11100%
ReadContentAsBase64(...)75%4490.9%
OnToByteArray()100%11100%
OnToStream()100%11100%
TryGetBase64ContentLength(...)50%2260%

File(s)

/home/runner/work/CoreWCF/CoreWCF/src/CoreWCF.Primitives/src/CoreWCF/Channels/XmlBufferedByteStreamReader.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;
 5using System.IO;
 6using System.Xml;
 7using CoreWCF.Runtime;
 8
 9namespace CoreWCF.Channels
 10{
 11    internal class XmlBufferedByteStreamReader : XmlByteStreamReader
 12    {
 13        private ByteStreamBufferedMessageData _bufferedMessageData;
 14        private int _offset;
 15
 1516        public XmlBufferedByteStreamReader(ByteStreamBufferedMessageData bufferedMessageData, XmlDictionaryReaderQuotas 
 17        {
 18            Fx.Assert(bufferedMessageData != null, "bufferedMessageData is null");
 1519            _bufferedMessageData = bufferedMessageData;
 1520            _bufferedMessageData.Open();
 21
 1522            _offset = bufferedMessageData.Buffer.Offset;
 1523            this.quotas = quotas;
 1524            position = ReaderPosition.None;
 1525        }
 26
 27        protected override void OnClose()
 28        {
 929            _bufferedMessageData.Close();
 930            _bufferedMessageData = null;
 931            _offset = 0;
 932            base.OnClose();
 933        }
 34
 35        public override int ReadContentAsBase64(byte[] buffer, int index, int count)
 36        {
 637            EnsureInContent();
 638            ByteStreamMessageUtility.EnsureByteBoundaries(buffer, index, count, true);
 39
 640            if (count == 0)
 41            {
 042                return 0;
 43            }
 44
 645            int bytesToCopy = Math.Min(_bufferedMessageData.Buffer.Count - _offset, count);
 46
 647            if (bytesToCopy == 0)
 48            {
 149                position = ReaderPosition.EndElement;
 150                return 0;
 51            }
 52
 553            Buffer.BlockCopy(_bufferedMessageData.Buffer.Array, _offset, buffer, index, bytesToCopy);
 554            _offset += bytesToCopy;
 55
 556            return bytesToCopy;
 57        }
 58
 59        protected override byte[] OnToByteArray()
 60        {
 461            int bytesToCopy = _bufferedMessageData.Buffer.Count;
 462            byte[] buffer = new byte[bytesToCopy];
 463            Buffer.BlockCopy(_bufferedMessageData.Buffer.Array, _bufferedMessageData.Buffer.Offset, buffer, 0, bytesToCo
 464            return buffer;
 65        }
 66
 67        protected override Stream OnToStream()
 68        {
 269            return _bufferedMessageData.ToStream();
 70        }
 71
 72        public override bool TryGetBase64ContentLength(out int length)
 73        {
 474            if (!IsClosed)
 75            {
 76                // in ByteStream encoder, we're not concerned about individual xml nodes
 77                // therefore we can just return the entire segment of the buffer we're using in this reader.
 478                length = _bufferedMessageData.Buffer.Count;
 479                return true;
 80            }
 081            length = -1;
 082            return false;
 83        }
 84    }
 85}