Line data Source code
1 : /* SPDX-License-Identifier: LGPL-2.1+ */ 2 : 3 : #include <sys/types.h> 4 : 5 : #include "alloc-util.h" 6 : #include "device-nodes.h" 7 : #include "string-util.h" 8 : #include "util.h" 9 : 10 : /* helpers for test_encode_devnode_name */ 11 6 : static char *do_encode_string(const char *in) { 12 6 : size_t out_len = strlen(in) * 4 + 1; 13 6 : char *out = malloc(out_len); 14 : 15 6 : assert_se(out); 16 6 : assert_se(encode_devnode_name(in, out, out_len) >= 0); 17 6 : puts(out); 18 : 19 6 : return out; 20 : } 21 : 22 6 : static bool expect_encoded_as(const char *in, const char *expected) { 23 6 : _cleanup_free_ char *encoded = do_encode_string(in); 24 6 : return streq(encoded, expected); 25 : } 26 : 27 1 : static void test_encode_devnode_name(void) { 28 1 : assert_se(expect_encoded_as("systemd sucks", "systemd\\x20sucks")); 29 1 : assert_se(expect_encoded_as("pinkiepie", "pinkiepie")); 30 1 : assert_se(expect_encoded_as("valíd\\ųtf8", "valíd\\x5cųtf8")); 31 1 : assert_se(expect_encoded_as("s/ash/ng", "s\\x2fash\\x2fng")); 32 1 : assert_se(expect_encoded_as("/", "\\x2f")); 33 1 : assert_se(expect_encoded_as("!", "\\x21")); 34 1 : } 35 : 36 1 : int main(int argc, char *argv[]) { 37 1 : test_encode_devnode_name(); 38 : 39 1 : return 0; 40 : }