use rs_matter::im::GenericPath;
use rs_matter::im::IMStatusCode;
use crate::attr_data_req;
use crate::attr_data_req_lel;
use crate::attr_status;
use crate::attr_status_lel;
use crate::common::e2e::im::attributes::write_reqs;
use crate::common::e2e::im::echo_cluster::{self, TestChecker};
use crate::common::init_env_logger;
#[test]
fn attr_list_ops() {
let tc_handle = TestChecker::get().unwrap();
init_env_logger();
let replace_all: &[u16] = &[1, 2];
let delete_all: &[u16] = &[];
let path = GenericPath::new(
Some(0),
Some(echo_cluster::ID),
Some(echo_cluster::AttributesDiscriminants::AttWriteList as u32),
);
let input = &[attr_data_req!(&path, Some(&replace_all))];
let expected = &[attr_status!(&path, IMStatusCode::Success)];
write_reqs(input, expected);
{
let tc = tc_handle.lock().unwrap();
assert_eq!(replace_all, tc.write_list.as_slice());
}
let input = &[
attr_data_req!(&path, Some(&delete_all)),
attr_data_req_lel!(&path, Some(&3_u16)),
attr_data_req_lel!(&path, Some(&4_u16)),
attr_data_req_lel!(&path, Some(&5_u16)),
];
let expected = &[
attr_status!(&path, IMStatusCode::Success),
attr_status_lel!(&path, IMStatusCode::Success),
attr_status_lel!(&path, IMStatusCode::Success),
attr_status_lel!(&path, IMStatusCode::Success),
];
write_reqs(input, expected);
{
let tc = tc_handle.lock().unwrap();
assert_eq!(&[3, 4, 5], tc.write_list.as_slice());
}
let input = &[attr_data_req!(&path, Some(&delete_all))];
let expected = &[attr_status!(&path, IMStatusCode::Success)];
write_reqs(input, expected);
{
let tc = tc_handle.lock().unwrap();
assert!(tc.write_list.is_empty());
}
}