LargeMemoryStreamTests.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. using System;
  2. using System.IO;
  3. using Masuit.Tools.Systems;
  4. using Xunit;
  5. namespace Masuit.Tools.Abstractions.Test.Systems;
  6. public class LargeMemoryStreamTests
  7. {
  8. [Fact]
  9. public void CanRead_ShouldReturnTrue()
  10. {
  11. var stream = new LargeMemoryStream();
  12. Assert.True(stream.CanRead);
  13. }
  14. [Fact]
  15. public void CanSeek_ShouldReturnTrue()
  16. {
  17. var stream = new LargeMemoryStream();
  18. Assert.True(stream.CanSeek);
  19. }
  20. [Fact]
  21. public void CanWrite_ShouldReturnTrue()
  22. {
  23. var stream = new LargeMemoryStream();
  24. Assert.True(stream.CanWrite);
  25. }
  26. [Fact]
  27. public void Length_ShouldReturnZeroInitially()
  28. {
  29. var stream = new LargeMemoryStream();
  30. Assert.Equal(0, stream.Length);
  31. }
  32. [Fact]
  33. public void Position_ShouldReturnZeroInitially()
  34. {
  35. var stream = new LargeMemoryStream();
  36. Assert.Equal(0, stream.Position);
  37. }
  38. [Fact]
  39. public void Position_SetValidValue_ShouldUpdatePosition()
  40. {
  41. var stream = new LargeMemoryStream();
  42. stream.SetLength(100);
  43. stream.Position = 50;
  44. Assert.Equal(50, stream.Position);
  45. }
  46. [Fact]
  47. public void Position_SetInvalidValue_ShouldThrowException()
  48. {
  49. var stream = new LargeMemoryStream();
  50. Assert.Throws<InvalidOperationException>(() => stream.Position = -1);
  51. Assert.Throws<InvalidOperationException>(() => stream.Position = 1);
  52. }
  53. [Fact]
  54. public void Flush_ShouldNotThrowException()
  55. {
  56. var stream = new LargeMemoryStream();
  57. stream.Flush();
  58. }
  59. [Fact]
  60. public void Read_ShouldReturnCorrectData()
  61. {
  62. var stream = new LargeMemoryStream();
  63. var buffer = new byte[100];
  64. for (int i = 0; i < buffer.Length; i++)
  65. {
  66. buffer[i] = (byte)i;
  67. }
  68. stream.Write(buffer, 0, buffer.Length);
  69. stream.Position = 0;
  70. var readBuffer = new byte[100];
  71. int bytesRead = stream.Read(readBuffer, 0, readBuffer.Length);
  72. Assert.Equal(buffer.Length, bytesRead);
  73. Assert.Equal(buffer, readBuffer);
  74. }
  75. [Fact]
  76. public void Seek_ShouldUpdatePositionCorrectly()
  77. {
  78. var stream = new LargeMemoryStream();
  79. stream.SetLength(100);
  80. stream.Seek(50, SeekOrigin.Begin);
  81. Assert.Equal(50, stream.Position);
  82. stream.Seek(10, SeekOrigin.Current);
  83. Assert.Equal(60, stream.Position);
  84. }
  85. [Fact]
  86. public void SetLength_ShouldUpdateLengthCorrectly()
  87. {
  88. var stream = new LargeMemoryStream();
  89. stream.SetLength(100);
  90. Assert.Equal(100, stream.Length);
  91. stream.SetLength(50);
  92. Assert.Equal(50, stream.Length);
  93. }
  94. [Fact]
  95. public void Write_ShouldWriteDataCorrectly()
  96. {
  97. var stream = new LargeMemoryStream();
  98. var buffer = new byte[100];
  99. for (int i = 0; i < buffer.Length; i++)
  100. {
  101. buffer[i] = (byte)i;
  102. }
  103. stream.Write(buffer, 0, buffer.Length);
  104. stream.Position = 0;
  105. var readBuffer = new byte[100];
  106. int bytesRead = stream.Read(readBuffer, 0, readBuffer.Length);
  107. Assert.Equal(buffer.Length, bytesRead);
  108. Assert.Equal(buffer, readBuffer);
  109. }
  110. [Fact]
  111. public void Dispose_ShouldDisposeCorrectly()
  112. {
  113. var stream = new LargeMemoryStream();
  114. stream.Dispose();
  115. Assert.Throws<ObjectDisposedException>(() => stream.Write(new byte[1], 0, 1));
  116. }
  117. }