Skip to content

Commit 04efd32

Browse files
committed
Add GetFieldAsync tests for TextReader and Stream. Fixes #144
1 parent d12c87d commit 04efd32

File tree

1 file changed

+47
-1
lines changed

1 file changed

+47
-1
lines changed

src/AdoNet.Specification.Tests/DataReaderTestBase.cs

Lines changed: 47 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -733,6 +733,18 @@ public virtual void GetFieldValue_for_TextReader()
733733
Assert.Equal("1", textReader.ReadToEnd());
734734
}
735735

736+
[Fact]
737+
public virtual async Task GetFieldValueAsync_for_TextReader()
738+
{
739+
using var connection = CreateOpenConnection();
740+
using var command = connection.CreateCommand();
741+
command.CommandText = Fixture.CreateSelectSql(DbType.String, ValueKind.One);
742+
using var reader = await command.ExecuteReaderAsync();
743+
await reader.ReadAsync();
744+
using var textReader = await reader.GetFieldValueAsync<TextReader>(0);
745+
Assert.Equal("1", textReader.ReadToEnd());
746+
}
747+
736748
[Fact]
737749
public virtual void GetFieldValue_for_TextReader_throws_for_null_String()
738750
{
@@ -744,6 +756,17 @@ public virtual void GetFieldValue_for_TextReader_throws_for_null_String()
744756
Assert.Throws<InvalidCastException>(() => reader.GetFieldValue<TextReader>(0));
745757
}
746758

759+
[Fact]
760+
public virtual async Task GetFieldValueAsync_for_TextReader_throws_for_null_String()
761+
{
762+
using var connection = CreateOpenConnection();
763+
using var command = connection.CreateCommand();
764+
command.CommandText = Fixture.CreateSelectSql(DbType.String, ValueKind.Null);
765+
using var reader = await command.ExecuteReaderAsync();
766+
await reader.ReadAsync();
767+
await Assert.ThrowsAsync<InvalidCastException>(async () => await reader.GetFieldValueAsync<TextReader>(0));
768+
}
769+
747770
[Fact]
748771
public virtual void GetFieldValue_for_Stream()
749772
{
@@ -753,7 +776,19 @@ public virtual void GetFieldValue_for_Stream()
753776
using var reader = command.ExecuteReader();
754777
reader.Read();
755778
using var stream = reader.GetFieldValue<Stream>(0);
756-
Assert.Equal(1, stream.ReadByte());
779+
Assert.Equal(0x11, stream.ReadByte());
780+
}
781+
782+
[Fact]
783+
public virtual async Task GetFieldValueAsync_for_Stream()
784+
{
785+
using var connection = CreateOpenConnection();
786+
using var command = connection.CreateCommand();
787+
command.CommandText = Fixture.CreateSelectSql(DbType.Binary, ValueKind.One);
788+
using var reader = await command.ExecuteReaderAsync();
789+
await reader.ReadAsync();
790+
using var stream = await reader.GetFieldValueAsync<Stream>(0);
791+
Assert.Equal(0x11, stream.ReadByte());
757792
}
758793

759794
[Fact]
@@ -767,6 +802,17 @@ public virtual void GetFieldValue_for_Stream_throws_for_null_Binary()
767802
Assert.Throws<InvalidCastException>(() => reader.GetFieldValue<Stream>(0));
768803
}
769804

805+
[Fact]
806+
public virtual async Task GetFieldValueAsync_for_Stream_throws_for_null_Binary()
807+
{
808+
using var connection = CreateOpenConnection();
809+
using var command = connection.CreateCommand();
810+
command.CommandText = Fixture.CreateSelectSql(DbType.Binary, ValueKind.Null);
811+
using var reader = await command.ExecuteReaderAsync();
812+
await reader.ReadAsync();
813+
await Assert.ThrowsAsync<InvalidCastException>(async () => await reader.GetFieldValueAsync<Stream>(0));
814+
}
815+
770816
[Fact]
771817
public virtual void FieldCount_is_zero_after_Delete() => Test_X_after_Delete(x => Assert.Equal(0, x.FieldCount));
772818

0 commit comments

Comments
 (0)