use std::cell::Cell;
use crate::{
codemap::FileSpanRef,
environment::{Globals, Module},
eval::Evaluator,
syntax::{AstModule, Dialect},
};
#[test]
fn before_stmt() {
let module = Module::new();
let globals = Globals::new();
let mut evaluator = Evaluator::new(&module);
let counter = Cell::new(0);
let before_stmt = |_span: FileSpanRef, _eval: &mut Evaluator<'_, '_>| {
counter.set(counter.get() + 1);
};
evaluator.before_stmt(&before_stmt);
let program = "\
x = 1 # 0
def f(): # 1
return x + 1 # 3
f() # 2
";
let ast = AstModule::parse("a.star", program.to_owned(), &Dialect::Extended).unwrap();
evaluator.eval_module(ast, &globals).unwrap();
assert_eq!(4, counter.get());
}