use udled::{Buffer, Input};
#[test]
fn string_buffer_basic() {
let input = Input::new("abc");
let buf = input.buffer();
assert_eq!(buf.len(), 3);
assert_eq!(buf.source(), "abc");
assert_eq!(buf.get(0).unwrap().item, 'a');
assert_eq!(buf.get(0).unwrap().index, 0);
assert_eq!(buf.get(0).unwrap().len, 1);
assert_eq!(buf.get(2).unwrap().item, 'c');
assert!(buf.get(3).is_none());
}
#[test]
fn string_buffer_multibyte() {
let input = Input::new("aé🦀");
let buf = input.buffer();
assert_eq!(buf.len(), 3);
let a = buf.get(0).unwrap();
assert_eq!(a.item, 'a');
assert_eq!(a.index, 0);
assert_eq!(a.len, 1);
let e = buf.get(1).unwrap();
assert_eq!(e.item, 'é');
assert_eq!(e.index, 1);
assert_eq!(e.len, 2);
let crab = buf.get(2).unwrap();
assert_eq!(crab.item, '🦀');
assert_eq!(crab.index, 3);
assert_eq!(crab.len, 4);
}
#[test]
fn byte_buffer_basic() {
let bytes: &[u8] = &[0x00, 0xFF, 0x42];
let input = Input::new(bytes);
let buf = input.buffer();
assert_eq!(buf.len(), 3);
assert_eq!(buf.source(), bytes);
assert_eq!(buf.get(0).unwrap().item, 0x00);
assert_eq!(buf.get(1).unwrap().item, 0xFF);
assert_eq!(buf.get(2).unwrap().item, 0x42);
assert!(buf.get(3).is_none());
}