#[derive(Debug, Default)]
#[cfg_attr(feature = "derive", derive(darling::FromMeta))]
#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
pub struct TestArguments {
#[cfg_attr(feature = "serde", serde(default, skip_serializing_if = "Option::is_none"))]
pub module: Option<String>,
#[cfg_attr(feature = "serde", serde(default, skip_serializing_if = "Option::is_none"))]
pub group: Option<String>,
#[cfg_attr(feature = "serde", serde(default, skip_serializing_if = "Option::is_none"))]
pub cost: Option<u32>,
#[cfg_attr(feature = "serde", serde(default, skip_serializing_if = "Option::is_none"))]
pub responsible: Option<String>,
#[cfg_attr(feature = "derive", darling(default))]
#[cfg_attr(feature = "serde", serde(default, skip_serializing_if = "std::ops::Not::not"))]
pub optional: bool,
}
#[cfg(feature = "derive")]
impl quote::ToTokens for TestArguments {
fn to_tokens(&self, tokens: &mut proc_macro2::TokenStream) {
use quote::quote;
let module = match self.module.clone() {
Some(val) => quote!(Some( #val.to_string() )),
None => quote!(None),
};
let group = match self.group.clone() {
Some(val) => quote!(Some( #val.to_string() )),
None => quote!(None),
};
let cost = match self.cost {
Some(val) => quote!(Some( #val )),
None => quote!(None),
};
let responsible = match self.responsible.clone() {
Some(val) => quote!(Some( #val.to_string() )),
None => quote!(None),
};
let optional = self.optional;
let optional = quote!( #optional );
tokens.extend(quote!(TestArguments{
module: #module,
group: #group,
cost: #cost,
responsible: #responsible,
optional: #optional,
}));
}
}