AccumulatorTest.cpp 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #include <cppunit/extensions/HelperMacros.h>
  2. #include "Accumulator.h"
  3. #include <string>
  4. #include <vector>
  5. #include <fstream>
  6. using namespace std;
  7. class AccumulatorTest : public CPPUNIT_NS::TestFixture
  8. {
  9. private:
  10. CPPUNIT_TEST_SUITE( AccumulatorTest );
  11. CPPUNIT_TEST( test0 );
  12. CPPUNIT_TEST( test1 );
  13. CPPUNIT_TEST_SUITE_END();
  14. public:
  15. void test0();
  16. void test1();
  17. void setUp();
  18. void tearDown();
  19. private:
  20. Accumulator * m_accumulator;
  21. };
  22. // Registers the fixture into the 'registry'
  23. CPPUNIT_TEST_SUITE_REGISTRATION( AccumulatorTest );
  24. void AccumulatorTest::setUp()
  25. {
  26. m_accumulator = new Accumulator;
  27. }
  28. void AccumulatorTest::tearDown()
  29. {
  30. delete m_accumulator;
  31. }
  32. static void readlines(const char * filename, vector<string> & lines)
  33. {
  34. string datafile("input");
  35. datafile += "/";
  36. datafile += filename;
  37. ifstream infile;
  38. infile.open(datafile.c_str());
  39. if (infile.is_open())
  40. {
  41. char buffer[BUFSIZ];
  42. while (!infile.eof())
  43. {
  44. infile.getline(buffer, BUFSIZ);
  45. lines.push_back(buffer);
  46. }
  47. }
  48. }
  49. void AccumulatorTest::test0()
  50. {
  51. vector<string> lines;
  52. readlines("test0.txt", lines);
  53. size_t expected(2);
  54. CPPUNIT_ASSERT_EQUAL(expected, lines.size());
  55. m_accumulator->accumulate(lines[0].c_str());
  56. CPPUNIT_ASSERT_EQUAL(10, m_accumulator->total());
  57. }
  58. void AccumulatorTest::test1()
  59. {
  60. vector<string> lines;
  61. readlines("test1.txt", lines);
  62. size_t expected(6);
  63. CPPUNIT_ASSERT_EQUAL(expected, lines.size());
  64. for (vector<string>::const_iterator it(lines.begin());
  65. it != lines.end(); ++it)
  66. {
  67. const string & line(*it);
  68. m_accumulator->accumulate(line.c_str());
  69. }
  70. CPPUNIT_ASSERT_EQUAL(1+2+3+4+5, m_accumulator->total());
  71. }