use super::QDataStream;
#[test]
fn test_read_u32() {
let data = [0x12, 0x34, 0x56, 0x78];
let mut stream = QDataStream::new(&data);
assert_eq!(stream.read_u32().unwrap(), 0x12345678);
}
#[test]
fn test_read_i32() {
let data = [0xFF, 0xFF, 0xFF, 0xFE]; let mut stream = QDataStream::new(&data);
assert_eq!(stream.read_i32().unwrap(), -2);
}
#[test]
fn test_read_qbytearray() {
let data = [0x00, 0x00, 0x00, 0x04, 0x01, 0x02, 0x03, 0x04];
let mut stream = QDataStream::new(&data);
assert_eq!(stream.read_qbytearray().unwrap(), vec![0x01, 0x02, 0x03, 0x04]);
}
#[test]
fn test_read_null_qbytearray() {
let data = [0xFF, 0xFF, 0xFF, 0xFF];
let mut stream = QDataStream::new(&data);
assert!(stream.read_qbytearray().unwrap().is_empty());
}
#[test]
fn test_read_qstring() {
let data = [0x00, 0x00, 0x00, 0x04, 0x00, 0x48, 0x00, 0x69];
let mut stream = QDataStream::new(&data);
assert_eq!(stream.read_qstring().unwrap(), "Hi");
}
#[test]
fn test_read_null_qstring() {
let data = [0xFF, 0xFF, 0xFF, 0xFF];
let mut stream = QDataStream::new(&data);
assert!(stream.read_qstring().unwrap().is_empty());
}
#[test]
fn test_position_and_remaining() {
let data = [0x01, 0x02, 0x03, 0x04, 0x05];
let mut stream = QDataStream::new(&data);
assert_eq!(stream.position(), 0);
assert_eq!(stream.remaining(), 5);
stream.read_u8().unwrap();
assert_eq!(stream.position(), 1);
assert_eq!(stream.remaining(), 4);
stream.skip(2).unwrap();
assert_eq!(stream.position(), 3);
assert_eq!(stream.remaining(), 2);
}
#[test]
fn test_at_end() {
let data = [0x01, 0x02];
let mut stream = QDataStream::new(&data);
assert!(!stream.at_end());
stream.read_u16().unwrap();
assert!(stream.at_end());
}