mirror of https://github.com/nirenjan/libx52.git
Make x52test use X macros
parent
9e581bf051
commit
1d51429f10
|
|
@ -81,14 +81,29 @@ static void signal_handler(int sig)
|
||||||
test_exit = sig;
|
test_exit = sig;
|
||||||
}
|
}
|
||||||
|
|
||||||
#define TEST_brightness (1 << 0)
|
#define TESTS \
|
||||||
#define TEST_leds (1 << 1)
|
X(brightness, bri, "Test brightness scale (~ 1m)") \
|
||||||
#define TEST_mfd_text (1 << 2)
|
X(leds, led, "Test LED states (~ 45s)") \
|
||||||
#define TEST_mfd_display (1 << 3)
|
X(mfd_text, mfd1, "Test MFD string display (~ 30s)") \
|
||||||
#define TEST_blink_n_shift (1 << 4)
|
X(mfd_display, mfd2, "Test MFD displays all characters (~ 2m 15s)") \
|
||||||
#define TEST_clock (1 << 5)
|
X(blink_n_shift, blink, "Test the blink and shift commands (< 10s)") \
|
||||||
|
X(clock, clock, "Test the clock commands (~1m)")
|
||||||
|
|
||||||
#define TEST_ALL (TEST_brightness | TEST_leds | TEST_mfd_text | TEST_blink_n_shift | TEST_clock | TEST_mfd_display)
|
enum {
|
||||||
|
#define X(en, kw, desc) TEST_BIT_ ## en,
|
||||||
|
TESTS
|
||||||
|
#undef X
|
||||||
|
};
|
||||||
|
|
||||||
|
enum {
|
||||||
|
#define X(en, kw, desc) TEST_ ## en = (1 << TEST_BIT_ ## en),
|
||||||
|
TESTS
|
||||||
|
#undef X
|
||||||
|
};
|
||||||
|
|
||||||
|
#define X(en, kw, desc) | TEST_ ## en
|
||||||
|
const int TEST_ALL = 0 TESTS;
|
||||||
|
#undef X
|
||||||
|
|
||||||
static int run_tests(int test_set)
|
static int run_tests(int test_set)
|
||||||
{
|
{
|
||||||
|
|
@ -117,12 +132,9 @@ static int run_tests(int test_set)
|
||||||
test_exit = 0;
|
test_exit = 0;
|
||||||
|
|
||||||
do {
|
do {
|
||||||
RUN_TEST(brightness)
|
#define X(en, cmd, desc) RUN_TEST(en)
|
||||||
RUN_TEST(leds)
|
TESTS
|
||||||
RUN_TEST(mfd_text)
|
#undef X
|
||||||
RUN_TEST(mfd_display)
|
|
||||||
RUN_TEST(blink_n_shift)
|
|
||||||
RUN_TEST(clock)
|
|
||||||
} while (0);
|
} while (0);
|
||||||
|
|
||||||
if (rc > 0) {
|
if (rc > 0) {
|
||||||
|
|
@ -146,19 +158,31 @@ void usage(void)
|
||||||
|
|
||||||
puts("List of tests:");
|
puts("List of tests:");
|
||||||
puts("==============");
|
puts("==============");
|
||||||
puts("\tbri\tTest brightness scale (~ 1m)");
|
|
||||||
puts("\tled\tTest LED states (~ 45s)");
|
#define X(en, cmd, desc) puts("\t" #cmd "\t" desc);
|
||||||
puts("\tmfd1\tTest MFD string display (~ 30s)");
|
TESTS
|
||||||
puts("\tmfd2\tTest MFD displays all characters (~ 2m 15s)");
|
#undef X
|
||||||
puts("\tblink\tTest the blink and shift commands (< 10s)");
|
|
||||||
puts("\tclock\tTest the clock commands (~ 1m)");
|
|
||||||
puts("");
|
puts("");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct test_map {
|
||||||
|
char *cmd;
|
||||||
|
int test_bitmap;
|
||||||
|
};
|
||||||
|
const struct test_map tests[] = {
|
||||||
|
#define X(en, cmd, desc) { #cmd, TEST_ ##en },
|
||||||
|
TESTS
|
||||||
|
#undef X
|
||||||
|
{ NULL, 0 }
|
||||||
|
};
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
int test_list;
|
int test_list;
|
||||||
int i;
|
int i;
|
||||||
|
const struct test_map *test;
|
||||||
|
int found;
|
||||||
|
|
||||||
/* Usage: x52test [list of tests] */
|
/* Usage: x52test [list of tests] */
|
||||||
if (argc == 1) {
|
if (argc == 1) {
|
||||||
|
|
@ -179,22 +203,21 @@ int main(int argc, char **argv)
|
||||||
printf("Usage: %s [list of tests]\n\n", argv[0]);
|
printf("Usage: %s [list of tests]\n\n", argv[0]);
|
||||||
usage();
|
usage();
|
||||||
return 0;
|
return 0;
|
||||||
} else if (!strcmp(argv[i], "bri")) {
|
|
||||||
test_list |= TEST_brightness;
|
|
||||||
} else if (!strcmp(argv[i], "led")) {
|
|
||||||
test_list |= TEST_leds;
|
|
||||||
} else if (!strcmp(argv[i], "mfd1")) {
|
|
||||||
test_list |= TEST_mfd_text;
|
|
||||||
} else if (!strcmp(argv[i], "mfd2")) {
|
|
||||||
test_list |= TEST_mfd_display;
|
|
||||||
} else if (!strcmp(argv[i], "blink")) {
|
|
||||||
test_list |= TEST_blink_n_shift;
|
|
||||||
} else if (!strcmp(argv[i], "clock")) {
|
|
||||||
test_list |= TEST_clock;
|
|
||||||
} else {
|
} else {
|
||||||
printf("Unrecognized test identifier: %s\n\n", argv[i]);
|
found = 0;
|
||||||
usage();
|
for (test = tests; test->cmd; test++) {
|
||||||
return 1;
|
if (!strcmp(argv[i], test->cmd)) {
|
||||||
|
test_list |= test->test_bitmap;
|
||||||
|
found = 1;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (found == 0) {
|
||||||
|
printf("Unrecognized test identifier: %s\n\n", argv[i]);
|
||||||
|
usage();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue