#include "TestResults.h"
#include "TestReporter.h"

#include "TestDetails.h"

namespace UnitTest {

TestResults::TestResults ( TestReporter* testReporter )
		: m_testReporter ( testReporter )
		, m_totalTestCount ( 0 )
		, m_failedTestCount ( 0 )
		, m_failureCount ( 0 )
		, m_currentTestFailed ( false ) {
}

void TestResults::OnTestStart ( TestDetails const& test ) {
	++m_totalTestCount;
	m_currentTestFailed = false;
	if ( m_testReporter )
		m_testReporter->ReportTestStart ( test );
}

void TestResults::OnTestFailure ( TestDetails const& test, char const* failure ) {
	++m_failureCount;
	if ( !m_currentTestFailed ) {
		++m_failedTestCount;
		m_currentTestFailed = true;
	}

	if ( m_testReporter )
		m_testReporter->ReportFailure ( test, failure );
}

void TestResults::OnTestFinish ( TestDetails const& test, float secondsElapsed ) {
	if ( m_testReporter )
		m_testReporter->ReportTestFinish ( test, secondsElapsed );
}

int TestResults::GetTotalTestCount() const {
	return m_totalTestCount;
}

int TestResults::GetFailedTestCount() const {
	return m_failedTestCount;
}

int TestResults::GetFailureCount() const {
	return m_failureCount;
}


}
