cdemo/tests/test_utils.cpp

69 lines
1.8 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#include "gtest/gtest.h"
#include "src/utils.cpp"
#include <iostream>
#include <sstream>
// 测试未使用的函数
TEST(UtilsTest, UnusedFunction) {
// 由于 unused_function 是静态的且无参数无返回值,
// 主要测试它能否被正常调用而不产生运行时错误
EXPECT_NO_THROW(unused_function());
// 调用函数,验证没有崩溃或异常
unused_function();
// 由于函数没有输出和副作用,这里主要验证调用成功
SUCCEED();
}
// 测试未使用代码的函数 - 正常场景
TEST(UtilsTest, TestUnusedCodeNormal) {
// 重定向 cout 以捕获输出
std::stringstream buffer;
std::streambuf* old = std::cout.rdbuf(buffer.rdbuf());
// 调用函数
test_unused_code();
// 恢复 cout
std::cout.rdbuf(old);
// 验证输出是否正确y 的值是 200
EXPECT_EQ(buffer.str(), "200\n");
}
// 测试未使用代码的函数 - 多次调用
TEST(UtilsTest, TestUnusedCodeMultipleCalls) {
std::stringstream buffer;
std::streambuf* old = std::cout.rdbuf(buffer.rdbuf());
// 多次调用函数
test_unused_code();
test_unused_code();
std::cout.rdbuf(old);
// 验证两次调用的输出
EXPECT_EQ(buffer.str(), "200\n200\n");
}
// 测试未使用代码的函数 - 无异常调用
TEST(UtilsTest, TestUnusedCodeNoThrow) {
// 验证函数调用不会抛出异常
EXPECT_NO_THROW(test_unused_code());
}
// 测试边界情况 - 函数可重复调用
TEST(UtilsTest, TestUnusedCodeRepeatedCalls) {
// 连续调用 100 次,验证不会崩溃
for (int i = 0; i < 100; ++i) {
EXPECT_NO_THROW(test_unused_code());
}
SUCCEED();
}
// 主函数
int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}