From c6ad5c92ce5cb555103a239c582bf59ac78ceae8 Mon Sep 17 00:00:00 2001 From: numzero Date: Fri, 11 Apr 2025 20:53:53 +0300 Subject: [PATCH] test table assignment! --- src/run.rs | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/run.rs b/src/run.rs index be7ebaa..e23f834 100644 --- a/src/run.rs +++ b/src/run.rs @@ -227,6 +227,33 @@ mod tests { assert_eq!(scope.get("bar"), None); } + #[test] + fn test_table_assign() { + let mut scope = Scope::default(); + let foo = types::Table::default(); + let bar = types::Table::default(); + scope.variables.insert("foo".into(), foo.clone().into()); + scope.variables.insert("bar".into(), bar.clone().into()); + assert_eq!(foo.get("foo".into()), None); + assert_eq!(foo.get("bar".into()), None); + assert_eq!(bar.get("foo".into()), None); + assert_eq!(bar.get("bar".into()), None); + ast::Statement::Assign { + target: ast::Location::Field { + table: Box::new(ast::Location::Variable { name: "foo".into() }), + index: Box::new(ast::Expression::Constant(ast::Constant::String( + "bar".into(), + ))), + }, + source: Box::new(ast::Expression::Constant(ast::Constant::Number(42))), + } + .exec(&mut scope); + assert_eq!(foo.get("foo".into()), None); + assert_eq!(foo.get("bar".into()), Some(42.into())); + assert_eq!(bar.get("foo".into()), None); + assert_eq!(bar.get("bar".into()), None); + } + #[test] fn test_call_statement() { let mut scope = Scope::default();