mirror of
				https://github.com/isar/rusqlite.git
				synced 2025-10-31 13:58:55 +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