hirofa_quickjs_sys/
lib.rs1#![allow(improper_ctypes)]
2#![allow(non_upper_case_globals)]
8#![allow(non_camel_case_types)]
9#![allow(non_snake_case)]
10
11include!(concat!(env!("OUT_DIR"), "/bindings.rs"));
12
13include!("static-functions.rs");
16
17#[cfg(test)]
18mod tests {
19 use std::ffi::CStr;
20
21 use super::*;
22
23 #[test]
25 fn test_eval() {
26 unsafe {
27 let rt = JS_NewRuntime();
28 let ctx = JS_NewContext(rt);
29
30 let code_str = "1 + 1\0";
31 let code = CStr::from_bytes_with_nul(code_str.as_bytes()).unwrap();
32 let script = CStr::from_bytes_with_nul("script\0".as_bytes()).unwrap();
33
34 let value = JS_Eval(
35 ctx,
36 code.as_ptr(),
37 (code_str.len() - 1) as usize,
38 script.as_ptr(),
39 JS_EVAL_TYPE_GLOBAL as i32,
40 );
41 assert_eq!(value.tag, 0);
42 assert_eq!(value.u.int32, 2);
43
44 JS_DupValue(ctx, value);
45 JS_FreeValue(ctx, value);
46
47 let ival = JS_NewInt32(ctx, 12);
48 assert_eq!(ival.tag, 0);
49 let bval = JS_NewBool(ctx, true);
52 assert_eq!(bval.tag, 1);
53 }
54 }
55}