mirror of
https://github.com/isar/rusqlite.git
synced 2025-11-02 23:08:58 +08:00
@@ -310,10 +310,24 @@ impl<T: ToSql> ToSql for Option<T> {
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use super::ToSql;
|
||||
use super::{ToSql, ToSqlOutput};
|
||||
use crate::{types::Value, types::ValueRef, Result};
|
||||
|
||||
fn is_to_sql<T: ToSql>() {}
|
||||
|
||||
#[test]
|
||||
fn to_sql() -> Result<()> {
|
||||
assert_eq!(
|
||||
ToSqlOutput::Borrowed(ValueRef::Null).to_sql()?,
|
||||
ToSqlOutput::Borrowed(ValueRef::Null)
|
||||
);
|
||||
assert_eq!(
|
||||
ToSqlOutput::Owned(Value::Null).to_sql()?,
|
||||
ToSqlOutput::Borrowed(ValueRef::Null)
|
||||
);
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_integral_types() {
|
||||
is_to_sql::<i8>();
|
||||
|
||||
@@ -140,3 +140,25 @@ impl Value {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use super::Value;
|
||||
use crate::types::Type;
|
||||
|
||||
#[test]
|
||||
fn from() {
|
||||
assert_eq!(Value::from(2f32), Value::Real(2f64));
|
||||
assert_eq!(Value::from(3.), Value::Real(3.));
|
||||
assert_eq!(Value::from(vec![0u8]), Value::Blob(vec![0u8]));
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn data_type() {
|
||||
assert_eq!(Value::Null.data_type(), Type::Null);
|
||||
assert_eq!(Value::Integer(0).data_type(), Type::Integer);
|
||||
assert_eq!(Value::Real(0.).data_type(), Type::Real);
|
||||
assert_eq!(Value::Text("".to_owned()).data_type(), Type::Text);
|
||||
assert_eq!(Value::Blob(vec![]).data_type(), Type::Blob);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -261,3 +261,75 @@ impl<'a> ValueRef<'a> {
|
||||
// TODO sqlite3_value_nochange // 3.22.0 & VTab xUpdate
|
||||
// TODO sqlite3_value_frombind // 3.28.0
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use super::ValueRef;
|
||||
use crate::types::FromSqlResult;
|
||||
|
||||
#[test]
|
||||
fn as_i64() -> FromSqlResult<()> {
|
||||
assert!(ValueRef::Real(1.0).as_i64().is_err());
|
||||
assert_eq!(ValueRef::Integer(1).as_i64(), Ok(1));
|
||||
Ok(())
|
||||
}
|
||||
#[test]
|
||||
fn as_i64_or_null() -> FromSqlResult<()> {
|
||||
assert_eq!(ValueRef::Null.as_i64_or_null(), Ok(None));
|
||||
assert!(ValueRef::Real(1.0).as_i64_or_null().is_err());
|
||||
assert_eq!(ValueRef::Integer(1).as_i64_or_null(), Ok(Some(1)));
|
||||
Ok(())
|
||||
}
|
||||
#[test]
|
||||
fn as_f64() -> FromSqlResult<()> {
|
||||
assert!(ValueRef::Integer(1).as_f64().is_err());
|
||||
assert_eq!(ValueRef::Real(1.0).as_f64(), Ok(1.0));
|
||||
Ok(())
|
||||
}
|
||||
#[test]
|
||||
fn as_f64_or_null() -> FromSqlResult<()> {
|
||||
assert_eq!(ValueRef::Null.as_f64_or_null(), Ok(None));
|
||||
assert!(ValueRef::Integer(1).as_f64_or_null().is_err());
|
||||
assert_eq!(ValueRef::Real(1.0).as_f64_or_null(), Ok(Some(1.0)));
|
||||
Ok(())
|
||||
}
|
||||
#[test]
|
||||
fn as_str() -> FromSqlResult<()> {
|
||||
assert!(ValueRef::Null.as_str().is_err());
|
||||
assert_eq!(ValueRef::Text(b"").as_str(), Ok(""));
|
||||
Ok(())
|
||||
}
|
||||
#[test]
|
||||
fn as_str_or_null() -> FromSqlResult<()> {
|
||||
assert_eq!(ValueRef::Null.as_str_or_null(), Ok(None));
|
||||
assert!(ValueRef::Integer(1).as_str_or_null().is_err());
|
||||
assert_eq!(ValueRef::Text(b"").as_str_or_null(), Ok(Some("")));
|
||||
Ok(())
|
||||
}
|
||||
#[test]
|
||||
fn as_blob() -> FromSqlResult<()> {
|
||||
assert!(ValueRef::Null.as_blob().is_err());
|
||||
assert_eq!(ValueRef::Blob(b"").as_blob(), Ok(&b""[..]));
|
||||
Ok(())
|
||||
}
|
||||
#[test]
|
||||
fn as_blob_or_null() -> FromSqlResult<()> {
|
||||
assert_eq!(ValueRef::Null.as_blob_or_null(), Ok(None));
|
||||
assert!(ValueRef::Integer(1).as_blob_or_null().is_err());
|
||||
assert_eq!(ValueRef::Blob(b"").as_blob_or_null(), Ok(Some(&b""[..])));
|
||||
Ok(())
|
||||
}
|
||||
#[test]
|
||||
fn as_bytes() -> FromSqlResult<()> {
|
||||
assert!(ValueRef::Null.as_bytes().is_err());
|
||||
assert_eq!(ValueRef::Blob(b"").as_bytes(), Ok(&b""[..]));
|
||||
Ok(())
|
||||
}
|
||||
#[test]
|
||||
fn as_bytes_or_null() -> FromSqlResult<()> {
|
||||
assert_eq!(ValueRef::Null.as_bytes_or_null(), Ok(None));
|
||||
assert!(ValueRef::Integer(1).as_bytes_or_null().is_err());
|
||||
assert_eq!(ValueRef::Blob(b"").as_bytes_or_null(), Ok(Some(&b""[..])));
|
||||
Ok(())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user