cranpose-services 0.1.161

Multiplatform system services for Cranpose (HTTP, URI, and OS integrations)
Documentation
use std::sync::atomic::{AtomicBool, Ordering};

use super::*;

#[test]
fn registration_round_trips() {
    let _services = crate::registry::test_service_guard();
    clear_platform_background_activity();
    struct Rec(AtomicBool);
    impl BackgroundActivity for Rec {
        fn set_active(&self, active: bool) {
            self.0.store(active, Ordering::SeqCst);
        }
    }
    let rec = Arc::new(Rec(AtomicBool::new(false)));
    set_platform_background_activity(rec.clone());
    let first = acquire_background_work();
    assert!(rec.0.load(Ordering::SeqCst));
    assert!(background_active());
    let second = acquire_background_work();
    drop(first);
    assert!(background_active());
    assert!(rec.0.load(Ordering::SeqCst));
    drop(second);
    assert!(!background_active());
    assert!(!rec.0.load(Ordering::SeqCst));
    clear_platform_background_activity();
}