SftpFileStreamTest_ReadByte_ReadMode_NoDataInWriteBufferAndNoDataInReadBuffer_Eof.cs 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. using System;
  2. using System.IO;
  3. using Microsoft.VisualStudio.TestTools.UnitTesting;
  4. using Moq;
  5. using Renci.SshNet.Sftp;
  6. namespace Renci.SshNet.Tests.Classes.Sftp
  7. {
  8. [TestClass]
  9. public class SftpFileStreamTest_ReadByte_ReadMode_NoDataInWriteBufferAndNoDataInReadBuffer_Eof : SftpFileStreamTestBase
  10. {
  11. private SftpFileStream _target;
  12. private string _path;
  13. private byte[] _handle;
  14. private uint _bufferSize;
  15. private uint _readBufferSize;
  16. private uint _writeBufferSize;
  17. private int _actual;
  18. protected override void SetupData()
  19. {
  20. base.SetupData();
  21. var random = new Random();
  22. _path = random.Next().ToString();
  23. _handle = GenerateRandom(1, random);
  24. _bufferSize = (uint) random.Next(1, 1000);
  25. _readBufferSize = (uint) random.Next(1, 1000);
  26. _writeBufferSize = (uint) random.Next(1, 1000);
  27. }
  28. protected override void SetupMocks()
  29. {
  30. SftpSessionMock.InSequence(MockSequence)
  31. .Setup(p => p.RequestOpen(_path, Flags.Read, false))
  32. .Returns(_handle);
  33. SftpSessionMock.InSequence(MockSequence)
  34. .Setup(p => p.CalculateOptimalReadLength(_bufferSize))
  35. .Returns(_readBufferSize);
  36. SftpSessionMock.InSequence(MockSequence)
  37. .Setup(p => p.CalculateOptimalWriteLength(_bufferSize, _handle))
  38. .Returns(_writeBufferSize);
  39. SftpSessionMock.InSequence(MockSequence).Setup(p => p.IsOpen).Returns(true);
  40. SftpSessionMock.InSequence(MockSequence)
  41. .Setup(p => p.RequestRead(_handle, 0UL, _readBufferSize))
  42. .Returns(new byte[0]);
  43. }
  44. [TestCleanup]
  45. public void TearDown()
  46. {
  47. SftpSessionMock.InSequence(MockSequence).Setup(p => p.RequestClose(_handle));
  48. }
  49. protected override void Arrange()
  50. {
  51. base.Arrange();
  52. _target = new SftpFileStream(SftpSessionMock.Object,
  53. _path,
  54. FileMode.Open,
  55. FileAccess.Read,
  56. (int)_bufferSize);
  57. }
  58. protected override void Act()
  59. {
  60. _actual = _target.ReadByte();
  61. }
  62. [TestMethod]
  63. public void ReadByteShouldReturnMinusOne()
  64. {
  65. Assert.AreEqual(-1, _actual);
  66. }
  67. [TestMethod]
  68. public void PositionShouldReturnZero()
  69. {
  70. SftpSessionMock.InSequence(MockSequence).Setup(p => p.IsOpen).Returns(true);
  71. Assert.AreEqual(0L, _target.Position);
  72. }
  73. }
  74. }