コード例 #1
0
        public void write()
        {
            Assert.Throws <ArgumentNullException>(() => StreamExtensions.Write <Stream>(null, Enumerable.Empty <byte>().ToArray()));
            Assert.Throws <ArgumentNullException>(() => Stream.Null.Write((byte[])null));
            Assert.Throws <ArgumentNullException>(() => StreamExtensions.Write <Stream>(null, Stream.Null));
            Assert.Throws <ArgumentNullException>(() => Stream.Null.Write((Stream)null));
            Assert.Throws <ArgumentNullException>(() => StreamExtensions.Write <Stream>(null, "text"));
            Assert.Throws <ArgumentNullException>(() => Stream.Null.Write((string)null));

            var bytes = Guid.NewGuid().ToByteArray();
            var text  = bytes.ToString();

            var stream = new MemoryStream();

            Assert.True(ReferenceEquals(stream.Write(bytes), stream));
            stream.Close();
            Assert.True(stream.ToArray().SequenceEqual(bytes));

            var from = new MemoryStream(bytes);
            var to   = new MemoryStream();

            Assert.True(ReferenceEquals(to.Write(from), to));
            Assert.True(to.ToArray().SequenceEqual(bytes));
            Assert.Equal(0, from.Bytes().Length);
            Assert.True(from.CanRead);
            Assert.Equal(0, to.Bytes().Length);
            Assert.True(to.CanWrite);
            from.Close();
            to.Close();

            using (var s = new MemoryStream())
            {
                Assert.True(ReferenceEquals(s.Write(string.Empty), s));
                Assert.Equal(string.Empty, s.Text());
            }

            using (var s = new MemoryStream())
            {
                Assert.True(ReferenceEquals(s.Write(text), s));
                Assert.Equal(text, s.Rewind().Text());
            }

            using (var s = new MemoryStream())
            {
                Assert.True(ReferenceEquals(s.Write(text, Encoding.Unicode), s));
                Assert.Equal(text, s.Rewind().Text(encoding: Encoding.Unicode));
            }
        }