assert_se(r == -EINVAL);
}
+static void test_strstrip(void) {
+ char *r;
+ char input[] = " hello, waldo. ";
+
+ r = strstrip(input);
+ assert_se(streq(r, "hello, waldo."));
+
+}
+
+static void test_delete_chars(void) {
+ char *r;
+ char input[] = " hello, waldo. abc";
+
+ r = delete_chars(input, WHITESPACE);
+ assert_se(streq(r, "hello,waldo.abc"));
+}
+
+static void test_in_charset(void) {
+ assert_se(in_charset("dddaaabbbcccc", "abcd"));
+ assert_se(!in_charset("dddaaabbbcccc", "abc f"));
+}
+
+static void test_hexchar(void) {
+ assert_se(hexchar(0xa) == 'a');
+ assert_se(hexchar(0x0) == '0');
+}
+
+static void test_unhexchar(void) {
+ assert_se(unhexchar('a') == 0xA);
+ assert_se(unhexchar('A') == 0xA);
+ assert_se(unhexchar('0') == 0x0);
+}
+
+static void test_octchar(void) {
+ assert_se(octchar(00) == '0');
+ assert_se(octchar(07) == '7');
+}
+
+static void test_unoctchar(void) {
+ assert_se(unoctchar('0') == 00);
+ assert_se(unoctchar('7') == 07);
+}
+
+static void test_decchar(void) {
+ assert_se(decchar(0) == '0');
+ assert_se(decchar(9) == '9');
+}
+
+static void test_undecchar(void) {
+ assert_se(undecchar('0') == 0);
+ assert_se(undecchar('9') == 9);
+}
+
+static void test_foreach_word(void) {
+ char *w, *state;
+ size_t l;
+ int i = 0;
+ const char test[] = "test abc d\te f ";
+ const char * const expected[] = {
+ "test",
+ "abc",
+ "d",
+ "e",
+ "f",
+ "",
+ NULL
+ };
+
+ FOREACH_WORD(w, l, test, state) {
+ assert_se(strneq(expected[i++], w, l));
+ }
+}
+
static void test_foreach_word_quoted(void) {
char *w, *state;
size_t l;
- const char test[] = "test a b c 'd' e '' '' hhh '' ''";
+ int i = 0;
+ const char test[] = "test a b c 'd' e '' '' hhh '' '' \"a b c\"";
+ const char * const expected[] = {
+ "test",
+ "a",
+ "b",
+ "c",
+ "d",
+ "e",
+ "",
+ "",
+ "hhh",
+ "",
+ "",
+ "a b c",
+ NULL
+ };
+
printf("<%s>\n", test);
FOREACH_WORD_QUOTED(w, l, test, state) {
- char *t;
+ _cleanup_free_ char *t = NULL;
assert_se(t = strndup(w, l));
+ assert_se(strneq(expected[i++], w, l));
printf("<%s>\n", t);
- free(t);
}
}
free(dup);
}
+static void test_bus_path_escape_one(const char *a, const char *b) {
+ _cleanup_free_ char *t = NULL, *x = NULL, *y = NULL;
+
+ assert_se(t = bus_path_escape(a));
+ assert_se(streq(t, b));
+
+ assert_se(x = bus_path_unescape(t));
+ assert_se(streq(a, x));
+
+ assert_se(y = bus_path_unescape(b));
+ assert_se(streq(a, y));
+}
+
+static void test_bus_path_escape(void) {
+ test_bus_path_escape_one("foo123bar", "foo123bar");
+ test_bus_path_escape_one("foo.bar", "foo_2ebar");
+ test_bus_path_escape_one("foo_2ebar", "foo_5f2ebar");
+ test_bus_path_escape_one("", "_");
+ test_bus_path_escape_one("_", "_5f");
+ test_bus_path_escape_one("1", "_31");
+ test_bus_path_escape_one(":1", "_3a1");
+}
+
int main(int argc, char *argv[]) {
test_streq_ptr();
test_first_word();
test_parse_boolean();
- test_default_term_for_tty();
test_parse_pid();
test_parse_uid();
test_safe_atolli();
test_safe_atod();
+ test_strstrip();
+ test_delete_chars();
+ test_in_charset();
+ test_hexchar();
+ test_unhexchar();
+ test_octchar();
+ test_unoctchar();
+ test_decchar();
+ test_undecchar();
+ test_foreach_word();
test_foreach_word_quoted();
+ test_default_term_for_tty();
test_memdup_multiply();
+ test_bus_path_escape();
return 0;
}