@@ -303,74 +303,49 @@ defmodule Exqlite.Sqlite3Test do
303303 { :ok , conn } = Sqlite3 . open ( ":memory:" )
304304
305305 { :ok , statement } =
306- Sqlite3 . prepare ( conn , "select :42, : pi, :name, : emoji, :blob, :null" )
306+ Sqlite3 . prepare ( conn , "select :42, @ pi, :name, $ emoji, :blob, :null" )
307307
308308 :ok =
309309 Sqlite3 . bind ( statement , % {
310310 ":42" => 42 ,
311- ":pi" => 3.14 ,
312- ":name" => "Alice" ,
313- ":emoji" => "👋" ,
314- ":blob" => { :blob , << 0 , 1 , 2 >> } ,
315- ":null" => nil
316- } )
317-
318- assert { :row , [ 42 , 3.14 , "Alice" , "👋" , << 0 , 1 , 2 >> , nil ] } =
319- Sqlite3 . step ( conn , statement )
320- end
321-
322- test "binds named parameters like @VVV" do
323- { :ok , conn } = Sqlite3 . open ( ":memory:" )
324-
325- { :ok , statement } =
326- Sqlite3 . prepare ( conn , "select @42, @pi, @name, @emoji, @blob, @null" )
327-
328- :ok =
329- Sqlite3 . bind ( statement , % {
330- "@42" => 42 ,
331311 "@pi" => 3.14 ,
332- "@ name" => "Alice" ,
333- "@ emoji" => "👋" ,
334- "@ blob" => { :blob , << 0 , 1 , 2 >> } ,
335- "@ null" => nil
312+ :": name" => "Alice" ,
313+ "$ emoji" => "👋" ,
314+ ": blob" => { :blob , << 0 , 1 , 2 >> } ,
315+ ~c " : null" => nil
336316 } )
337317
338318 assert { :row , [ 42 , 3.14 , "Alice" , "👋" , << 0 , 1 , 2 >> , nil ] } =
339319 Sqlite3 . step ( conn , statement )
340320 end
341321
342- test "binds named parameters like $VVV " do
322+ test "handles repeating named parameters" do
343323 { :ok , conn } = Sqlite3 . open ( ":memory:" )
344324
345325 { :ok , statement } =
346- Sqlite3 . prepare ( conn , "select $42, $pi, $ name, $emoji, $blob, $null " )
326+ Sqlite3 . prepare ( conn , "select :name, : name, :name " )
347327
348328 :ok =
349329 Sqlite3 . bind ( statement , % {
350- "$42" => 42 ,
351- "$pi" => 3.14 ,
352- "$name" => "Alice" ,
353- "$emoji" => "👋" ,
354- "$blob" => { :blob , << 0 , 1 , 2 >> } ,
355- "$null" => nil
330+ ":name" => "Alice"
356331 } )
357332
358- assert { :row , [ 42 , 3.14 , "Alice" , "👋" , << 0 , 1 , 2 >> , nil ] } =
359- Sqlite3 . step ( conn , statement )
333+ assert { :row , [ "Alice" , "Alice" , "Alice" ] } = Sqlite3 . step ( conn , statement )
360334 end
361335
362- test "handles repeating named parameters" do
336+ test "raises an error when too few or too many named parameters" do
363337 { :ok , conn } = Sqlite3 . open ( ":memory:" )
364338
365339 { :ok , statement } =
366- Sqlite3 . prepare ( conn , "select :name, :name, :name " )
340+ Sqlite3 . prepare ( conn , "select :name, :age " )
367341
368- :ok =
369- Sqlite3 . bind ( statement , % {
370- ":name" => "Alice"
371- } )
342+ assert_raise ArgumentError , ~r" expected 2 named arguments, got 1" , fn ->
343+ Sqlite3 . bind ( statement , % { ":name" => "Alice" } )
344+ end
372345
373- assert { :row , [ "Alice" , "Alice" , "Alice" ] } = Sqlite3 . step ( conn , statement )
346+ assert_raise ArgumentError , ~r" expected 2 named arguments, got 3" , fn ->
347+ Sqlite3 . bind ( statement , % { ":name" => "Alice" , ":age" => 30 , ":extra" => "value" } )
348+ end
374349 end
375350 end
376351
0 commit comments