ncp-engine 0.2.1

High performance fuzzy matcher engine
Documentation
use std::sync::Arc;
use std::{rc::Rc, sync::MutexGuard};

use ncp_matcher::Config;

use crate::Nucleo;

#[test]
fn nucleo_type_does_not_require_thread_safe_items() {
    fn accepts_non_send(_: Option<Nucleo<Rc<()>>>) {}
    fn accepts_non_static<'a>(_: Option<Nucleo<MutexGuard<'a, ()>>>) {}

    accepts_non_send(None);
    accepts_non_static(None);
}

#[test]
fn active_injector_count() {
    let mut nucleo: Nucleo<()> = Nucleo::new(Config::DEFAULT, Arc::new(|| ()), Some(1), 1);
    assert_eq!(nucleo.active_injectors(), 0);
    let injector = nucleo.injector();
    assert_eq!(nucleo.active_injectors(), 1);
    let injector2 = nucleo.injector();
    assert_eq!(nucleo.active_injectors(), 2);
    drop(injector2);
    assert_eq!(nucleo.active_injectors(), 1);
    nucleo.restart(false);
    assert_eq!(nucleo.active_injectors(), 0);
    let injector3 = nucleo.injector();
    assert_eq!(nucleo.active_injectors(), 1);
    nucleo.tick(0);
    assert_eq!(nucleo.active_injectors(), 1);
    drop(injector);
    assert_eq!(nucleo.active_injectors(), 1);
    drop(injector3);
    assert_eq!(nucleo.active_injectors(), 0);
}