40 struct ScenarioSuite::Impl {
44 typedef std::vector<ScenarioPtr> Children;
49 const Impl&) =
delete;
51 const Impl&) =
delete;
54 const std::string& name_,
60 ScenarioSuite::Impl::Impl(
61 const std::string& name_,
66 repeater_factory(repeater_factory_),
68 assert(!name_.empty() && repeater_factory !=
nullptr);
72 ScenarioSuite::Impl::~Impl() {
77 const std::string& name_,
80 pimpl(new Impl(name_, tags_, repeater_factory_)) {
93 tags_.
pushTags(pimpl->name, pimpl->tags);
97 pimpl->name, pimpl->tags, pimpl->repeater_factory));
98 for(
auto iter_ : pimpl->children) {
99 iter_->filterScenario(tags_, suite_, filter_);
103 if(!suite_->isEmpty()) {
104 parent_->appendScenario(suite_);
114 const Context& context_)
const {
115 return {pimpl->name, pimpl->repeater_factory->createRepeater(context_, std::string())};
119 const Context& context_)
const noexcept {
120 context_.reporter->enterSuite(
122 context_.object_path->getCurrentName(),
123 context_.object_path->getCurrentParameters());
127 const Context& context_)
const noexcept {
128 context_.reporter->leaveSuite(
130 context_.object_path->getCurrentName(),
131 context_.object_path->getCurrentParameters(),
132 context_.semantic_stack->top());
136 return std::make_shared<ScenarioIterContainer>(pimpl->children);
141 assert(scenario_ !=
nullptr);
142 pimpl->children.push_back(scenario_);
146 return pimpl->children.empty();