use wireframe_testing::TestResult;
use super::{DerivedMemoryBudgetsWorld, SPIN_ATTEMPTS};
impl DerivedMemoryBudgetsWorld {
pub fn assert_connection_aborted(&mut self) -> TestResult {
self.spin_runtime()?;
self.drain_ready_payloads()?;
match self.join_server()? {
Ok(()) => Err("expected connection to abort, but it completed successfully".into()),
Err(error) => {
self.connection_error = Some(error.to_string());
Ok(())
}
}
}
pub fn assert_payload_received(&mut self, expected: &str) -> TestResult {
let expected = expected.as_bytes();
for _ in 0..SPIN_ATTEMPTS {
self.drain_ready_payloads()?;
if self
.observed_payloads
.iter()
.any(|payload| payload.as_slice() == expected)
{
return Ok(());
}
self.block_on(async { tokio::task::yield_now().await })?;
}
Err(format!(
"expected payload {:?} not observed; observed={:?}",
expected, self.observed_payloads
)
.into())
}
pub fn assert_no_connection_error(&mut self) -> TestResult {
if let Some(ref error) = self.connection_error {
return Err(format!("unexpected connection error: {error}").into());
}
self.client.take();
match self.join_server()? {
Ok(()) => Ok(()),
Err(error) => Err(format!("server task returned error: {error}").into()),
}
}
}