use chrono::Utc;
#[macro_use]
extern crate lazy_static;
mod util;
#[test]
fn test() -> Result<(), jdbc::errors::Error> {
let ds = util::sqlite();
let conn = ds.get_connection()?;
let statement = conn.prepare_statement("select ?")?.set_string(1, "value")?;
let result = statement.execute_query()?;
assert_eq!(result.next()?, true);
assert_eq!(result.get_string(1)?, Some("value".into()));
Ok(())
}
#[test]
fn test_time() -> Result<(), jdbc::errors::Error> {
let ds = util::sqlite();
let conn = ds.get_connection()?;
let statement =
conn.prepare_statement(r#"select strftime("%Y-%m-%d %H:%M:%f", "now") as now"#)?;
let now_timestamp = Utc::now().timestamp_millis();
let result = statement.execute_query()?;
assert_eq!(result.next()?, true);
let timestamp = result.get_timestamp_millis(1)?.unwrap_or(0);
assert!((now_timestamp - timestamp).abs() < 1000);
let timestamp = result.get_timestamp_millis_by_label("now")?.unwrap_or(0);
assert!((now_timestamp - timestamp).abs() < 1000);
Ok(())
}
#[test]
fn test_null() -> Result<(), jdbc::errors::Error> {
let ds = util::sqlite();
let conn = ds.get_connection()?;
let statement = conn.prepare_statement("select NULL")?;
let result = statement.execute_query()?;
assert_eq!(result.next()?, true);
assert_eq!(result.get_string(1)?, None);
assert_eq!(result.get_timestamp_millis(1)?, None);
assert_eq!(result.was_null()?, true);
Ok(())
}
#[cfg(feature = "chrono")]
#[test]
fn test_chrono() -> Result<(), jdbc::errors::Error> {
let ds = util::sqlite();
let conn = ds.get_connection()?;
let statement =
conn.prepare_statement(r#"select strftime("%Y-%m-%d %H:%M:%f", "now") as now"#)?;
let now_timestamp = Utc::now().timestamp_millis();
let result = statement.execute_query()?;
let local = result.get_local_time(1)?.unwrap();
assert!((now_timestamp - local.timestamp_millis()).abs() < 1000);
let local = result.get_local_time_by_label("now")?.unwrap();
assert!((now_timestamp - local.timestamp_millis()).abs() < 1000);
let local = result.get_utc_time(1)?.unwrap();
assert!((now_timestamp - local.timestamp_millis()).abs() < 1000);
let local = result.get_utc_time_by_label("now")?.unwrap();
assert!((now_timestamp - local.timestamp_millis()).abs() < 1000);
let statement = conn.prepare_statement("select NULL")?;
let result = statement.execute_query()?;
assert_eq!(result.get_local_time(1)?, None);
assert_eq!(result.get_utc_time(1)?, None);
Ok(())
}