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(); } }
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"); }
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()); }); }
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)); } }
/// <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); } }
public void Open_empty_stream() { var memoryStream = new MemoryStream(); memoryStream.ToText().ShouldBe(string.Empty); }