#[cfg(test)]
#[allow(unused)]
mod tests {
use pixelscript::{create_raw_string, free_raw_string, pxs_addmod, pxs_exec, pxs_finalize, pxs_initialize, pxs_newexception, pxs_newmod, shared::{module::pxs_Module, pxs_Runtime, utils, var::pxs_VarT}
};
extern "C" fn call(args: pxs_VarT) -> pxs_VarT {
let msg = create_raw_string!("You no good dayo!!");
let res = pxs_newexception(msg);
unsafe {
free_raw_string!(msg)
};
res
}
fn setup() {
let module = utils::create_module("test_raise");
utils::add_function(module, "call", call);
pxs_addmod(module);
}
fn test_python() {
let py_script = r#"
import pxs
import test_raise
test_raise.call()
raise Exception("We should not get here")
"#;
let res = utils::execute_code(py_script, "<test>", pxs_Runtime::pxs_Python);
assert!(res.is_exception(), "Res is not exeception: {:#?}", res);
println!("Res: {:#?}", res);
}
fn test_lua() {
let lua_script = r#"
local pxs = require('pxs')
local test_raise = require('test_raise')
test_raise.call()
error('we should not get here')
"#;
let res = utils::execute_code(lua_script, "<test>", pxs_Runtime::pxs_Lua);
assert!(res.is_exception(), "Res is not exeception: {:#?}", res);
println!("Res: {:#?}", res);
}
#[test]
fn run_test() {
pxs_initialize();
utils::setup_pxs();
setup();
test_python();
println!("=============== Changing languages =============");
test_lua();
pxs_finalize();
}
}