#include "../CppTestHarness.h"


#include "../TestReporter.h"

#include "../TestResults.h"


using namespace CppTestHarness;

namespace 
{

struct MockTestReporter : public TestReporter
{
public:
	MockTestReporter()
		: failureCount(0)
	{
	}

	virtual void ReportFailure(char const*, int, std::string) 
	{
		++failureCount;
	}
	
	virtual void ReportSingleResult(const std::string&, bool) {}
	virtual void ReportSummary(int, int) {}

	int failureCount;
};

struct MockTestResultsFixture
{
	MockTestResultsFixture()
		: results(reporter)
	{
	}

	MockTestReporter reporter;
	TestResults results;
};

TEST_FIXTURE(MockTestResultsFixture, TestResultsDefaultToSuccess)
{
	CHECK_EQUAL(results.Failed(), false);
}

TEST_FIXTURE(MockTestResultsFixture, TestResultsRecordFailures)
{
	results.ReportFailure("nothing", 0, "expected failure");
	CHECK_EQUAL(results.Failed(), true);
}

TEST_FIXTURE(MockTestResultsFixture, TestResultsReportFailures)
{
	results.ReportFailure("nothing", 0, "expected failure");
	CHECK_EQUAL(reporter.failureCount, 1);
}

}



syntax highlighted by Code2HTML, v. 0.9.1