PipeStreamTest.cs 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256
  1. using System.Threading;
  2. using Microsoft.VisualStudio.TestTools.UnitTesting;
  3. using Renci.SshNet.Common;
  4. using Renci.SshNet.Tests.Common;
  5. using System;
  6. using System.IO;
  7. namespace Renci.SshNet.Tests.Classes.Common
  8. {
  9. [TestClass]
  10. public class PipeStreamTest : TestBase
  11. {
  12. [TestMethod]
  13. [TestCategory("PipeStream")]
  14. public void Test_PipeStream_Write_Read_Buffer()
  15. {
  16. var testBuffer = new byte[1024];
  17. new Random().NextBytes(testBuffer);
  18. var outputBuffer = new byte[1024];
  19. using (var stream = new PipeStream())
  20. {
  21. stream.Write(testBuffer, 0, testBuffer.Length);
  22. Assert.AreEqual(stream.Length, testBuffer.Length);
  23. stream.Read(outputBuffer, 0, outputBuffer.Length);
  24. Assert.AreEqual(stream.Length, 0);
  25. Assert.IsTrue(testBuffer.IsEqualTo(outputBuffer));
  26. }
  27. }
  28. [TestMethod]
  29. [TestCategory("PipeStream")]
  30. public void Test_PipeStream_Write_Read_Byte()
  31. {
  32. var testBuffer = new byte[1024];
  33. new Random().NextBytes(testBuffer);
  34. var outputBuffer = new byte[1024];
  35. using (var stream = new PipeStream())
  36. {
  37. stream.Write(testBuffer, 0, testBuffer.Length);
  38. Assert.AreEqual(stream.Length, testBuffer.Length);
  39. stream.ReadByte();
  40. Assert.AreEqual(stream.Length, testBuffer.Length - 1);
  41. stream.ReadByte();
  42. Assert.AreEqual(stream.Length, testBuffer.Length - 2);
  43. }
  44. }
  45. /// <summary>
  46. ///A test for PipeStream Constructor
  47. ///</summary>
  48. [TestMethod]
  49. public void PipeStreamConstructorTest()
  50. {
  51. PipeStream target = new PipeStream();
  52. Assert.Inconclusive("TODO: Implement code to verify target");
  53. }
  54. /// <summary>
  55. ///A test for Flush
  56. ///</summary>
  57. [TestMethod]
  58. public void FlushTest()
  59. {
  60. PipeStream target = new PipeStream(); // TODO: Initialize to an appropriate value
  61. target.Flush();
  62. Assert.Inconclusive("A method that does not return a value cannot be verified.");
  63. }
  64. [TestMethod]
  65. public void Read()
  66. {
  67. const int sleepTime = 100;
  68. var target = new PipeStream();
  69. target.WriteByte(0x0a);
  70. target.WriteByte(0x0d);
  71. target.WriteByte(0x09);
  72. var readBuffer = new byte[2];
  73. var bytesRead = target.Read(readBuffer, 0, readBuffer.Length);
  74. Assert.AreEqual(2, bytesRead);
  75. Assert.AreEqual(0x0a, readBuffer[0]);
  76. Assert.AreEqual(0x0d, readBuffer[1]);
  77. var writeToStreamThread = new Thread(
  78. () =>
  79. {
  80. Thread.Sleep(sleepTime);
  81. var writeBuffer = new byte[] {0x05, 0x03};
  82. target.Write(writeBuffer, 0, writeBuffer.Length);
  83. });
  84. writeToStreamThread.Start();
  85. readBuffer = new byte[2];
  86. bytesRead = target.Read(readBuffer, 0, readBuffer.Length);
  87. Assert.AreEqual(2, bytesRead);
  88. Assert.AreEqual(0x09, readBuffer[0]);
  89. Assert.AreEqual(0x05, readBuffer[1]);
  90. }
  91. [TestMethod]
  92. public void SeekShouldThrowNotSupportedException()
  93. {
  94. const long offset = 0;
  95. const SeekOrigin origin = new SeekOrigin();
  96. var target = new PipeStream();
  97. try
  98. {
  99. target.Seek(offset, origin);
  100. Assert.Fail();
  101. }
  102. catch (NotSupportedException)
  103. {
  104. }
  105. }
  106. [TestMethod]
  107. public void SetLengthShouldThrowNotSupportedException()
  108. {
  109. var target = new PipeStream();
  110. try
  111. {
  112. target.SetLength(1);
  113. Assert.Fail();
  114. }
  115. catch (NotSupportedException)
  116. {
  117. }
  118. }
  119. [TestMethod]
  120. public void WriteTest()
  121. {
  122. var target = new PipeStream();
  123. var writeBuffer = new byte[] {0x0a, 0x05, 0x0d};
  124. target.Write(writeBuffer, 0, 2);
  125. writeBuffer = new byte[] { 0x02, 0x04, 0x03, 0x06, 0x09 };
  126. target.Write(writeBuffer, 1, 2);
  127. var readBuffer = new byte[6];
  128. var bytesRead = target.Read(readBuffer, 0, 4);
  129. Assert.AreEqual(4, bytesRead);
  130. Assert.AreEqual(0x0a, readBuffer[0]);
  131. Assert.AreEqual(0x05, readBuffer[1]);
  132. Assert.AreEqual(0x04, readBuffer[2]);
  133. Assert.AreEqual(0x03, readBuffer[3]);
  134. Assert.AreEqual(0x00, readBuffer[4]);
  135. Assert.AreEqual(0x00, readBuffer[5]);
  136. }
  137. /// <summary>
  138. ///A test for BlockLastReadBuffer
  139. ///</summary>
  140. [TestMethod]
  141. public void BlockLastReadBufferTest()
  142. {
  143. PipeStream target = new PipeStream(); // TODO: Initialize to an appropriate value
  144. bool expected = false; // TODO: Initialize to an appropriate value
  145. bool actual;
  146. target.BlockLastReadBuffer = expected;
  147. actual = target.BlockLastReadBuffer;
  148. Assert.AreEqual(expected, actual);
  149. Assert.Inconclusive("Verify the correctness of this test method.");
  150. }
  151. [TestMethod]
  152. public void CanReadTest()
  153. {
  154. var target = new PipeStream();
  155. Assert.IsTrue(target.CanRead);
  156. }
  157. [TestMethod]
  158. public void CanSeekTest()
  159. {
  160. var target = new PipeStream(); // TODO: Initialize to an appropriate value
  161. Assert.IsFalse(target.CanSeek);
  162. }
  163. [TestMethod]
  164. public void CanWriteTest()
  165. {
  166. var target = new PipeStream();
  167. Assert.IsTrue(target.CanWrite);
  168. }
  169. [TestMethod]
  170. public void LengthTest()
  171. {
  172. PipeStream target = new PipeStream(); // TODO: Initialize to an appropriate value
  173. long actual;
  174. actual = target.Length;
  175. Assert.Inconclusive("Verify the correctness of this test method.");
  176. }
  177. /// <summary>
  178. ///A test for MaxBufferLength
  179. ///</summary>
  180. [TestMethod]
  181. public void MaxBufferLengthTest()
  182. {
  183. PipeStream target = new PipeStream(); // TODO: Initialize to an appropriate value
  184. long expected = 0; // TODO: Initialize to an appropriate value
  185. long actual;
  186. target.MaxBufferLength = expected;
  187. actual = target.MaxBufferLength;
  188. Assert.AreEqual(expected, actual);
  189. Assert.Inconclusive("Verify the correctness of this test method.");
  190. }
  191. [TestMethod]
  192. public void Position_GetterAlwaysReturnsZero()
  193. {
  194. var target = new PipeStream();
  195. Assert.AreEqual(0, target.Position);
  196. target.WriteByte(0x0a);
  197. Assert.AreEqual(0, target.Position);
  198. target.ReadByte();
  199. Assert.AreEqual(0, target.Position);
  200. }
  201. [TestMethod]
  202. public void Position_SetterAlwaysThrowsNotSupportedException()
  203. {
  204. var target = new PipeStream();
  205. try
  206. {
  207. target.Position = 0;
  208. Assert.Fail();
  209. }
  210. catch (NotSupportedException)
  211. {
  212. }
  213. }
  214. }
  215. }