mod model;
pub use model::*;
#[cfg(test)]
mod tests {
use super::*;
use heapless::Vec;
#[test]
fn test_add_read_sub_request() {
let mut sub_req = SubRequest::new();
let res = sub_req.add_read_sub_request(1, 2, 5);
assert!(res.is_ok());
assert_eq!(sub_req.byte_count(), 7);
}
#[test]
fn test_add_write_sub_request() {
let mut sub_req = SubRequest::new();
let mut data = Vec::<u16, 252>::new();
data.push(0x1234).unwrap();
data.push(0x5678).unwrap();
let res = sub_req.add_write_sub_request(1, 0, 2, data);
assert!(res.is_ok());
assert_eq!(sub_req.byte_count(), 11);
}
#[test]
fn test_pdu_overflow_protection() {
let mut sub_req = SubRequest::new();
let res = sub_req.add_read_sub_request(1, 0, 120);
assert!(res.is_ok());
let res_overflow = sub_req.add_read_sub_request(1, 120, 10);
assert!(res_overflow.is_err());
}
#[test]
fn test_to_sub_req_pdu_bytes() {
let mut sub_req = SubRequest::new();
sub_req
.add_read_sub_request(0x0001, 0x0002, 0x0003)
.unwrap();
let bytes = sub_req.to_sub_req_pdu_bytes().unwrap();
let expected = [0x07, 0x06, 0x00, 0x01, 0x00, 0x02, 0x00, 0x03];
assert_eq!(bytes.as_slice(), &expected);
}
#[test]
fn test_clear_sub_requests() {
let mut sub_req = SubRequest::new();
sub_req.add_read_sub_request(1, 1, 1).unwrap();
assert_eq!(sub_req.byte_count(), 7);
sub_req.clear_all();
assert_eq!(sub_req.byte_count(), 0);
}
}