Added test for prepared statements with parameters (doesn't pass so far)

This commit is contained in:
Alexey Romanov
2010-12-09 18:57:21 +03:00
parent 9f1f3492fc
commit 9f6e8845a5

View File

@@ -205,20 +205,28 @@ prepared_test() ->
Columns = ["id", "name", "age", "wage"],
Abby = {1, <<"abby">>, 20, 2000},
Marge = {2, <<"marge">>, 30, 2000},
Null = {3, null, 40, 3000},
TableInfo = [{id, integer, [primary_key]}, {name, text, [not_null, unique]}, {age, integer}, {wage, integer}],
sqlite3:open(prepared, [in_memory]),
ok = sqlite3:create_table(prepared, user, TableInfo),
sqlite3:write(prepared, user, [{name, "abby"}, {age, 20}, {wage, 2000}]),
sqlite3:write(prepared, user, [{name, "marge"}, {age, 30}, {wage, 2000}]),
{ok, Ref} = sqlite3:prepare(prepared, "SELECT * FROM user"),
?assertEqual(Columns, sqlite3:columns(prepared, Ref)),
?assertEqual(Abby, sqlite3:next(prepared, Ref)),
?assertEqual(ok, sqlite3:reset(prepared, Ref)),
?assertEqual(Abby, sqlite3:next(prepared, Ref)),
?assertEqual(Marge, sqlite3:next(prepared, Ref)),
?assertEqual(done, sqlite3:next(prepared, Ref)),
?assertEqual(ok, sqlite3:finalize(prepared, Ref)),
?assertMatch({error, _, _}, sqlite3:next(prepared, Ref)),
{ok, Ref1} = sqlite3:prepare(prepared, "SELECT * FROM user"),
{ok, Ref2} = sqlite3:prepare(prepared, "SELECT * FROM user WHERE name = ?"),
?assertEqual(Columns, sqlite3:columns(prepared, Ref1)),
?assertEqual(Abby, sqlite3:next(prepared, Ref1)),
?assertEqual(ok, sqlite3:reset(prepared, Ref1)),
?assertEqual(Abby, sqlite3:next(prepared, Ref1)),
?assertEqual(Marge, sqlite3:next(prepared, Ref1)),
?assertEqual(done, sqlite3:next(prepared, Ref1)),
?assertEqual(ok, sqlite3:finalize(prepared, Ref1)),
?assertMatch({error, _, _}, sqlite3:next(prepared, Ref1)),
?assertEqual(Null, sqlite3:next(prepared, Ref2)),
?assertEqual(ok, sqlite3:reset(prepared, Ref2)),
?assertEqual(ok, sqlite3:bind(prepared, Ref2, ["marge"])),
?assertEqual(Marge, sqlite3:next(prepared, Ref2)),
?assertEqual(done, sqlite3:next(prepared, Ref2)),
?assertEqual(ok, sqlite3:finalize(prepared, Ref2)),
sqlite3:close(prepared).
% create, read, update, delete