mirror of
https://github.com/isar/rusqlite.git
synced 2025-09-14 11:42:18 +08:00
Make tests return Result
This commit is contained in:
@@ -197,29 +197,30 @@ unsafe impl VTabCursor for ArrayTabCursor<'_> {
|
||||
mod test {
|
||||
use crate::types::Value;
|
||||
use crate::vtab::array;
|
||||
use crate::Connection;
|
||||
use crate::{Connection, Result};
|
||||
use std::rc::Rc;
|
||||
|
||||
#[test]
|
||||
fn test_array_module() {
|
||||
let db = Connection::open_in_memory().unwrap();
|
||||
array::load_module(&db).unwrap();
|
||||
fn test_array_module() -> Result<()> {
|
||||
let db = Connection::open_in_memory()?;
|
||||
array::load_module(&db)?;
|
||||
|
||||
let v = vec![1i64, 2, 3, 4];
|
||||
let values: Vec<Value> = v.into_iter().map(Value::from).collect();
|
||||
let ptr = Rc::new(values);
|
||||
{
|
||||
let mut stmt = db.prepare("SELECT value from rarray(?);").unwrap();
|
||||
let mut stmt = db.prepare("SELECT value from rarray(?);")?;
|
||||
|
||||
let rows = stmt.query_map(&[&ptr], |row| row.get::<_, i64>(0)).unwrap();
|
||||
let rows = stmt.query_map(&[&ptr], |row| row.get::<_, i64>(0))?;
|
||||
assert_eq!(2, Rc::strong_count(&ptr));
|
||||
let mut count = 0;
|
||||
for (i, value) in rows.enumerate() {
|
||||
assert_eq!(i as i64, value.unwrap() - 1);
|
||||
assert_eq!(i as i64, value? - 1);
|
||||
count += 1;
|
||||
}
|
||||
assert_eq!(4, count);
|
||||
}
|
||||
assert_eq!(1, Rc::strong_count(&ptr));
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
@@ -367,49 +367,41 @@ mod test {
|
||||
use fallible_iterator::FallibleIterator;
|
||||
|
||||
#[test]
|
||||
fn test_csv_module() {
|
||||
let db = Connection::open_in_memory().unwrap();
|
||||
csvtab::load_module(&db).unwrap();
|
||||
db.execute_batch("CREATE VIRTUAL TABLE vtab USING csv(filename='test.csv', header=yes)")
|
||||
.unwrap();
|
||||
fn test_csv_module() -> Result<()> {
|
||||
let db = Connection::open_in_memory()?;
|
||||
csvtab::load_module(&db)?;
|
||||
db.execute_batch("CREATE VIRTUAL TABLE vtab USING csv(filename='test.csv', header=yes)")?;
|
||||
|
||||
{
|
||||
let mut s = db.prepare("SELECT rowid, * FROM vtab").unwrap();
|
||||
let mut s = db.prepare("SELECT rowid, * FROM vtab")?;
|
||||
{
|
||||
let headers = s.column_names();
|
||||
assert_eq!(vec!["rowid", "colA", "colB", "colC"], headers);
|
||||
}
|
||||
|
||||
let ids: Result<Vec<i32>> = s
|
||||
.query([])
|
||||
.unwrap()
|
||||
.map(|row| row.get::<_, i32>(0))
|
||||
.collect();
|
||||
let sum = ids.unwrap().iter().sum::<i32>();
|
||||
let ids: Result<Vec<i32>> = s.query([])?.map(|row| row.get::<_, i32>(0)).collect();
|
||||
let sum = ids?.iter().sum::<i32>();
|
||||
assert_eq!(sum, 15);
|
||||
}
|
||||
db.execute_batch("DROP TABLE vtab").unwrap();
|
||||
db.execute_batch("DROP TABLE vtab")
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_csv_cursor() {
|
||||
let db = Connection::open_in_memory().unwrap();
|
||||
csvtab::load_module(&db).unwrap();
|
||||
db.execute_batch("CREATE VIRTUAL TABLE vtab USING csv(filename='test.csv', header=yes)")
|
||||
.unwrap();
|
||||
fn test_csv_cursor() -> Result<()> {
|
||||
let db = Connection::open_in_memory()?;
|
||||
csvtab::load_module(&db)?;
|
||||
db.execute_batch("CREATE VIRTUAL TABLE vtab USING csv(filename='test.csv', header=yes)")?;
|
||||
|
||||
{
|
||||
let mut s = db
|
||||
.prepare(
|
||||
"SELECT v1.rowid, v1.* FROM vtab v1 NATURAL JOIN vtab v2 WHERE \
|
||||
let mut s = db.prepare(
|
||||
"SELECT v1.rowid, v1.* FROM vtab v1 NATURAL JOIN vtab v2 WHERE \
|
||||
v1.rowid < v2.rowid",
|
||||
)
|
||||
.unwrap();
|
||||
)?;
|
||||
|
||||
let mut rows = s.query([]).unwrap();
|
||||
let row = rows.next().unwrap().unwrap();
|
||||
let mut rows = s.query([])?;
|
||||
let row = rows.next()?.unwrap();
|
||||
assert_eq!(row.get_unwrap::<_, i32>(0), 2);
|
||||
}
|
||||
db.execute_batch("DROP TABLE vtab").unwrap();
|
||||
db.execute_batch("DROP TABLE vtab")
|
||||
}
|
||||
}
|
||||
|
@@ -273,26 +273,27 @@ unsafe impl VTabCursor for SeriesTabCursor<'_> {
|
||||
mod test {
|
||||
use crate::ffi;
|
||||
use crate::vtab::series;
|
||||
use crate::Connection;
|
||||
use crate::{Connection, Result};
|
||||
|
||||
#[test]
|
||||
fn test_series_module() {
|
||||
fn test_series_module() -> Result<()> {
|
||||
let version = unsafe { ffi::sqlite3_libversion_number() };
|
||||
if version < 3_008_012 {
|
||||
return;
|
||||
return Ok(());
|
||||
}
|
||||
|
||||
let db = Connection::open_in_memory().unwrap();
|
||||
series::load_module(&db).unwrap();
|
||||
let db = Connection::open_in_memory()?;
|
||||
series::load_module(&db)?;
|
||||
|
||||
let mut s = db.prepare("SELECT * FROM generate_series(0,20,5)").unwrap();
|
||||
let mut s = db.prepare("SELECT * FROM generate_series(0,20,5)")?;
|
||||
|
||||
let series = s.query_map([], |row| row.get::<_, i32>(0)).unwrap();
|
||||
let series = s.query_map([], |row| row.get::<_, i32>(0))?;
|
||||
|
||||
let mut expected = 0;
|
||||
for value in series {
|
||||
assert_eq!(expected, value.unwrap());
|
||||
assert_eq!(expected, value?);
|
||||
expected += 5;
|
||||
}
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user