use std::collections::HashMap;
use serde::{Deserialize, Serialize};
use super::macros::impl_serialize_as_empty_map;
#[derive(Clone, Debug, Serialize, Eq, PartialEq)]
pub struct GroupData<'a> {
pub name: &'a str,
}
#[derive(Clone, Debug, Deserialize, Eq, PartialEq)]
pub struct GroupDataResponse {
pub name: String,
pub fields: HashMap<String, u64>,
}
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct ListGroups;
impl_serialize_as_empty_map!(ListGroups);
#[derive(Clone, Debug, Deserialize, Eq, PartialEq)]
pub struct ListGroupsResponse {
pub stat_list: Vec<String>,
}
#[cfg(test)]
mod tests {
use super::super::macros::command_encode_decode_test;
use super::*;
use ciborium::cbor;
command_encode_decode_test! {
group_data,
(0, 2, 0),
GroupData{name: "foo"},
cbor!({"name" => "foo"}),
cbor!({
"name" => "bar",
"fields" => {
"abc" => 10,
"foo50" => 0xFFFFFFFFFFFFFFFFu64,
}
}),
GroupDataResponse{
name: "bar".to_string(),
fields: HashMap::from([
("abc".to_string(), 10),
("foo50".to_string(), u64::MAX),
])
},
}
command_encode_decode_test! {
list_groups,
(0, 2, 1),
ListGroups,
cbor!({}),
cbor!({"stat_list" => ["foo", "bar"]}),
ListGroupsResponse{ stat_list: vec!["foo".to_string(), "bar".to_string()] },
}
}