From 4fa8989faa4b17400bb910f7781821c669307ab0 Mon Sep 17 00:00:00 2001 From: Jayson Reis Date: Tue, 10 Jul 2018 21:32:29 +0200 Subject: [PATCH] Changes for core review --- src/statement.rs | 5 +++-- tests/lib.rs | 24 +++++++++++++++--------- 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/src/statement.rs b/src/statement.rs index 1a79d5e..f817b9e 100644 --- a/src/statement.rs +++ b/src/statement.rs @@ -55,16 +55,17 @@ impl<'l> Statement<'l> { unsafe { ffi::sqlite3_column_count(self.raw.0) as usize } } - /// Return the name of a column in the statement + /// Return the name of a column. #[inline] pub fn column_name(&self, i: usize) -> &str { + debug_assert!(i < self.columns(), format!("column position has to be between 0 and {}", self.columns() - 1)); unsafe { let ret = ffi::sqlite3_column_name(self.raw.0, i as c_int); c_str_to_str!(ret).unwrap() } } - /// Return column names in the statement + /// Return column names. #[inline] pub fn column_names(&self) -> Vec<&str> { (0..self.columns()).map(|i| self.column_name(i)).collect() diff --git a/tests/lib.rs b/tests/lib.rs index e81fc25..9295089 100644 --- a/tests/lib.rs +++ b/tests/lib.rs @@ -137,22 +137,28 @@ fn cursor_workflow() { #[test] fn statement_columns() { let connection = setup_users(":memory:"); - let statement = "SELECT id, name, age, photo as user_photo FROM users"; + let statement = "SELECT * FROM users"; let mut statement = ok!(connection.prepare(statement)); - assert_eq!(statement.columns(), 4); - - { - let column_names = statement.column_names(); - assert_eq!(column_names, vec!["id", "name", "age", "user_photo"]); - assert_eq!("user_photo", statement.column_name(3)); - } - assert_eq!(ok!(statement.next()), State::Row); assert_eq!(statement.columns(), 4); } +#[test] +fn statement_column_name() { + let connection = setup_users(":memory:"); + let statement = "SELECT id, name, age, photo as user_photo FROM users"; + let statement = ok!(connection.prepare(statement)); + + assert_eq!(statement.columns(), 4); + + let column_names = statement.column_names(); + assert_eq!(column_names, vec!["id", "name", "age", "user_photo"]); + assert_eq!("user_photo", statement.column_name(3)); + +} + #[test] fn statement_kind() { let connection = setup_users(":memory:");