pipeline_script/plugin/test.rs
1// use std::collections::HashMap;
2// use std::sync::{Arc, RwLock};
3// use crate::types::{Dynamic, Struct};
4// use crate::engine::Engine;
5// use crate::module::{Class, Function, Module, VariableDeclaration};
6// use crate::plugin::Plugin;
7// use crate::types::Value;
8//
9// pub struct TestPlugin;
10//
11// impl Plugin for TestPlugin{
12// fn apply(e: &mut Engine) {
13// let mut test = Module::new("test");
14// let mut expect_class = Class::new("Expect",vec![VariableDeclaration::new("value".into(),"Any".into())]);
15// expect_class.register_method("toBe".into(),Function::Native(Arc::new(|ctx,args|{
16// return Ok(().into())
17// })));
18// test.register_class(expect_class);
19// test.register_pipe_function("test",|ctx,args|{
20// let test_name =args.get(0).unwrap().as_string().unwrap();
21// let mut closure = args.get(1).unwrap().as_dynamic().as_fn_ptr().unwrap();
22// closure.call(ctx).unwrap();
23//
24// return Ok(().into())
25// });
26// test.register_pipe_function("expect",|_,args|{
27// let value = args.into_iter().next().unwrap();
28// let mut props = HashMap::new();
29// props.insert("value".into(),value);
30// let s = Struct::new("Expect".into(),props);
31// return Ok(Value::Mutable(Arc::new(RwLock::new(Dynamic::Struct(Box::new(s))))))
32// });
33// e.register_module(test);
34// }
35// }