use crate::nan_value::Arena;
pub const TYPE_NAME: &str = "EffectEvent";
pub const FIELD_METHOD: &str = "method";
pub const FIELD_ARGS: &str = "args";
pub const FIELD_PATH: &str = "path";
pub fn register(arena: &mut Arena) {
arena.register_record_type(
TYPE_NAME,
vec![FIELD_METHOD.into(), FIELD_ARGS.into(), FIELD_PATH.into()],
);
}
#[cfg(test)]
mod tests {
use super::*;
use crate::nan_value::Arena;
#[test]
fn registers_type_with_expected_fields() {
let mut arena = Arena::new();
register(&mut arena);
let type_id = arena
.find_type_id(TYPE_NAME)
.expect("EffectEvent must register");
let method = crate::nan_value::NanValue::new_string_value("Console.print", &mut arena);
let args = crate::nan_value::NanValue::new_string_value("[]", &mut arena);
let idx = arena.push_record(type_id, vec![method, args]);
let nv = crate::nan_value::NanValue::new_record(idx);
let (tid, fields) = arena.get_record(nv.arena_index());
assert_eq!(tid, type_id);
assert_eq!(fields.len(), 2);
}
}