#[cfg(feature = "test")]
mod tests {
use crate::{
api::config::Config,
net::runtime::{Runtime, RuntimeBuilder},
};
async fn create_runtime() -> Runtime {
let config = Config::default();
RuntimeBuilder::new(config).build().await.unwrap()
}
#[tokio::test]
async fn test_state_weak_alive_with_runtime() {
let runtime = create_runtime().await;
let weak = runtime.state_weak();
assert!(weak.upgrade().is_some());
}
#[tokio::test]
async fn test_state_weak_dead_after_drop() {
let runtime = create_runtime().await;
let weak = runtime.state_weak();
drop(runtime); assert!(weak.upgrade().is_none());
}
#[cfg(feature = "internal")]
#[cfg(feature = "unstable")]
#[tokio::test]
async fn test_state_weak_still_alive_after_close() {
let runtime = create_runtime().await;
let weak = runtime.state_weak();
runtime.close().await.unwrap(); assert!(weak.upgrade().is_some());
}
#[cfg(feature = "internal")]
#[cfg(feature = "unstable")]
#[tokio::test]
async fn test_state_weak_dead_after_close_and_drop() {
let runtime = create_runtime().await;
let weak = runtime.state_weak();
runtime.close().await.unwrap(); drop(runtime); assert!(weak.upgrade().is_none());
}
}