我正在练习Google测试C。为function_1
函数编写测试用例时,我有些困惑。
typedef struct
{
int a; //4 byte
char b; //1 byte
char c; //1 byte
char d; //1 byte
char arr[3]; //3 byte
}ABCXYZ;
static void function_1(char *abc)
{
if (abc != null)
{
ABCXYZ *name =(ABCXYZ *)(abc + 4);
if (name->b == 1)
printf("ONE");
else if (name->b == 2)
printf("TWO");
else
printf("OTHER");
}
else
{
printf("INVALID");
}
}
我已经编写了这样的测试用例:
TEST(Test_function_1,abc_null)
{
function_1(null);
}
TEST(Test_function_1,one)
{
char arr[10]={1,0,0,0,0,0,0,0,0,0};
function_1(arr);
}
TEST(Test_function_1,two)
{
char arr[10]={2,0,0,0,0,0,0,0,0,0};
function_1(arr);
}
TEST(Test_function_1,other)
{
char arr[10]={3,0,0,0,0,0,0,0,0,0};
function_1(arr);
}
与测试用例无关,但您的功能有问题。
此行代码ABCXYZ *name =(ABCXYZ *)(abc + 4);
不能帮助您将数组的第一个元素的值传递到结构b
的字段name
中。