From f6688f5bb51b8567dac1e4021e2608111465dca5 Mon Sep 17 00:00:00 2001 From: "Bradley C. Kuszmaul" Date: Sat, 22 Dec 2007 20:28:13 +0000 Subject: [PATCH] Add the exceptions tests. Addresses #215. git-svn-id: file:///svn/tokudb@1329 c7de825b-a66e-492c-adef-691d508d4ae1 --- cxx/tests/exceptions.cpp | 53 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 cxx/tests/exceptions.cpp diff --git a/cxx/tests/exceptions.cpp b/cxx/tests/exceptions.cpp new file mode 100644 index 00000000000..01e2b4dbf3f --- /dev/null +++ b/cxx/tests/exceptions.cpp @@ -0,0 +1,53 @@ +#include +#include +#include + +#define TC(expr, expect) ({ \ + try { \ + expr; \ + assert(expect==0); \ + } catch (DbException e) { \ + if (e.get_errno()!=expect) fprintf(stderr, "err=%d %s\n", e.get_errno(), db_strerror(e.get_errno())); \ + assert(e.get_errno()==expect); \ + } \ +}) + +void test_env_exceptions (void) { + { + DbEnv env(0); + TC(env.open("no.such.dir", DB_INIT_MPOOL | DB_CREATE | DB_PRIVATE, 0777), ENOENT); + } + { + DbEnv env(0); + TC(env.open("no.such.dir", -1, 0777), EINVAL); + } + { + DbEnv env(0); + TC(env.open(".", DB_INIT_MPOOL | DB_CREATE | DB_PRIVATE, 0777), 0); + DbTxn *txn; + TC(env.txn_begin(0, &txn, 0), EINVAL); // not configured for transations + } + { + DbEnv env(0); + TC(env.open(".", DB_INIT_MPOOL | DB_CREATE | DB_PRIVATE | DB_INIT_LOG, 0777), 0); + DbTxn *txn; + TC(env.txn_begin(0, &txn, 0), 0); + TC(txn->commit(0), 0); + delete txn; + } + + { + DbEnv env(0); + TC(env.open(".", DB_INIT_MPOOL | DB_CREATE | DB_PRIVATE | DB_INIT_LOG, 0777), 0); + DbTxn *txn; + TC(env.txn_begin(0, &txn, 0), 0); + TC(txn->commit(-1), EINVAL); + delete txn; + } +} + + +int main(int argc, char *argv[]) { + test_env_exceptions(); + return 0; +}