Skip to content

Commit 97e71cc

Browse files
committed
Added mocks for the response stream socket cells
* also addded tests for the Stream.ReadByte calls
1 parent d5abec1 commit 97e71cc

File tree

2 files changed

+105
-1
lines changed

2 files changed

+105
-1
lines changed

HttpWebClient.UnitTests/TestHttpWebClientGzipResponseStream.cs

Lines changed: 103 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929

3030
using Xunit;
3131
using Ionic.Zlib;
32+
using Moq;
3233

3334
using RipcordSoftware.HttpWebClient;
3435

@@ -101,6 +102,32 @@ public void TestHttpWebClientGzipResponse()
101102
Assert.True(_testBytes.SequenceEqual(response));
102103
}
103104

105+
[Fact]
106+
public void TestHttpWebClientGzipResponseByByte()
107+
{
108+
var memStream = new NonDisposibleStream(new MemoryStream());
109+
110+
using (var gzipStream = new GZipStream(memStream, CompressionMode.Compress))
111+
{
112+
gzipStream.Write(_testBytes, 0, _testBytes.Length);
113+
}
114+
115+
memStream.Position = 0;
116+
117+
var response = new List<byte>();
118+
using (var stream = new HttpWebClientGZipResponseStream(memStream))
119+
{
120+
var byteRead = 0;
121+
while ((byteRead = stream.ReadByte()) >= 0)
122+
{
123+
response.Add((byte)byteRead);
124+
}
125+
}
126+
127+
Assert.Equal(_testBytes.Length, response.Count);
128+
Assert.True(_testBytes.SequenceEqual(response));
129+
}
130+
104131
[Fact]
105132
public void TestInitializedDeflateResponseStream()
106133
{
@@ -152,6 +179,82 @@ public void TestHttpWebClientDeflateResponse()
152179
Assert.Equal(_testBytes.Length, response.Count);
153180
Assert.True(_testBytes.SequenceEqual(response));
154181
}
182+
183+
[Fact]
184+
public void TestHttpWebClientDeflateResponseByByte()
185+
{
186+
var memStream = new NonDisposibleStream(new MemoryStream());
187+
188+
using (var gzipStream = new DeflateStream(memStream, CompressionMode.Compress))
189+
{
190+
gzipStream.Write(_testBytes, 0, _testBytes.Length);
191+
}
192+
193+
memStream.Position = 0;
194+
195+
var response = new List<byte>();
196+
using (var stream = new HttpWebClientDeflateResponseStream(memStream))
197+
{
198+
var byteRead = 0;
199+
while ((byteRead = stream.ReadByte()) >= 0)
200+
{
201+
response.Add((byte)byteRead);
202+
}
203+
}
204+
205+
Assert.Equal(_testBytes.Length, response.Count);
206+
Assert.True(_testBytes.SequenceEqual(response));
207+
}
208+
209+
[Fact]
210+
public void TestInitializedGzipResponseStreamWithMockedSocketStream()
211+
{
212+
var mock = new Mock<Stream>();
213+
var mockResponseStream = mock.As<IHttpWebClientResponseStream>();
214+
mockResponseStream.Setup(s => s.Available).Returns(42);
215+
mockResponseStream.Setup(s => s.SocketAvailable).Returns(69);
216+
mockResponseStream.Setup(s => s.BufferAvailable).Returns(7);
217+
mockResponseStream.SetupSet(s => s.SocketForceClose = true);
218+
mockResponseStream.Setup(s => s.SocketReceive(It.IsAny<byte[]>(), It.IsAny<int>(), It.IsAny<int>())).Returns(128);
219+
220+
using (var stream = new HttpWebClientGZipResponseStream(mock.Object))
221+
{
222+
Assert.Equal(42, stream.Available);
223+
Assert.Equal(69, stream.SocketAvailable);
224+
Assert.Equal(7, stream.BufferAvailable);
225+
226+
stream.SocketForceClose = true;
227+
228+
Assert.Equal(128, stream.SocketReceive(new byte[256], 0, 256));
229+
}
230+
231+
mockResponseStream.VerifyAll();
232+
}
233+
234+
[Fact]
235+
public void TestInitializedDeflateResponseStreamWithMockedSocketStream()
236+
{
237+
var mock = new Mock<Stream>();
238+
var mockResponseStream = mock.As<IHttpWebClientResponseStream>();
239+
mockResponseStream.Setup(s => s.Available).Returns(42);
240+
mockResponseStream.Setup(s => s.SocketAvailable).Returns(69);
241+
mockResponseStream.Setup(s => s.BufferAvailable).Returns(7);
242+
mockResponseStream.SetupSet(s => s.SocketForceClose = true);
243+
mockResponseStream.Setup(s => s.SocketReceive(It.IsAny<byte[]>(), It.IsAny<int>(), It.IsAny<int>())).Returns(128);
244+
245+
using (var stream = new HttpWebClientDeflateResponseStream(mock.Object))
246+
{
247+
Assert.Equal(42, stream.Available);
248+
Assert.Equal(69, stream.SocketAvailable);
249+
Assert.Equal(7, stream.BufferAvailable);
250+
251+
stream.SocketForceClose = true;
252+
253+
Assert.Equal(128, stream.SocketReceive(new byte[256], 0, 256));
254+
}
255+
256+
mockResponseStream.VerifyAll();
257+
}
155258
#endregion
156259
}
157260
}

HttpWebClient/Properties/AssemblyInfo.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,5 @@
2525
//[assembly: AssemblyDelaySign(false)]
2626
//[assembly: AssemblyKeyFile("")]
2727

28-
[assembly: InternalsVisibleTo("HttpWebClient.UnitTests")]
28+
[assembly: InternalsVisibleTo("HttpWebClient.UnitTests")]
29+
[assembly: InternalsVisibleTo("DynamicProxyGenAssembly2")]

0 commit comments

Comments
 (0)