text: #include "CompositeTestReporter.h"
  #include <cstddef>
  
  namespace UnitTest {
  
  CompositeTestReporter::CompositeTestReporter()
  	: m_reporterCount(0)
  {
  }
  
  int CompositeTestReporter::GetReporterCount() const
  {
  	return m_reporterCount;
  }
  
  bool CompositeTestReporter::AddReporter(TestReporter* reporter)
  {
  	if (m_reporterCount == kMaxReporters)
  		return false;
  
  	m_reporters[m_reporterCount++] = reporter;
  	return true;
  }
  
  bool CompositeTestReporter::RemoveReporter(TestReporter* reporter)
  {
      for (int index = 0; index < m_reporterCount; ++index)
      {
          if (m_reporters[index] == reporter)
          {
              m_reporters[index] = m_reporters[m_reporterCount - 1];
  			--m_reporterCount;
  			return true;
          }
      }
  
      return false;
  }
  
  void CompositeTestReporter::ReportFailure(TestDetails const& details, char const* failure)
  {
      for (int index = 0; index < m_reporterCount; ++index)
  		m_reporters[index]->ReportFailure(details, failure);
  }
  
  void CompositeTestReporter::ReportTestStart(TestDetails const& test)
  {
  	for (int index = 0; index < m_reporterCount; ++index)
  		m_reporters[index]->ReportTestStart(test);
  }
  
  void CompositeTestReporter::ReportTestFinish(TestDetails const& test, float secondsElapsed)
  {
  	for (int index = 0; index < m_reporterCount; ++index)
  		m_reporters[index]->ReportTestFinish(test, secondsElapsed);
  }
  
  void CompositeTestReporter::ReportSummary(int totalTestCount,
  										  int failedTestCount,
  										  int failureCount,
  										  float secondsElapsed)
  {
  	for (int index = 0; index < m_reporterCount; ++index)
  		m_reporters[index]->ReportSummary(totalTestCount, failedTestCount, failureCount, secondsElapsed);
  }
  
  }
  