Tweaks
diff --git a/projects/SelfTest/PartTrackerTests.cpp b/projects/SelfTest/PartTrackerTests.cpp
index 6323f37..19a9c80 100644
--- a/projects/SelfTest/PartTrackerTests.cpp
+++ b/projects/SelfTest/PartTrackerTests.cpp
@@ -20,29 +20,29 @@
namespace Catch
{
- struct IContainerPart;
-
struct ITrackedPart : SharedImpl<> {
virtual ~ITrackedPart() {}
+
+ // queries
virtual std::string name() const = 0;
- virtual bool isUnstarted() const = 0;
- virtual bool isCompleteOrFailed() const = 0;
- virtual bool isComplete() const = 0;
+ virtual bool hasStarted() const = 0; // true even if ended
+ virtual bool hasEnded() const = 0;
+ virtual bool didCompleteSuccessfully() const = 0;
virtual bool isOpen() const = 0;
- virtual IContainerPart& parent() = 0;
+ virtual ITrackedPart& parent() = 0;
+ // actions
virtual void close() = 0;
virtual void fail() = 0;
- };
-
- struct IContainerPart : ITrackedPart {
+
virtual void addChild( Ptr<ITrackedPart> const& child ) = 0;
virtual ITrackedPart* findChild( std::string const& name ) = 0;
virtual void openChild() = 0;
virtual void childFailed() = 0;
+
};
-
+
class TrackerContext {
@@ -52,8 +52,8 @@
CompletedCycle
};
- Ptr<IContainerPart> m_rootPartTracker;
- IContainerPart* m_currentPart;
+ Ptr<ITrackedPart> m_rootPart;
+ ITrackedPart* m_currentPart;
RunState m_runState;
public:
@@ -67,21 +67,18 @@
: m_currentPart( CATCH_NULL ),
m_runState( NotStarted )
{}
-
- int i() {
- return 42;
- }
- IContainerPart& startRun();
+
+ ITrackedPart& startRun();
void endRun() {
- m_rootPartTracker.reset();
+ m_rootPart.reset();
m_currentPart = CATCH_NULL;
m_runState = NotStarted;
}
void startCycle() {
- m_currentPart = m_rootPartTracker.get();
+ m_currentPart = m_rootPart.get();
m_runState = Executing;
}
void completeCycle() {
@@ -92,10 +89,10 @@
return m_runState == CompletedCycle;
}
- IContainerPart& currentPart() {
+ ITrackedPart& currentPart() {
return *m_currentPart;
}
- void setCurrentPart( IContainerPart* part ) {
+ void setCurrentPart( ITrackedPart* part ) {
m_currentPart = part;
}
@@ -103,12 +100,10 @@
return m_currentPart->findChild( name );
}
-
- private:
};
- class PartTracker : public IContainerPart {
+ class SectionTracker : public ITrackedPart {
enum RunState {
NotStarted,
Executing,
@@ -128,11 +123,11 @@
typedef std::vector<Ptr<ITrackedPart> > Children;
std::string m_name;
TrackerContext& m_ctx;
- IContainerPart* m_parent;
+ ITrackedPart* m_parent;
Children m_children;
RunState m_runState;
public:
- PartTracker( std::string const& name, TrackerContext& ctx, IContainerPart* parent )
+ SectionTracker( std::string const& name, TrackerContext& ctx, ITrackedPart* parent )
: m_name( name ),
m_ctx( ctx ),
m_parent( parent ),
@@ -142,14 +137,14 @@
return m_name;
}
- virtual bool isCompleteOrFailed() const CATCH_OVERRIDE {
+ virtual bool hasEnded() const CATCH_OVERRIDE {
return m_runState == CompletedSuccessfully || m_runState == Failed;
}
- virtual bool isComplete() const CATCH_OVERRIDE {
+ virtual bool didCompleteSuccessfully() const CATCH_OVERRIDE {
return m_runState == CompletedSuccessfully;
}
- virtual bool isUnstarted() const CATCH_OVERRIDE {
- return m_runState == NotStarted;
+ virtual bool hasStarted() const CATCH_OVERRIDE {
+ return m_runState != NotStarted;
}
virtual bool isOpen() const CATCH_OVERRIDE {
return m_runState == Executing || m_runState == ExecutingChildren;
@@ -167,7 +162,7 @@
? it->get()
: CATCH_NULL;
}
- virtual IContainerPart& parent() CATCH_OVERRIDE {
+ virtual ITrackedPart& parent() CATCH_OVERRIDE {
assert( m_parent ); // Should always be non-null except for root
return *m_parent;
}
@@ -226,15 +221,15 @@
}
bool hasUnstartedChildren() const {
- return !m_children.empty() && m_children.back()->isUnstarted();
+ return !m_children.empty() && !m_children.back()->hasStarted();
}
};
- IContainerPart& TrackerContext::startRun() {
- m_rootPartTracker = new PartTracker( "{root}", *this, CATCH_NULL );
+ ITrackedPart& TrackerContext::startRun() {
+ m_rootPart = new SectionTracker( "{root}", *this, CATCH_NULL );
m_currentPart = CATCH_NULL;
m_runState = Executing;
- return *m_rootPartTracker;
+ return *m_rootPart;
}
class LocalContext {
@@ -245,16 +240,16 @@
}
};
- class SectionPart : public PartTracker {
+ class SectionPart : public SectionTracker {
public:
- SectionPart( std::string const& name, TrackerContext& ctx, IContainerPart* parent )
- : PartTracker( name, ctx, parent )
+ SectionPart( std::string const& name, TrackerContext& ctx, ITrackedPart* parent )
+ : SectionTracker( name, ctx, parent )
{}
static SectionPart& acquire( TrackerContext& ctx, std::string const& name ) {
SectionPart* section = CATCH_NULL;
- IContainerPart& currentPart = ctx.currentPart();
+ ITrackedPart& currentPart = ctx.currentPart();
if( ITrackedPart* part = currentPart.findChild( name ) ) {
section = dynamic_cast<SectionPart*>( part );
assert( section );
@@ -263,7 +258,7 @@
section = new SectionPart( name, ctx, ¤tPart );
currentPart.addChild( section );
}
- if( !ctx.completedCycle() && !section->isCompleteOrFailed() ) {
+ if( !ctx.completedCycle() && !section->hasEnded() ) {
section->open();
}
return *section;
@@ -284,7 +279,7 @@
inline void testCase( Catch::LocalContext const& C_A_T_C_H_Context ) {
- REQUIRE( C_A_T_C_H_Context().i() == 42 );
+// REQUIRE( C_A_T_C_H_Context().i() == 42 );
}
TEST_CASE( "PartTracker" ) {
@@ -294,53 +289,53 @@
ctx.startCycle();
SectionPart& testCase = SectionPart::acquire( ctx, "Testcase" );
- REQUIRE( testCase.isComplete() == false );
+ REQUIRE( testCase.didCompleteSuccessfully() == false );
SectionPart& s1 = SectionPart::acquire( ctx, "S1" );
- REQUIRE( s1.isComplete() == false );
+ REQUIRE( s1.didCompleteSuccessfully() == false );
SECTION( "successfully close one section" ) {
s1.close();
- REQUIRE( s1.isComplete() == true );
- REQUIRE( testCase.isCompleteOrFailed() == false );
+ REQUIRE( s1.didCompleteSuccessfully() == true );
+ REQUIRE( testCase.hasEnded() == false );
testCase.close();
- REQUIRE( testCase.isComplete() == true );
+ REQUIRE( testCase.didCompleteSuccessfully() == true );
REQUIRE( ctx.completedCycle() == true );
}
SECTION( "fail one section" ) {
s1.fail();
- REQUIRE( s1.isComplete() == false );
- REQUIRE( s1.isCompleteOrFailed() == true );
- REQUIRE( testCase.isComplete() == false );
- REQUIRE( testCase.isCompleteOrFailed() == false );
+ REQUIRE( s1.didCompleteSuccessfully() == false );
+ REQUIRE( s1.hasEnded() == true );
+ REQUIRE( testCase.didCompleteSuccessfully() == false );
+ REQUIRE( testCase.hasEnded() == false );
testCase.close();
REQUIRE( ctx.completedCycle() == true );
- REQUIRE( testCase.isComplete() == false );
+ REQUIRE( testCase.didCompleteSuccessfully() == false );
SECTION( "re-enter after failed section" ) {
ctx.startCycle();
SectionPart& testCase2 = SectionPart::acquire( ctx, "Testcase" );
- REQUIRE( testCase2.isComplete() == false );
+ REQUIRE( testCase2.didCompleteSuccessfully() == false );
SectionPart& s1b = SectionPart::acquire( ctx, "S1" );
- REQUIRE( s1b.isComplete() == false );
+ REQUIRE( s1b.didCompleteSuccessfully() == false );
testCase2.close();
REQUIRE( ctx.completedCycle() == true );
- REQUIRE( testCase.isComplete() == true );
- REQUIRE( testCase.isCompleteOrFailed() == true );
+ REQUIRE( testCase.didCompleteSuccessfully() == true );
+ REQUIRE( testCase.hasEnded() == true );
}
SECTION( "re-enter after failed section and find next section" ) {
ctx.startCycle();
SectionPart& testCase2 = SectionPart::acquire( ctx, "Testcase" );
- REQUIRE( testCase2.isComplete() == false );
+ REQUIRE( testCase2.didCompleteSuccessfully() == false );
SectionPart& s1b = SectionPart::acquire( ctx, "S1" );
- REQUIRE( s1b.isComplete() == false );
+ REQUIRE( s1b.didCompleteSuccessfully() == false );
SectionPart& s2 = SectionPart::acquire( ctx, "S2" );
REQUIRE( s2.isOpen() );
@@ -348,8 +343,8 @@
REQUIRE( ctx.completedCycle() == true );
testCase2.close();
- REQUIRE( testCase.isComplete() == true );
- REQUIRE( testCase.isCompleteOrFailed() == true );
+ REQUIRE( testCase.didCompleteSuccessfully() == true );
+ REQUIRE( testCase.hasEnded() == true );
}
}
@@ -358,22 +353,22 @@
REQUIRE( ctx.completedCycle() == true );
SectionPart& s2 = SectionPart::acquire( ctx, "S2" );
- REQUIRE( s2.isComplete() == false );
+ REQUIRE( s2.didCompleteSuccessfully() == false );
REQUIRE( s2.isOpen() == false );
testCase.close();
- REQUIRE( testCase.isComplete() == false );
+ REQUIRE( testCase.didCompleteSuccessfully() == false );
SECTION( "Re-enter - skip S1 and enter S2" ) {
ctx.startCycle();
SectionPart& testCase2 = SectionPart::acquire( ctx, "Testcase" );
- REQUIRE( testCase2.isComplete() == false );
+ REQUIRE( testCase2.didCompleteSuccessfully() == false );
SectionPart& s1b = SectionPart::acquire( ctx, "S1" );
- REQUIRE( s1b.isComplete() == true );
+ REQUIRE( s1b.didCompleteSuccessfully() == true );
SectionPart& s2b = SectionPart::acquire( ctx, "S2" );
- REQUIRE( s2b.isComplete() == false );
+ REQUIRE( s2b.didCompleteSuccessfully() == false );
REQUIRE( s2b.isOpen() );
REQUIRE( ctx.completedCycle() == false );
@@ -382,22 +377,22 @@
s2b.close();
REQUIRE( ctx.completedCycle() == true );
- REQUIRE( s2b.isComplete() == true );
- REQUIRE( testCase2.isCompleteOrFailed() == false );
+ REQUIRE( s2b.didCompleteSuccessfully() == true );
+ REQUIRE( testCase2.hasEnded() == false );
testCase2.close();
- REQUIRE( testCase2.isComplete() == true );
+ REQUIRE( testCase2.didCompleteSuccessfully() == true );
}
SECTION ("fail S2") {
s2b.fail();
REQUIRE( ctx.completedCycle() == true );
- REQUIRE( s2b.isComplete() == false );
- REQUIRE( s2b.isCompleteOrFailed() == true );
- REQUIRE( testCase2.isCompleteOrFailed() == false );
+ REQUIRE( s2b.didCompleteSuccessfully() == false );
+ REQUIRE( s2b.hasEnded() == true );
+ REQUIRE( testCase2.hasEnded() == false );
testCase2.close();
- REQUIRE( testCase2.isComplete() == false );
+ REQUIRE( testCase2.didCompleteSuccessfully() == false );
}
}
}
@@ -407,15 +402,15 @@
REQUIRE( s2.isOpen() == true );
s2.close();
- REQUIRE( s2.isComplete() == true );
- REQUIRE( s1.isComplete() == false );
+ REQUIRE( s2.didCompleteSuccessfully() == true );
+ REQUIRE( s1.didCompleteSuccessfully() == false );
s1.close();
- REQUIRE( s1.isComplete() == true );
- REQUIRE( testCase.isComplete() == false );
+ REQUIRE( s1.didCompleteSuccessfully() == true );
+ REQUIRE( testCase.didCompleteSuccessfully() == false );
testCase.close();
- REQUIRE( testCase.isComplete() == true );
+ REQUIRE( testCase.didCompleteSuccessfully() == true );
}