diff --git a/stdlib/src/sqlite.rs b/stdlib/src/sqlite.rs index c7d8f769..7224a6c9 100644 --- a/stdlib/src/sqlite.rs +++ b/stdlib/src/sqlite.rs @@ -254,3 +254,46 @@ impl StdlibRegistry { ); } } + +#[cfg(test)] +mod tests { + use super::*; + use rusqlite::types::Value; + use std::cell::RefCell; + use std::rc::Rc; + use techscript_runtime::value::RuntimeValue; + + #[test] + fn test_runtime_to_sql_value() { + assert_eq!(runtime_to_sql_value(&RuntimeValue::Null), Value::Null); + assert_eq!( + runtime_to_sql_value(&RuntimeValue::Bool(true)), + Value::Integer(1) + ); + assert_eq!( + runtime_to_sql_value(&RuntimeValue::Bool(false)), + Value::Integer(0) + ); + assert_eq!( + runtime_to_sql_value(&RuntimeValue::Int(42)), + Value::Integer(42) + ); + assert_eq!( + runtime_to_sql_value(&RuntimeValue::Float(3.14)), + Value::Real(3.14) + ); + assert_eq!( + runtime_to_sql_value(&RuntimeValue::Str("test".to_string())), + Value::Text("test".to_string()) + ); + + let list_val = RuntimeValue::List { + items: Rc::new(RefCell::new(vec![RuntimeValue::Int(1)])), + is_const: false, + }; + assert_eq!( + runtime_to_sql_value(&list_val), + Value::Text(list_val.to_string()) + ); + } +}