From 2f08fa0dab38ef5a0261cc300335fa48e89d202c Mon Sep 17 00:00:00 2001 From: numzero Date: Sat, 19 Apr 2025 14:14:48 +0300 Subject: [PATCH] add a simple test --- src/twopass.rs | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/twopass.rs b/src/twopass.rs index 0d53391..ade9c30 100644 --- a/src/twopass.rs +++ b/src/twopass.rs @@ -393,3 +393,40 @@ impl OpenFunction { } } } + +#[cfg(test)] +mod tests { + use crate::ast::*; + + use super::build; + + #[test] + fn test_local() { + let testee = Function { + name: Some("testee".into()), + args: vec![], + body: vec![ + Statement::Assign { + target: Location::Variable { name: "x".into() }, + source: Box::new(Expression::Constant(Constant::Number(1))), + }, + Statement::Local { + name: "x".into(), + init: Some(Box::new(Expression::Constant(Constant::Number(2)))), + }, + Statement::Assign { + target: Location::Variable { name: "x".into() }, + source: Box::new(Expression::Constant(Constant::Number(3))), + }, + ], + ret: Some(Box::new(Expression::Variable(Location::Variable { + name: "x".into(), + }))), + }; + let env = crate::types::Table::default(); + let testee = build(&testee); + let ret = testee.call(Some(env.clone().into()), &[]); + assert_eq!(ret, Some(3.into())); + assert_eq!(env.get("x".into()), Some(1.into())); + } +}