use std::sync::atomic::Ordering;
use crate::base_types::{
TgqeCoordinate, TgqeCtx, TgqeErrorInfo,
TgqePosition, TgqeSpan,
};
use crate::channel::bus::TgqeBus;
use crate::enums::TgqeLevelFilter;
use crate::singletons::ERROR_COUNTER;
fn sample_ctx() -> TgqeCtx {
let coord = TgqeCoordinate::new(
"test.rs", 1, 0, 0,
);
let span = TgqeSpan::new(
coord.clone(),
coord.clone(),
);
TgqeCtx::new(
TgqePosition::new(coord, span),
TgqeErrorInfo::new(
"test",
"expected x",
"got y",
TgqeLevelFilter::Error,
),
"hints",
"labels",
"winnow",
0,
)
}
#[tokio::test]
async fn report_moves_ctxs_and_increments_counter()
{
let mut bus = TgqeBus::new();
let before = ERROR_COUNTER
.load(Ordering::Relaxed);
let mut ctxs =
vec![sample_ctx(), sample_ctx()];
bus.report(&mut ctxs).await;
assert!(ctxs.is_empty());
assert_eq!(
ERROR_COUNTER
.load(Ordering::Relaxed),
before + 2
);
}