01
Write a GoogleTest unit test for a function, including an edge case.
Show answer
#include <gtest/gtest.h>
#include <stdexcept>
#include <vector>
double average(const std::vector<int>& v) {
if (v.empty()) throw std::invalid_argument("empty");
long long s = 0;
for (int x : v) s += x;
return static_cast<double>(s) / v.size();
}
TEST(AverageTest, ComputesMean) {
EXPECT_DOUBLE_EQ(average({2, 4, 6}), 4.0);
}
TEST(AverageTest, ThrowsOnEmpty) {
EXPECT_THROW(average({}), std::invalid_argument);
}