diff options
author | Frediano Ziglio <freddy77@gmail.com> | 2021-06-05 09:06:03 +0100 |
---|---|---|
committer | Frediano Ziglio <freddy77@gmail.com> | 2021-06-07 14:58:50 +0100 |
commit | a362e7cdf4e82a59d6ab322965fc7ff6bbcd2bdb (patch) | |
tree | 126ebfe0858bf6cfe6c41b53311fecf8d5e67f28 /tests | |
parent | 8edc63e91edddd79f76ae18e1ff903fe2325e71a (diff) |
More tests for filters
Test filters with no rule.
Test filters using multiple separator characters.
Test we count rule numbers correctly.
Signed-off-by: Frediano Ziglio <freddy77@gmail.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/filter.c | 38 |
1 files changed, 31 insertions, 7 deletions
diff --git a/tests/filter.c b/tests/filter.c index eb82600..a85fe06 100644 --- a/tests/filter.c +++ b/tests/filter.c @@ -69,32 +69,56 @@ static void test_verify_rules_good(void) { int i; - struct { + static const struct test { int nrules; const char *filter; const char *expected_serialized; + const char *token_sep; + const char *rule_sep; } test_data[] = { - { 1, "0x03,-1,-1,-1,0", "0x03,-1,-1,-1,0" }, - { 2, "0x03,-1,-1,-1,0|-1,-1,-1,-1,1", "0x03,-1,-1,-1,0|-1,-1,-1,-1,1"}, + { 0, "" }, + { 0, "|||", "" }, + { 1, "0x03,-1,-1,-1,0" }, + { 2, "0x03,-1,-1,-1,0|-1,-1,-1,-1,1" }, /* Ignores trailing rule_sep */ { 2, "|0x03,-1,-1,-1,0|-1,-1,-1,-1,1|", "0x03,-1,-1,-1,0|-1,-1,-1,-1,1" }, /* Ignores empty rules */ { 2, "0x03,-1,-1,-1,0|||-1,-1,-1,-1,1", "0x03,-1,-1,-1,0|-1,-1,-1,-1,1" }, /* Several trailing rule_sep and empty rules */ { 2, "||||0x03,-1,-1,-1,0|||-1,-1,-1,-1,1||||", "0x03,-1,-1,-1,0|-1,-1,-1,-1,1" }, + /* Change rule separator using multiple characters */ + { 1, "0x03,-1,-1,-1,0", NULL, ",;", " \t\n" }, + /* Mix of different separators */ + { 1, "\t 0x03,-1;-1;-1,0\n\n", "0x03,-1,-1,-1,0" }, + /* Multiple rules, separators not the first charater */ + { 2, "\n\t0x03;-1,-1,-1,0\n\n-1,-1,-1;-1;1", "0x03,-1,-1,-1,0 -1,-1,-1,-1,1" }, }; + const char *token_sep = ","; + const char *rule_sep = "|"; for (i = 0; i < G_N_ELEMENTS (test_data); i++) { + const struct test *const data = &test_data[i]; int retval, count = 0; char *filter; struct usbredirfilter_rule *rules = NULL; + const char *const expected = + data->expected_serialized ? data->expected_serialized : data->filter; - retval = usbredirfilter_string_to_rules(test_data[i].filter, ",", "|", &rules, &count); + if (data->token_sep) { + token_sep = data->token_sep; + } + if (data->rule_sep) { + rule_sep = data->rule_sep; + } + + retval = usbredirfilter_string_to_rules(data->filter, token_sep, rule_sep, &rules, &count); g_assert_cmpint(retval, ==, 0); - g_assert_cmpint(count, ==, test_data[i].nrules); + g_assert_cmpint(count, ==, data->nrules); + - filter = usbredirfilter_rules_to_string(rules, count, ",", "|"); - g_assert_cmpstr(test_data[i].expected_serialized, ==, filter); + filter = usbredirfilter_rules_to_string(rules, count, token_sep, rule_sep); + g_assert_nonnull(filter); + g_assert_cmpstr(expected, ==, filter); free(filter); free(rules); } |