use std::time::Duration;
use integra8_components::{
BookEnd, ComponentDescription, ComponentId, ComponentLocation, ConcurrencyMode, Delegate,
SuiteAttributes, TestParameters,
};
#[derive(Clone, Debug, PartialEq, Eq, Hash)]
pub struct BookEndAttributesDecoration {
pub name: Option<&'static str>,
pub description: Option<&'static str>,
pub location: ComponentLocation,
pub ignore: Option<bool>,
pub time_limit: Option<Duration>,
pub concurrency_mode: Option<ConcurrencyMode>,
}
#[derive(Clone, Debug)]
pub struct BookEndDecoration<TParameters> {
pub desc: BookEndAttributesDecoration,
pub bookend_fn: Delegate<TParameters>,
}
impl<TParameters: TestParameters> BookEndDecoration<TParameters> {
pub fn into_setup_component(
self,
id: ComponentId,
parent_suite_description: &ComponentDescription,
parent_suite_attributes: &SuiteAttributes,
) -> BookEnd<TParameters> {
BookEnd::new_setup(
parent_suite_description,
parent_suite_attributes,
id,
self.desc.name,
self.desc.description,
self.desc.location,
self.desc.ignore,
self.desc.time_limit,
self.desc.concurrency_mode,
self.bookend_fn,
)
}
pub fn into_tear_down_component(
self,
id: ComponentId,
parent_suite_description: &ComponentDescription,
parent_suite_attributes: &SuiteAttributes,
) -> BookEnd<TParameters> {
BookEnd::new_tear_down(
parent_suite_description,
parent_suite_attributes,
id,
self.desc.name,
self.desc.description,
self.desc.location,
self.desc.ignore,
self.desc.time_limit,
self.desc.concurrency_mode,
self.bookend_fn,
)
}
}