diff --git a/src/database.rs b/src/database.rs index 0a97117..c2259ea 100644 --- a/src/database.rs +++ b/src/database.rs @@ -113,3 +113,23 @@ extern fn execute_callback(callback: *mut c_void, count: c_int, values: *mut *mu if callback(pairs) { 0 } else { 1 } } } + +#[cfg(test)] +mod tests { + use super::Database; + use tests::setup; + + macro_rules! ok( + ($result:expr) => ($result.unwrap()); + ); + + #[test] + fn execute() { + let (path, _directory) = setup(); + let database = ok!(Database::open(&path)); + match database.execute(":)", None) { + Err(error) => assert_eq!(error.message, Some(String::from(r#"unrecognized token: ":""#))), + _ => assert!(false), + } + } +} diff --git a/src/lib.rs b/src/lib.rs index cc308e6..92d2eb2 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -3,6 +3,9 @@ extern crate libc; extern crate sqlite3_sys as raw; +#[cfg(test)] +extern crate temporary; + macro_rules! raise( ($message:expr) => (return Err(::Error::from($message))); ); @@ -68,3 +71,18 @@ pub use statement::{Statement, Binding, Value}; pub fn open(path: &std::path::Path) -> Result { Database::open(path) } + +#[cfg(test)] +mod tests { + use std::path::PathBuf; + use temporary::Directory; + + macro_rules! ok( + ($result:expr) => ($result.unwrap()); + ); + + pub fn setup() -> (PathBuf, Directory) { + let directory = ok!(Directory::new("sqlite")); + (directory.path().join("database.sqlite3"), directory) + } +} diff --git a/tests/lib.rs b/tests/lib.rs index 684f557..0a7d9a7 100644 --- a/tests/lib.rs +++ b/tests/lib.rs @@ -55,16 +55,6 @@ fn workflow() { } } -#[test] -fn failure() { - let (path, _directory) = setup(); - let database = ok!(sqlite::open(&path)); - match database.execute(":)", None) { - Err(error) => assert_eq!(error.message, Some(String::from(r#"unrecognized token: ":""#))), - _ => assert!(false), - } -} - fn setup() -> (PathBuf, Directory) { let directory = ok!(Directory::new("sqlite")); (directory.path().join("database.sqlite3"), directory)