Skip to content

Commit 64395d6

Browse files
committed
Improved test coverage
1 parent da6eac9 commit 64395d6

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

src/DotNext.Tests/IO/StreamSourceTests.cs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -659,4 +659,23 @@ void ReadStream()
659659
Equal(expected, actual);
660660
}
661661
}
662+
663+
[Fact]
664+
public static void SyncOverAsyncRead()
665+
{
666+
var expected = RandomBytes(512);
667+
using var source = new MemoryStream();
668+
source.Write(expected);
669+
source.Seek(0L, SeekOrigin.Begin);
670+
671+
using var destination = StreamSource.AsStream(ReadAsync, source);
672+
True(destination.CanTimeout);
673+
destination.ReadTimeout = (int)DefaultTimeout.TotalMilliseconds;
674+
var actual = new byte[512];
675+
Equal(expected.Length, destination.Read(actual, 0, actual.Length));
676+
Equal(expected, actual);
677+
678+
static ValueTask<int> ReadAsync(Memory<byte> buffer, MemoryStream ms, CancellationToken token)
679+
=> ms.ReadAsync(buffer, token);
680+
}
662681
}

src/DotNext/IO/ReadOnlyStream.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ internal abstract class ReadOnlyStream : Stream
1111

1212
public sealed override bool CanWrite => false;
1313

14-
public sealed override bool CanTimeout => false;
14+
public override bool CanTimeout => false;
1515

1616
public override void Flush()
1717
{
@@ -95,6 +95,8 @@ public override int ReadTimeout
9595
set => timeout = value > 0 ? value : throw new ArgumentOutOfRangeException(nameof(value));
9696
}
9797

98+
public override bool CanTimeout => true;
99+
98100
public override long Position
99101
{
100102
get => throw new NotSupportedException();

0 commit comments

Comments
 (0)