summaryrefslogtreecommitdiff
path: root/accel-cmd/accel_cmd_test.c
blob: a127cacaf19dd43f1f2eb2c746d23e5d24fd5bc3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/* Exercise the production timeout parser without opening a connection. */
#define main accel_cmd_main
#include "accel_cmd.c"
#undef main

int main(void)
{
	static const struct {
		const char *value;
		time_t seconds;
		long nanoseconds;
	} cases[] = {
		{ "0", 0, 0 },
		{ "2s", 2, 0 },
		{ "0ms", 0, 0 },
		{ "1ms", 0, 1000000 },
		{ "500ms", 0, 500000000 },
		{ "999ms", 0, 999000000 },
		{ "1000ms", 1, 0 },
		{ "1001ms", 1, 1000000 },
		{ "1500ms", 1, 500000000 },
		{ "1us", 0, 1000 },
		{ "1500000us", 1, 500000000 },
	};
	static const char *invalid[] = { "", "-1ms", "1.5ms", "1m" };
	struct timespec timeout;
	size_t i;

	for (i = 0; i < sizeof(cases) / sizeof(cases[0]); i++) {
		if (set_timespec(&timeout, cases[i].value) ||
		    timeout.tv_sec != cases[i].seconds ||
		    timeout.tv_nsec != cases[i].nanoseconds) {
			fprintf(stderr, "incorrect timeout for %s\n", cases[i].value);
			return 1;
		}
	}
	for (i = 0; i < sizeof(invalid) / sizeof(invalid[0]); i++) {
		if (!set_timespec(&timeout, invalid[i])) {
			fprintf(stderr, "accepted invalid timeout %s\n", invalid[i]);
			return 1;
		}
	}

	puts("accel-cmd timeout parsing: PASS");
	return 0;
}