diff --git a/tests/IntegrationTests/QueryTests.cs b/tests/IntegrationTests/QueryTests.cs index ce43b8851..fc531a90e 100644 --- a/tests/IntegrationTests/QueryTests.cs +++ b/tests/IntegrationTests/QueryTests.cs @@ -122,7 +122,7 @@ public void GetOrdinalAfterNextResult() public void GetOrdinalBeforeAndAfterRead() { using var cmd = m_database.Connection.CreateCommand(); - cmd.CommandText = "select 0 as zero, 1 as one;"; + cmd.CommandText = "select 0 as zero, 1 as one; select 2 as two;"; using var reader = cmd.ExecuteReader(); Assert.Equal(1, reader.GetOrdinal("one")); @@ -130,6 +130,13 @@ public void GetOrdinalBeforeAndAfterRead() Assert.Equal(1, reader.GetOrdinal("one")); Assert.False(reader.Read()); Assert.Equal(1, reader.GetOrdinal("one")); + + Assert.True(reader.NextResult()); + Assert.Equal(0, reader.GetOrdinal("two")); + Assert.True(reader.Read()); + Assert.Equal(0, reader.GetOrdinal("two")); + Assert.False(reader.Read()); + Assert.Equal(0, reader.GetOrdinal("two")); } [Fact] @@ -727,6 +734,44 @@ public void UseReaderWithoutDisposing() throw ex; } + [Fact] + public void GetNameAfterNextResult() + { + using var cmd = m_database.Connection.CreateCommand(); + cmd.CommandText = "select 1 as a;"; + using var reader = cmd.ExecuteReader(); + Assert.False(reader.NextResult()); +#if MYSQL_DATA + Assert.Throws(() => reader.GetName(0)); +#else + Assert.Throws(() => reader.GetName(0)); +#endif + } + + [Fact] + public void GetNameBeforeAndAfterRead() + { + using var cmd = m_database.Connection.CreateCommand(); + cmd.CommandText = "select '1' as a; select 1.0 as b;"; + using var reader = cmd.ExecuteReader(); + Assert.Equal("a", reader.GetName(0)); + + Assert.True(reader.Read()); + Assert.Equal("a", reader.GetName(0)); + + Assert.False(reader.Read()); + Assert.Equal("a", reader.GetName(0)); + + Assert.True(reader.NextResult()); + Assert.Equal("b", reader.GetName(0)); + + Assert.True(reader.Read()); + Assert.Equal("b", reader.GetName(0)); + + Assert.False(reader.Read()); + Assert.Equal("b", reader.GetName(0)); + } + [Theory] #if MYSQL_DATA [InlineData("null", typeof(string))] @@ -778,6 +823,30 @@ public void GetFieldTypeAfterNextResult() #endif } + [Fact] + public void GetFieldTypeBeforeAndAfterRead() + { + using var cmd = m_database.Connection.CreateCommand(); + cmd.CommandText = "select '1' as a; select 1.0 as b;"; + using var reader = cmd.ExecuteReader(); + Assert.Equal(typeof(string), reader.GetFieldType(0)); + + Assert.True(reader.Read()); + Assert.Equal(typeof(string), reader.GetFieldType(0)); + + Assert.False(reader.Read()); + Assert.Equal(typeof(string), reader.GetFieldType(0)); + + Assert.True(reader.NextResult()); + Assert.Equal(typeof(decimal), reader.GetFieldType(0)); + + Assert.True(reader.Read()); + Assert.Equal(typeof(decimal), reader.GetFieldType(0)); + + Assert.False(reader.Read()); + Assert.Equal(typeof(decimal), reader.GetFieldType(0)); + } + [Theory] #if MYSQL_DATA [InlineData("null", "VARCHAR")] @@ -828,6 +897,30 @@ public void GetDataTypeNameAfterNextResult() #endif } + [Fact] + public void GetDataTypeNameBeforeAndAfterRead() + { + using var cmd = m_database.Connection.CreateCommand(); + cmd.CommandText = "select '1' as a; select 1.0 as b;"; + using var reader = cmd.ExecuteReader(); + Assert.Equal("VARCHAR", reader.GetDataTypeName(0)); + + Assert.True(reader.Read()); + Assert.Equal("VARCHAR", reader.GetDataTypeName(0)); + + Assert.False(reader.Read()); + Assert.Equal("VARCHAR", reader.GetDataTypeName(0)); + + Assert.True(reader.NextResult()); + Assert.Equal("DECIMAL", reader.GetDataTypeName(0)); + + Assert.True(reader.Read()); + Assert.Equal("DECIMAL", reader.GetDataTypeName(0)); + + Assert.False(reader.Read()); + Assert.Equal("DECIMAL", reader.GetDataTypeName(0)); + } + #if !MYSQL_DATA [Fact] public void GetColumnSchemaAfterNextResult() @@ -1078,6 +1171,9 @@ public void HasRowsRepeated() Assert.True(reader.HasRows); Assert.True(reader.HasRows); Assert.True(reader.HasRows); + + Assert.False(reader.NextResult()); + Assert.False(reader.HasRows); } [Fact]