diff --git a/sqlite3/tests/test-prepare.c b/sqlite3/tests/test-prepare.c new file mode 100644 index 000000000..d9f358273 --- /dev/null +++ b/sqlite3/tests/test-prepare.c @@ -0,0 +1,24 @@ +#include "check.h" + +#include +#include +#include +#include + +void test_prepare_misuse(void) +{ + sqlite3 *db; + + CHECK_EQUAL(SQLITE_OK, sqlite3_open("../../testing/testing.db", &db)); + + // Database handle is NULL. + CHECK_EQUAL(SQLITE_MISUSE, sqlite3_prepare_v2(NULL, "SELECT 1", -1, NULL, NULL)); + + // Output statement is NULL. + CHECK_EQUAL(SQLITE_MISUSE, sqlite3_prepare_v2(db, "SELECT 1", -1, NULL, NULL)); + + // SQL string length is too short, truncating the statement. + CHECK_EQUAL(SQLITE_MISUSE, sqlite3_prepare_v2(db, "SELECT 1", 7, NULL, NULL)); + + CHECK_EQUAL(SQLITE_OK, sqlite3_close(db)); +}