use cano::Resource;
#[derive(cano_macros::Resource)]
struct Empty;
#[derive(cano_macros::Resource)]
struct Cfg {
#[allow(dead_code)]
x: u32,
#[allow(dead_code)]
name: String,
}
#[derive(cano_macros::Resource)]
struct Cell<T: Send + Sync + 'static> {
#[allow(dead_code)]
v: T,
}
fn assert_resource<R: Resource>() {}
#[test]
fn empty_implements_resource() {
assert_resource::<Empty>();
}
#[test]
fn cfg_implements_resource() {
assert_resource::<Cfg>();
}
#[test]
fn cell_implements_resource() {
assert_resource::<Cell<u32>>();
assert_resource::<Cell<String>>();
}
#[tokio::test]
async fn resource_setup_teardown_are_noop() {
let e = Empty;
e.setup().await.expect("Empty setup should succeed");
e.teardown().await.expect("Empty teardown should succeed");
}
#[tokio::test]
async fn cfg_resource_lifecycle() {
let cfg = Cfg {
x: 42,
name: "test".to_string(),
};
cfg.setup().await.expect("Cfg setup should succeed");
cfg.teardown().await.expect("Cfg teardown should succeed");
}