use super::*;
use crate::decoding::flat_buf::FlatBuf;
#[test]
fn default_try_extend_from_within_happy_path_copies_from_live_region() {
let mut b = FlatBuf::with_capacity(32);
b.extend(&[1u8, 2, 3, 4, 5]);
assert_eq!(b.len(), 5);
b.try_extend_from_within(0, 3).expect("happy path");
assert_eq!(b.len(), 8);
let (s, t) = b.as_slices();
assert_eq!(s, &[1u8, 2, 3, 4, 5, 1, 2, 3]);
assert!(t.is_empty(), "FlatBuf does not wrap");
}
#[test]
fn default_try_extend_from_within_arithmetic_overflow_returns_err() {
let mut b = FlatBuf::with_capacity(32);
b.extend(&[1u8, 2, 3, 4]);
let live_before = b.len();
let err = b
.try_extend_from_within(usize::MAX, 1)
.expect_err("usize wrap must Err");
assert_eq!(err.requested, 1);
assert_eq!(b.len(), live_before, "backend untouched on Err");
}
#[test]
fn default_try_extend_from_within_source_past_live_region_returns_err() {
let mut b = FlatBuf::with_capacity(32);
b.extend(&[10u8, 20, 30]);
let err = b
.try_extend_from_within(2, 10)
.expect_err("start+len past live region must Err");
assert_eq!(err.requested, 10);
assert_eq!(b.len(), 3, "backend untouched on Err");
}
#[test]
fn backend_overflow_display_renders_diagnostic_fields() {
let err = BackendOverflow {
tail: 5,
requested: 7,
capacity: 10,
};
let rendered = alloc::format!("{}", err);
assert!(rendered.contains("tail=5"), "tail field rendered");
assert!(rendered.contains("requested=7"), "requested field rendered");
assert!(rendered.contains("capacity=10"), "capacity field rendered");
}