use crate as wrapped_mono;
use wrapped_mono::*;
use crate::profiler::Profiler;
use rusty_fork::rusty_fork_test;
use std::sync::Arc;
macro_rules! profiler_test{
($tname:ident)=>{
rusty_fork_test! {
#[test]
fn $tname (){
let mut i:u32 = 0;
let mut init_lisener = Profiler::create(i);
fn callback(prof:&mut Profiler<u32>){
let ls:&mut u32 = (prof.get_internal_data());
(*ls) += 1;
}
init_lisener.$tname(callback);
let dom = jit::init("root",None);
jit::cleanup(dom);
assert!(*init_lisener.get_internal_data() == 1);
}
}
};
($tname:ident,$rtime_code:block,$tpe:tt)=>{
rusty_fork_test! {
#[test]
fn $tname (){
let mut i:u32 = 0;
let mut init_lisener = Profiler::create(i);
fn callback(prof:&mut Profiler<u32>,_:$tpe){
let ls:&mut u32 = (prof.get_internal_data());
(*ls) += 1;
}
init_lisener.$tname(callback);
let dom = jit::init("root",None);
$rtime_code
jit::cleanup(dom);
assert!(*init_lisener.get_internal_data() == 1);
}
}
}
}
profiler_test!{add_runtime_initialized_callback}
profiler_test!{add_runtime_shutown_begin_callback}
profiler_test!{add_runtime_shutown_end_callback}
profiler_test!{add_context_loaded}
profiler_test!{add_context_unloaded}
profiler_test!{add_domain_loading,{},(&mut Domain)}
profiler_test!{add_domain_loaded,{},(&mut Domain)}