1 #include "gtest/gtest.h"
2 #include "Accumulator.h"
3 #include <string>
4 #include <vector>
5 #include <fstream>
6
7 using namespace std;
8
9 class AccumulatorTest : public testing::Test
10 {
11 protected:
12 virtual void SetUp();
13 virtual void TearDown();
14
15 Accumulator * m_accumulator;
16
17 };
18
SetUp()19 void AccumulatorTest::SetUp()
20 {
21 m_accumulator = new Accumulator;
22 }
23
TearDown()24 void AccumulatorTest::TearDown()
25 {
26 delete m_accumulator;
27 }
28
readlines(const char * filename,vector<string> & lines)29 static void readlines(const char * filename, vector<string> & lines)
30 {
31 string datafile("input");
32 datafile += "/";
33 datafile += filename;
34 ifstream infile;
35 infile.open(datafile.c_str());
36 if (infile.is_open())
37 {
38 char buffer[BUFSIZ];
39 while (!infile.eof())
40 {
41 infile.getline(buffer, BUFSIZ);
42 lines.push_back(buffer);
43 }
44 }
45 }
46
TEST_F(AccumulatorTest,test0)47 TEST_F(AccumulatorTest, test0)
48 {
49 vector<string> lines;
50 readlines("test0.txt", lines);
51 size_t expected(2);
52 ASSERT_EQ(expected, lines.size());
53 m_accumulator->accumulate(lines[0].c_str());
54 ASSERT_EQ(10, m_accumulator->total());
55
56 }
57
TEST_F(AccumulatorTest,test1)58 TEST_F(AccumulatorTest, test1)
59 {
60 vector<string> lines;
61 readlines("test1.txt", lines);
62 size_t expected(6);
63 ASSERT_EQ(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 ASSERT_EQ(1+2+3+4+5, m_accumulator->total());
71
72 }
73