#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);
 
   }
 
 
 
}