コード例 #1
0
        public void InputStreamsAreClosed()
        {
            var mock1 = new Mock <MemoryStream>(MockBehavior.Default, _part1)
            {
                CallBase = true
            };
            var mock2 = new Mock <MemoryStream>(MockBehavior.Default, _part2)
            {
                CallBase = true
            };
            var mock3 = new Mock <MemoryStream>(MockBehavior.Default, _part3)
            {
                CallBase = true
            };

            using (var composite = new CompositeStream(new Stream[] { mock1.Object, mock2.Object, mock3.Object }))
            {
                var buffer = new byte[10];
                composite.Read(buffer, 0, buffer.Length);
            }

            mock1.Verify(s => s.Close());
            mock2.Verify(s => s.Close());
            mock3.Verify(s => s.Close());
        }
        public void AssumesCompoundStreamsHaveNoXmlDeclarations()
        {
            var part1 = Encoding.UTF8.GetBytes("<?xml version=\"1.0\" encoding=\"utf-8\" ?><part-one xmlns=\"part-one\"><child-one>one</child-one></part-one>");
            var part2 = Encoding.UTF8.GetBytes("<?xml version=\"1.0\" encoding=\"utf-8\" ?><part-two xmlns=\"part-two\"><child-two>two</child-two></part-two>");

            using (var composite = new CompositeStream(new Stream[] { new MemoryStream(part1), new MemoryStream(part2) }))
                using (var xmlReader = XmlReader.Create(composite))
                {
                    xmlReader.Read();
                    Action act = () => xmlReader.ReadOuterXml();
                    act.Should().Throw <XmlException>().WithMessage("Unexpected XML declaration. The XML declaration must be the first node in the document*");
                }
        }
        public void AssumesCompoundStreamsAreUtf8Encoded()
        {
            var part1 = Encoding.UTF8.GetBytes("<part-one xmlns=\"part-one\"><child-one>one</child-one></part-one>");
            var part2 = Encoding.Unicode.GetBytes("<part-two xmlns=\"part-two\"><child-two>two</child-two></part-two>");

            using (var composite = new CompositeStream(new Stream[] { new MemoryStream(part1), new MemoryStream(part2) }))
                using (var xmlReader = XmlReader.Create(composite))
                {
                    xmlReader.Read();
                    Action act = () => xmlReader.ReadOuterXml();
                    act.Should().Throw <XmlException>();
                }
        }
コード例 #4
0
        public void AggregatesIndividualStreams()
        {
            using (var composite = new CompositeStream(new Stream[] { new MemoryStream(_part1), new MemoryStream(_part2), new MemoryStream(_part3) }))
                using (var xmlReader = XmlReader.Create(composite))
                {
                    xmlReader.Read();
                    var actual = xmlReader.ReadOuterXml();

                    const string expected = "<agg:Root xmlns:agg=\"http://schemas.microsoft.com/BizTalk/2003/aggschema\">" +
                                            "<agg:InputMessagePart_0><part-one xmlns=\"part-one\"><child-one>one</child-one></part-one></agg:InputMessagePart_0>" +
                                            "<agg:InputMessagePart_1><part-two xmlns=\"part-two\"><child-two>two</child-two></part-two></agg:InputMessagePart_1>" +
                                            "<agg:InputMessagePart_2><part-six xmlns=\"part-six\"><child-six>six</child-six></part-six></agg:InputMessagePart_2></agg:Root>";

                    Assert.That(actual, Is.EqualTo(expected));
                }
        }
コード例 #5
0
        public void AlwaysExhaustAggregatedStreams()
        {
            const string expected = "<agg:Root xmlns:agg=\"http://schemas.microsoft.com/BizTalk/2003/aggschema\">" +
                                    "<agg:InputMessagePart_0><part-one xmlns=\"part-one\"><child-one>one</child-one></part-one></agg:InputMessagePart_0>" +
                                    "<agg:InputMessagePart_1><part-two xmlns=\"part-two\"><child-two>two</child-two></part-two></agg:InputMessagePart_1></agg:Root>";

            using (var composite = new CompositeStream(new Stream[] { new MemoryStream(_part1), new MemoryStream(_part2) }))
            {
                var buffer = new byte[Encoding.UTF8.GetByteCount(expected)];
                var offset = 0;
                int bytesRead;
                while ((bytesRead = composite.Read(buffer, offset, 8)) > 0)
                {
                    offset += bytesRead;
                }
                var actual = Encoding.UTF8.GetString(buffer);

                Assert.That(actual, Is.EqualTo(expected));
            }
        }