#include #include // 测试类定义 class LargestPerimeterTest : public ::testing::Test { protected: void AssertLargestPerimeter(std::vector input, int expected) { int *nums = new int[input.size()]; std::copy(input.begin(), input.end(), nums); int result = largestPerimeter(nums, input.size()); ASSERT_EQ(result, expected); delete[] nums; } }; // 示例 1 TEST_F(LargestPerimeterTest, Example1) { // 输入: nums = [2,1,2] // 输出: 5 AssertLargestPerimeter({2, 1, 2}, 5); } // 示例 2 TEST_F(LargestPerimeterTest, Example2) { // 输入: nums = [1,2,1,10] // 输出: 0 AssertLargestPerimeter({1, 2, 1, 10}, 0); } // 边界测试:最小输入 TEST_F(LargestPerimeterTest, SmallestInput) { // 输入: nums = [3,4,5] // 输出: 12 AssertLargestPerimeter({3, 4, 5}, 12); } // 边界测试:无法组成三角形的情况 TEST_F(LargestPerimeterTest, CannotFormTriangle) { // 输入: nums = [1,1,2] // 输出: 0 AssertLargestPerimeter({1, 1, 2}, 0); } // 边界测试:重复元素 TEST_F(LargestPerimeterTest, RepeatedElements) { // 输入: nums = [3,3,3,3,3] // 输出: 9 AssertLargestPerimeter({3, 3, 3, 3, 3}, 9); } // 边界测试:无有效三角形 TEST_F(LargestPerimeterTest, NoValidTriangle) { // 输入: nums = [1,1,1,10] // 输出: 3 AssertLargestPerimeter({1, 1, 1, 10}, 3); }