cdemo/tests/test_utils.cpp

73 lines
2.4 KiB
C++
Raw 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, UnusedFunctionNoCrash) {
// 测试目标:验证调用 unused_function 不会导致程序崩溃
// 由于该函数没有参数和返回值,主要测试其可执行性
EXPECT_NO_THROW(unused_function());
}
TEST(UtilsTest, UnusedFunctionNoSideEffects) {
// 测试目标:验证调用 unused_function 不会产生可观测的副作用
// 该函数内部只定义局部变量,不应影响外部状态
// 由于函数是静态的且无返回值,只能验证调用不会抛出异常
EXPECT_NO_THROW(unused_function());
// 可以添加一些全局状态检查(如果有相关全局变量的话)
// 但当前函数没有操作任何全局状态,所以只需确保调用安全
}
// 测试未使用变量函数
TEST(UtilsTest, TestUnusedCodeOutput) {
// 测试目标:验证 test_unused_code 函数输出正确值
// 重定向标准输出以捕获函数输出
std::stringstream buffer;
std::streambuf* old = std::cout.rdbuf(buffer.rdbuf());
test_unused_code();
std::cout.rdbuf(old); // 恢复标准输出
// 验证输出是否为 "200\n"y的值加换行符
EXPECT_EQ(buffer.str(), "200\n");
}
TEST(UtilsTest, TestUnusedCodeNoException) {
// 测试目标:验证 test_unused_code 函数不会抛出异常
EXPECT_NO_THROW(test_unused_code());
}
TEST(UtilsTest, TestUnusedCodeMultipleCalls) {
// 测试目标:验证多次调用 test_unused_code 函数行为一致
std::stringstream buffer1, buffer2;
std::streambuf* old = std::cout.rdbuf(buffer1.rdbuf());
test_unused_code();
std::cout.rdbuf(buffer2.rdbuf());
test_unused_code();
std::cout.rdbuf(old); // 恢复标准输出
// 验证两次调用输出相同
EXPECT_EQ(buffer1.str(), buffer2.str());
EXPECT_EQ(buffer1.str(), "200\n");
}
// 边界条件测试:虽然这两个函数没有参数,但可以测试调用频率
TEST(UtilsTest, HighFrequencyCalls) {
// 测试目标:验证高频调用不会导致问题
for (int i = 0; i < 1000; ++i) {
EXPECT_NO_THROW(unused_function());
EXPECT_NO_THROW(test_unused_code());
}
}
// 主函数
int main(int argc, char **argv) {
::testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}