#include #include #include using namespace std; struct ContainsIntegers { virtual ~ContainsIntegers() = default; virtual int* begin() = 0; virtual int* end() = 0; }; struct SingleValue : ContainsIntegers { int value{ 0 }; SingleValue() = default; explicit SingleValue(const int value) : value{value} { } int* begin() override { return &value; } int* end() override { return &value + 1; } }; struct ManyValues : vector, ContainsIntegers { int* begin() override { return &(*this)[0]; } int* end() override { return &(*this)[size()]; } void add(const int value) { push_back(value); } }; int sum(const vector items) { int result{ 0 }; for (auto item : items) { for (auto value : *item) { result += value; } } return result; } #include "gtest/gtest.h" //#include "helpers/iohelper.h" //#include "exercise.cpp" namespace { class Evaluate : public testing::Test { }; TEST_F(Evaluate, SimpleTest) { SingleValue single_value{ 11 }; ManyValues other_values; other_values.add(22); other_values.add(33); ASSERT_EQ(66, sum({ &single_value, &other_values })); } } // namespace