Devirtualize ITracker::parent

This commit is contained in:
Martin Hořeňovský 2021-06-09 22:09:00 +02:00
parent a14d67cace
commit c064322a9d
No known key found for this signature in database
GPG Key ID: DE48307B8B0D381A
2 changed files with 9 additions and 15 deletions

View File

@ -84,9 +84,8 @@ namespace TestCaseTracking {
TrackerBase::TrackerBase( NameAndLocation const& nameAndLocation, TrackerContext& ctx, ITracker* parent ):
ITracker(nameAndLocation),
m_ctx( ctx ),
m_parent( parent )
ITracker(nameAndLocation, parent),
m_ctx( ctx )
{}
bool TrackerBase::isComplete() const {
@ -99,11 +98,6 @@ namespace TestCaseTracking {
return m_runState != NotStarted && !isComplete();
}
ITracker* TrackerBase::parent() {
assert( m_parent ); // Should always be non-null except for root
return m_parent;
}
void TrackerBase::openChild() {
if( m_runState != ExecutingChildren ) {
m_runState = ExecutingChildren;

View File

@ -38,11 +38,13 @@ namespace TestCaseTracking {
using Children = std::vector<ITrackerPtr>;
protected:
ITracker* m_parent = nullptr;
Children m_children;
public:
ITracker(NameAndLocation const& nameAndLoc) :
m_nameAndLocation(nameAndLoc)
ITracker( NameAndLocation const& nameAndLoc, ITracker* parent ):
m_nameAndLocation( nameAndLoc ),
m_parent( parent )
{}
@ -50,6 +52,9 @@ namespace TestCaseTracking {
NameAndLocation const& nameAndLocation() const {
return m_nameAndLocation;
}
ITracker* parent() const {
return m_parent;
}
virtual ~ITracker(); // = default
@ -60,8 +65,6 @@ namespace TestCaseTracking {
virtual bool isOpen() const = 0; // Started but not complete
virtual bool hasStarted() const = 0;
virtual ITracker* parent() = 0;
// actions
virtual void close() = 0; // Successfully complete
virtual void fail() = 0;
@ -125,7 +128,6 @@ namespace TestCaseTracking {
};
TrackerContext& m_ctx;
ITracker* m_parent;
CycleState m_runState = NotStarted;
public:
@ -138,8 +140,6 @@ namespace TestCaseTracking {
return m_runState != NotStarted;
}
ITracker* parent() override;
void openChild() override;
bool isSectionTracker() const override;