1#![allow(non_upper_case_globals)]
2#![allow(non_camel_case_types)]
3#![allow(non_snake_case)]
4
5include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
6
7#[no_mangle]
8unsafe extern "C" fn init_sqlean_extension(
9 db: *mut libsqlite3_sys::sqlite3,
10 _pzErrMrg: *mut *mut ::std::os::raw::c_char,
11 _pThunk: *const libsqlite3_sys::sqlite3_api_routines,
12) -> ::std::os::raw::c_int {
13 define_init(db as *mut sqlite3)
14}
15
16#[cfg(test)]
17mod tests {
18 use rusqlite::Connection;
19
20 #[test]
21 fn load_test() {
22 unsafe {
23 libsqlite3_sys::sqlite3_auto_extension(Some(super::init_sqlean_extension));
24 };
25
26 let conn = Connection::open_in_memory().unwrap();
27
28 conn
29 .query_row("SELECT define('sumn', ':n * (:n + 1) / 2')", (), |_row| {
30 Ok(())
31 })
32 .unwrap();
33 let sum: i64 = conn
34 .query_row("SELECT sumn(5)", (), |row| row.get(0))
35 .unwrap();
36 assert_eq!(15, sum);
37 }
38}