public void WriteToStreamUsingBackgroundThread_WriteToClosedTransferStream() {
            var buffer = Encoding.UTF8.GetBytes(Message);

            using(var targetStream = new MemoryStream()) {
                var transferStream = new TransferStream(targetStream);

                // 실제 targetStream에 쓰는 작업이 아니라 쓰기를 예약한 것입니다.
                //
                for(int i = 0; i < TestCount; i++) {
                    // 쓰기 요청은 했지만 실제로 targetStream에 쓰여지는 작업는 비동기적으로 수행되므로 아직 쓰여지지 않았다.
                    Assert.AreNotEqual(buffer.Length * TestCount, (int)targetStream.Length);

                    transferStream.Write(buffer, 0, buffer.Length);
                }

                // 이 때에 모든 쓰기가 완료될 것이고, 대상 Stream에 완전히 복사가 됩니다.
                transferStream.Close();

                // 여기서 예외가 발생해야 한다??? 아니다. close 가 되면 쓰기를 취소하고 그냥 반환한다.
                //
                transferStream.Write(buffer, 0, buffer.Length);

                Assert.AreEqual(buffer.Length * TestCount, (int)targetStream.Length);

                targetStream.ToText(Encoding.UTF8).Contains(Message).Should().Be.True();
            }
        }
Exemple #2
0
 public void Open_stream_with_content()
 {
     var memoryStream = new MemoryStream();
     var writer = new StreamWriter(memoryStream) { AutoFlush = true };
     writer.Write("foo");
     memoryStream.Position = 0;
     memoryStream.ToText().ShouldBe("foo");
 }
Exemple #3
0
        public void SerializeTest() {
            var user = Users[0];

            using(var ms = new MemoryStream()) {
                XmlTool.Serialize(user, ms);

                ms.SetStreamPosition();

                var str = ms.ToText();
                Assert.IsNotEmpty(str);

                Assert.IsTrue(str.Contains(user.Id.ToString()));
                Console.WriteLine("Serialized Usre=" + str);
            }
        }
        public void Adaptor_Compress_Decompress_By_Stream_InParallel() {
            var plainStream = PlainText.ToStream();

            Parallel.ForEach(_compressors,
                             compressor => {
                                 var adapter = new CompressAdapter(compressor);

                                 var compressed = adapter.Compress(plainStream);
                                 var recoveryStream = new MemoryStream(compressed.Length * 2);
                                 adapter.Decompress(compressed, recoveryStream);

                                 // 데이터가 써졌으므로, 다시 원 위치로 설정해줘야 합니다.
                                 recoveryStream.SetStreamPosition();

                                 Assert.IsTrue(recoveryStream.Length > 0);
                                 Assert.AreEqual(PlainText, recoveryStream.ToText());
                             });
        }
Exemple #5
0
        public void DeserializeXml() {
            var user = Users[0];

            using(var ms = new MemoryStream()) {
                XmlTool.Serialize(user, ms);

                ms.SetStreamPosition();

                var xml = ms.ToText();
                // string xml = StringTool.ToString(ms);

                ms.SetStreamPosition();
                var user2 = XmlTool.Deserialize<User>(ms);

                Assert.AreEqual(user.Id, user2.Id);
                Assert.AreEqual(user.Name, user2.Name);
                Assert.AreEqual(user.Description, user2.Description);

                Assert.IsTrue(user.Equals(user2));
            }
        }
Exemple #6
0
        /// <summary>
        /// 문서 내용을 Xml Text로 변환한다.
        /// </summary>
        /// <param name="enc">Encoding 방식</param>
        /// <returns>Xml Text</returns>
        public string ToString(System.Text.Encoding enc) {
            using(var ms = new MemoryStream()) {
                XmlTool.Serialize(this, ms);
                ms.Position = 0;

                return ms.ToText(XmlTool.XmlEncoding);
                // return StringTool.ToString((Stream)((Object)ms), XmlConst.XmlEncoding);
            }
        }
        public void AppendTextTest() {
            Assert.IsFalse(gridFS.Exists("HelloWorld.txt"));
            using(var writer = gridFS.AppendText("HelloWorld.txt")) {
                Assert.IsFalse(writer.BaseStream.CanRead);
                Assert.IsTrue(writer.BaseStream.CanSeek);
                Assert.IsTrue(writer.BaseStream.CanWrite);
                writer.Write("동해물과");
            }

            Assert.IsTrue(gridFS.Exists("HelloWorld.txt"));
            using(var writer = gridFS.AppendText("HelloWorld.txt")) {
                writer.Write(" 백두산이");
            }
            var memoryStream = new MemoryStream();
            gridFS.Download(memoryStream, "HelloWorld.txt");
            var bytes = memoryStream.ToArray();

            // 2-byte 문자열임을 나타내는 헤더값
            StringTool.IsMultiByteString(bytes).Should().Be.True();

            //Assert.AreEqual(0xEF, bytes[0]); // the BOM
            //Assert.AreEqual(0xBB, bytes[1]);
            //Assert.AreEqual(0xBF, bytes[2]);

            // Header 값을 빼고, 한다.
            // var text = Encoding.UTF8.GetString(bytes, 3, bytes.Length - 3);
            var text = memoryStream.ToText(Encoding.UTF8);

            Assert.AreEqual("동해물과 백두산이", text);
        }
        public void DownloadTest() {
            gridFS.Delete(Query.Null);

            var fileInfo = UploadHelloWord();

            using(var downloadStream = new MemoryStream()) {
                gridFS.Download(downloadStream, fileInfo);
                var downloadedBytes = downloadStream.ToArray();
                var downloadedContents = downloadStream.ToText(Encoding.UTF8);
                Assert.AreEqual(Content, downloadedContents);
            }
        }
Exemple #9
0
 public void Open_empty_stream()
 {
     var memoryStream = new MemoryStream();
     memoryStream.ToText().ShouldBe(string.Empty);
 }