mirror of
https://gitea.invidious.io/iv-org/shard-crystal-db.git
synced 2024-08-15 00:53:32 +00:00
Deal with unexpected ResultSet#read types during runtime.
This commit is contained in:
parent
545d758ae0
commit
bb3203301b
2 changed files with 8 additions and 3 deletions
|
@ -197,7 +197,7 @@ describe DB do
|
|||
FooDriver.fake_row = [1] of FooDriver::Any
|
||||
db.query "query" do |rs|
|
||||
rs.move_next
|
||||
expect_raises(TypeCastError) do
|
||||
expect_raises(Exception, "FooResultSet#read returned a Int32. A BarValue was expected.") do
|
||||
w.check
|
||||
rs.read(BarValue)
|
||||
end
|
||||
|
@ -210,7 +210,7 @@ describe DB do
|
|||
BarDriver.fake_row = [1] of BarDriver::Any
|
||||
db.query "query" do |rs|
|
||||
rs.move_next
|
||||
expect_raises(TypeCastError) do
|
||||
expect_raises(Exception, "BarResultSet#read returned a Int32. A FooValue was expected.") do
|
||||
w.check
|
||||
rs.read(FooValue)
|
||||
end
|
||||
|
|
|
@ -76,7 +76,12 @@ module DB
|
|||
|
||||
# Reads the next column value as a **type**
|
||||
def read(type : T.class) : T forall T
|
||||
read.as(T)
|
||||
value = read
|
||||
if value.is_a?(T)
|
||||
value
|
||||
else
|
||||
raise "#{self.class}#read returned a #{value.class}. A #{T} was expected."
|
||||
end
|
||||
end
|
||||
|
||||
# Reads the next columns and returns a tuple of the values.
|
||||
|
|
Loading…
Reference in a new issue