nar_dev_utils::mod_and_pub_use! {
translators
launcher
}
#[cfg(test)]
mod tests {
#![allow(unused)]
use super::*;
use crate::runtimes::{
tests::{await_fetch_until, input_cmd_and_await_contains, test_simple_answer},
CommandVmRuntime,
};
use narsese::lexical_nse_task as nse_task;
use navm::{
cmd::Cmd,
vm::{VmLauncher, VmRuntime},
};
const CXIN_NARS_JS_PATH: &str = r"..\cxin-nars-py-to-ts\src\cxin-nars-shell.js";
fn launch_vm() -> CommandVmRuntime {
let js_path = CXIN_NARS_JS_PATH;
CXinJS::new(js_path).launch().expect("无法启动虚拟机")
}
#[test]
fn test() {
let vm = launch_vm();
_test_cxin_js(vm)
}
pub fn _test_cxin_js(mut vm: CommandVmRuntime) {
let mut input_cmd_and_await =
|cmd, contains| input_cmd_and_await_contains(&mut vm, cmd, contains);
input_cmd_and_await(Cmd::NSE(nse_task!(<A --> B>.)), "<A-->B>.");
input_cmd_and_await(Cmd::NSE(nse_task!(<B --> C>.)), "<B-->C>.");
input_cmd_and_await(Cmd::NSE(nse_task!(<A --> C>?)), "<A-->C>?");
input_cmd_and_await(Cmd::CYC(20), "");
await_fetch_until(&mut vm, |_o, raw_content| {
raw_content.contains("<A-->C>.")
});
vm.terminate().expect("无法终止虚拟机");
println!("Virtual machine terminated...");
}
#[test]
fn test_universal() {
}
}