MCPcopy Create free account
hub / github.com/FidoProject/Fido / TrackerBase

Class TrackerBase

tests/catch.h:5535–5660  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5533 };
5534
5535 class TrackerBase : public ITracker {
5536 protected:
5537 enum CycleState {
5538 NotStarted,
5539 Executing,
5540 ExecutingChildren,
5541 NeedsAnotherRun,
5542 CompletedSuccessfully,
5543 Failed
5544 };
5545 class TrackerHasName {
5546 std::string m_name;
5547 public:
5548 TrackerHasName( std::string const& name ) : m_name( name ) {}
5549 bool operator ()( Ptr<ITracker> const& tracker ) {
5550 return tracker->name() == m_name;
5551 }
5552 };
5553 typedef std::vector<Ptr<ITracker> > Children;
5554 std::string m_name;
5555 TrackerContext& m_ctx;
5556 ITracker* m_parent;
5557 Children m_children;
5558 CycleState m_runState;
5559 public:
5560 TrackerBase( std::string const& name, TrackerContext& ctx, ITracker* parent )
5561 : m_name( name ),
5562 m_ctx( ctx ),
5563 m_parent( parent ),
5564 m_runState( NotStarted )
5565 {}
5566 virtual ~TrackerBase();
5567
5568 virtual std::string name() const CATCH_OVERRIDE {
5569 return m_name;
5570 }
5571 virtual bool isComplete() const CATCH_OVERRIDE {
5572 return m_runState == CompletedSuccessfully || m_runState == Failed;
5573 }
5574 virtual bool isSuccessfullyCompleted() const CATCH_OVERRIDE {
5575 return m_runState == CompletedSuccessfully;
5576 }
5577 virtual bool isOpen() const CATCH_OVERRIDE {
5578 return m_runState != NotStarted && !isComplete();
5579 }
5580 virtual bool hasChildren() const CATCH_OVERRIDE {
5581 return !m_children.empty();
5582 }
5583
5584 virtual void addChild( Ptr<ITracker> const& child ) CATCH_OVERRIDE {
5585 m_children.push_back( child );
5586 }
5587
5588 virtual ITracker* findChild( std::string const& name ) CATCH_OVERRIDE {
5589 Children::const_iterator it = std::find_if( m_children.begin(), m_children.end(), TrackerHasName( name ) );
5590 return( it != m_children.end() )
5591 ? it->get()
5592 : CATCH_NULL;

Callers

nothing calls this directly

Calls 4

emptyMethod · 0.80
isCompleteMethod · 0.80
completeCycleMethod · 0.80

Tested by

no test coverage detected