35 struct RunnerOrdinary::Impl {
39 CommandStack command_stack;
40 SemanticStack semantic_stack;
41 ObjectPath object_path;
46 const Impl&) =
delete;
48 const Impl&) =
delete;
52 TimeSource* time_source_,
53 ExcCatcher* exc_catcher_,
55 TestMarkFactory* test_mark_factory_,
56 TestMarkStorage* test_mark_storage_,
62 RunnerOrdinary::Impl::Impl(
63 RunnerOrdinary* owner_,
64 TimeSource* time_source_,
65 ExcCatcher* exc_catcher_,
67 TestMarkFactory* test_mark_factory_,
68 TestMarkStorage* test_mark_storage_,
85 assert(context.reporter !=
nullptr);
86 assert(context.exception_catcher !=
nullptr);
89 semantic_stack.push(
true);
92 command_stack.pushCommand(std::make_shared<CmdNextObject>(test_scenario_,
nullptr));
95 RunnerOrdinary::Impl::~Impl() {
124 bool first_command_(
true);
125 while(!pimpl->command_stack.empty()) {
126 CommandPtr cmd_(pimpl->command_stack.topCommand());
130 if(!first_command_ && cmd_->shouldWait(pimpl->context, delay_)) {
136 first_command_ =
false;
137 pimpl->command_stack.popCommand();
138 cmd_->run(pimpl->context);
143 assert(pimpl->semantic_stack.isFinished());
146 return RunnerResult(
false, pimpl->semantic_stack.top(), -1);