summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorFrediano Ziglio <freddy77@gmail.com>2021-06-05 09:06:03 +0100
committerFrediano Ziglio <freddy77@gmail.com>2021-06-07 14:58:50 +0100
commita362e7cdf4e82a59d6ab322965fc7ff6bbcd2bdb (patch)
tree126ebfe0858bf6cfe6c41b53311fecf8d5e67f28 /tests
parent8edc63e91edddd79f76ae18e1ff903fe2325e71a (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.c38
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);
}