diff --git a/tests/test_utils.cpp b/tests/test_utils.cpp new file mode 100644 index 0000000..abf2898 --- /dev/null +++ b/tests/test_utils.cpp @@ -0,0 +1,73 @@ +#include "gtest/gtest.h" +#include "src/utils.cpp" +#include +#include + +// 测试未使用函数 +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(); +} \ No newline at end of file