diff --git a/src/twopass.rs b/src/twopass.rs index 2b4cb6a..68197a1 100644 --- a/src/twopass.rs +++ b/src/twopass.rs @@ -443,10 +443,34 @@ impl OpenFunction { #[cfg(test)] mod tests { - use crate::{ast::*, types::ValueInner}; + use crate::{ + ast::*, + types::{Value, ValueInner}, + }; use super::build; + fn get(table: &Value, index: &str) -> Value { + let Some(ValueInner::Table(table)) = table else { + panic!("a table expected"); + }; + table.get(index.into()) + } + + fn set(table: &Value, index: &str, value: Value) { + let Some(ValueInner::Table(table)) = table else { + panic!("a table expected"); + }; + table.set(index.into(), value); + } + + fn call(func: &Value, args: &[Value]) -> Value { + let Some(ValueInner::Function(func)) = func else { + panic!("a function expected"); + }; + func.call(args) + } + #[test] fn test_local() { let testee = Function {