+#include <assert.h>
+
+#include "util.h"
+#include "cgroup-util.h"
+
+#define check_c_t_u(path, code, result) \
+{ \
+ char a[] = path; \
+ char *unit = NULL; \
+ assert_se(cgroup_to_unit(a, &unit) == code); \
+ assert(code < 0 || streq(unit, result)); \
+}
+
+
+static void test_cgroup_to_unit(void) {
+ check_c_t_u("/system/getty@.service/tty2", 0, "getty@tty2.service");
+ check_c_t_u("/system/getty@.service/", -EINVAL, "getty@tty2.service");
+ check_c_t_u("/system/getty@.service", -EINVAL, "getty@tty2.service");
+ check_c_t_u("/system/getty.service", 0, "getty.service");
+ check_c_t_u("/system/getty", -EINVAL, "getty.service");
+}
+
+int main(void) {
+ test_cgroup_to_unit();
+
+ return 0;
+}