0
0
mirror of https://github.com/tursodatabase/libsql.git synced 2025-07-04 17:13:32 +00:00
Files
libsql/libsql-sqlite3/ext/crr/rs/integration-check/tests/teardown.rs

45 lines
1.3 KiB
Rust

use core::mem::forget;
use sqlite::{Connection, ResultCode};
use sqlite_nostd as sqlite;
integration_utils::counter_setup!(2);
#[test]
fn crr_to_table() {
crr_to_table_impl().unwrap();
decrement_counter();
}
fn crr_to_table_impl() -> Result<(), ResultCode> {
let db = integration_utils::opendb()?;
db.db.exec_safe("CREATE TABLE foo (a primary key, b);")?;
db.db.exec_safe("SELECT crsql_as_crr('foo');")?;
db.db.exec_safe("SELECT crsql_as_table('foo');")?;
let stmt = db
.db
.prepare_v2("SELECT count(*) FROM sqlite_master WHERE name LIKE 'foo__%'")?;
stmt.step()?;
let count = stmt.column_int(0)?;
assert!(count == 0);
Ok(())
}
#[test]
fn statements_finalized_on_connection_close() {
let db_wrapped = integration_utils::opendb().expect("opened db");
let db = &db_wrapped.db;
db.exec_safe("CREATE TABLE foo (a primary key not null, b);")
.expect("created foo");
db.exec_safe("SELECT crsql_as_crr('foo');")
.expect("created crr");
let db_ptr = db.db;
// forget the db. We'll close it ourself
forget(db);
// forget so we don't run the `crsql_finalize` routine -- the close hook should now do that for us.
forget(db_wrapped);
let rc = sqlite::close(db_ptr);
assert!(rc == 0);
decrement_counter();
}