EXPERIMENT / 配套代码
speed_test.c
← 返回文章/* Test the actual CLI parser without opening the motor device. */
int main(void)
{
struct ptz_move_to to;
struct ptz_home home;
unsigned speed;
unsigned int i;
char level[16];
for (i = 1; i <= PTZ_SPEED_LEVEL_MAX; i++) {
snprintf(level, sizeof(level), "%u", i);
assert(parse_target(&to, 0, "64", level));
assert(to.speed == i * 100 && to.target == 64);
}
assert(ptz_speed_for_level(0) == 0 && ptz_speed_for_level(~0U) == 0);
assert(parse_target(&to, 0, "2020", "3") && to.target == 2020 && to.speed == 300);
assert(parse_target(&to, 1, "0", "1") && to.target == 0);
assert(!parse_target(&to, 0, "-1", "3"));
assert(!parse_target(&to, 0, "2020", "6"));
assert(!parse_target(&to, 0, "999999999999999999999999", "1"));
assert(parse_home(&home, 0, "reverse", "4039", "4200", "1", &speed));
assert(home.positive_direction == 1 && home.seek_steps == 4200 && speed == 100);
assert(parse_home(&home, 1, "forward", "1024", "1100", "1", &speed));
assert(home.positive_direction == -1);
assert(!parse_home(&home, 0, "reverse", "4039", "4000", "1", &speed));
assert(!parse_home(&home, 0, "reverse", "4039", "13000", "1", &speed));
assert(!parse_home(&home, 0, "reverse", "-1", "4200", "1", &speed));
assert(!parse_home(&home, 0, "reverse", "1", "64", "6", &speed));
assert(!parse_home(&home, 0, "left", "1", "64", "1", &speed));
assert(!parse_home(&home, 0, "reverse", "1", "-64", "1", &speed));
puts("PASS: speed levels, absolute targets, user-space home parameters");
return 0;
}