use jimtcl::{Interp, JimResult};
#[test]
fn test_eval_noresult() -> JimResult<()> {
let interp = Interp::new()?;
let rv = interp.eval("puts readme")?;
assert_eq!(&rv.to_string(), "");
Ok(())
}
#[test]
fn test_eval_simple() -> JimResult<()> {
let interp = Interp::new()?;
let rv = interp.eval("expr {1 + 2}")?;
assert_eq!(&rv.to_string(), "3");
Ok(())
}
#[test]
fn test_eval_expr() -> JimResult<()> {
let interp = Interp::new()?;
let res = interp.eval_expr("1 + 2")?;
assert_eq!(i32::try_from(&res)?, 3);
Ok(())
}
#[test]
fn test_get_var() -> JimResult<()> {
let interp = Interp::new()?;
interp.eval("set scroll {READ ME}")?;
let val = interp.get_variable("scroll").unwrap();
assert_eq!(val.as_str()?, "READ ME");
Ok(())
}
#[test]
fn test_set_var() -> JimResult<()> {
let interp = Interp::new()?;
interp.set_variable("scroll", "HACKEM MUCHE")?;
let val = interp.get_variable("scroll").unwrap();
assert_eq!(val.as_str()?, "HACKEM MUCHE");
let exp = interp.eval_expr("$scroll eq {HACKEM MUCHE}")?;
assert!(bool::try_from(&exp)?);
let exp = interp.eval_expr("$scroll eq {READ ME}")?;
assert!(!bool::try_from(&exp)?);
Ok(())
}