程序的一部分我写的是编写一个函数来测试断言。这个是测试我的Shift3DPoint函数,它接受第一个数组并通过添加第二个数组的内容来修改它(例如,test14和test15(如下所示)将导致新的test14 {6,8,0}但是,我对我如何在我的函数中说出这个问题感到困惑,因为它应该返回一个数组而且我之前只使用过双精度函数。任何帮助都会受到赞赏!< / p>
void UnitTest3D(void); //function for assertions
void Shift3DPoint (double pt[], double offset[]);
void UnitTest3D(void){
double test13[3] = {0,0,0};
double test14[3] = {6,0,0};
double test15[3] = {0,8,0};
assert(UnitTest3D(test13, test14) ???
return;
}
void Shift3DPoint(double pt[], double offset[]) {
int i = 0;
for (i = 0; i < 3; ++i) {
pt[i] = pt[i] + offset[i]; //changes array contents by adding corresponding ptB
}
return;
}
答案 0 :(得分:0)
assert
只是您可能使用或不使用的辅助函数。如果你想明确地使用assert
(可能是因为它失败了你的程序)你可以自己编写测试然后用assert测试它。在您的情况下,test14
将具有预期值。乍看之下我会如何对待这件事:
void UnitTest3D(void){
double test14[3] = {6,0,0};
double test15[3] = {0,8,0};
double expected_result[3] = {6,8,0};
// Test the result after calling the function
Shift3DPoint(test14, test15);
for (int i = 0; i < 3; ++i)
assert(test14[i] == expected_result[i]);
return;
}
(请注意,您可以使用不同的数组进行调用,但我认为您明白了这一点)。您可以编写辅助宏或更多通用函数,但您可以理解。
此外,考虑到double
很少使用==
检查assert ( fabs(test14[i] - expected_result[i]) < epsilon);
值,因为出现了预防问题,因此您应该给出某种类型的epsilon,因为您希望计算得以保留:
din