#include "c_Test.h" #include "c_Complex.h" TEST_CASE(test_complex_extended_apis) { c_Complex_t a = c_Complex_Make(3.0, 4.0); c_Complex_t b = c_Complex_Make(1.0, -2.0); /* 1. 测试属性提取 */ ASSERT_DOUBLE_EQ_MSG(25.0, c_Complex_Norm(a), "Norm 运算错误"); ASSERT_DOUBLE_EQ_MSG(5.0, c_Complex_Abs(a), "Abs 运算错误"); /* 2. 测试除法 */ c_Complex_t res_div = c_Complex_Div(a, b); /* (3+4i)/(1-2i) = (3+4i)(1+2i)/5 = (-5+10i)/5 = -1 + 2i */ ASSERT_DOUBLE_EQ_MSG(-1.0, res_div.real, "复数除法实部错误"); ASSERT_DOUBLE_EQ_MSG(2.0, res_div.imag, "复数除法虚部错误"); /* 3. 测试极坐标转换与欧拉公式基础验证 */ /* e^(i*PI) = -1 + 0i */ c_Complex_t polar = c_Complex_FromPolar(1.0, 3.141592653589793); ASSERT_TRUE(c_Complex_Equals(polar, c_Complex_Make(-1.0, 0.0), 1e-6)); /* 4. 测试标量混合运算 */ c_Complex_t res_scalar = c_Complex_MulScalar(b, 3.0); ASSERT_DOUBLE_EQ_MSG(3.0, res_scalar.real, "标量乘法实部错误"); ASSERT_DOUBLE_EQ_MSG(-6.0, res_scalar.imag, "标量乘法虚部错误"); } int main(void) { TEST_START(TestSuite); RUN_TEST(test_complex_extended_apis); TEST_REPORT(); return (g_test_registry.failed_count > 0 ? 1 : 0); }