summaryrefslogtreecommitdiff
path: root/test/driver.c
blob: 2eabb06c38b42c1f81b6293785b16c6095ac98ad (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
/* file      : test/driver.c
 * copyright : not copyrighted - public domain
 */

/*
 * Basic test to make sure the library is usable.
 */

#ifdef NDEBUG
#  undef NDEBUG
#endif

#include <sqlite3.h>

#include <stddef.h> /* NULL */
#include <assert.h>

static int
sql (sqlite3* db, const char* stmt)
{
  return sqlite3_exec (db, stmt, NULL, NULL, NULL) == SQLITE_OK;
}

int
main ()
{
  sqlite3* db;
  int r;

  r = sqlite3_open_v2 (":memory:",
                       &db,
                       SQLITE_OPEN_READWRITE | SQLITE_OPEN_CREATE,
                       NULL);
  assert (r == SQLITE_OK);

  assert (sql (db, "BEGIN"));
  assert (sql (db, "CREATE TABLE test (id INTEGER PRIMARY KEY, str TEXT)"));
  assert (sql (db, "COMMIT"));

  assert (sql (db, "BEGIN"));
  assert (sql (db, "INSERT INTO test VALUES (123, 'abc')"));
  assert (sql (db, "COMMIT"));

  assert (sql (db, "BEGIN"));
  assert (!sql (db, "INSERT INTO test VALUES (123, 'ABC')"));
  assert (sql (db, "ROLLBACK"));

  assert (sql (db, "BEGIN"));
  assert (sql (db, "DROP TABLE test"));
  assert (sql (db, "COMMIT"));

  r = sqlite3_close (db);
  assert (r == SQLITE_OK);

  return 0;
}