/* PipeWire AGL Cluster IPC * * Copyright © 2021 Collabora Ltd. * @author Julian Bouzas * * SPDX-License-Identifier: MIT */ #include "test.h" #include #include #include static void test_icipc_protocol () { uint8_t b[1024]; /* request null value */ { icipc_protocol_build_request (b, sizeof(b), "name", NULL); const char *name = NULL; const struct spa_pod *value = NULL; test_bool_true (icipc_protocol_parse_request (b, sizeof(b), &name, &value)); test_str_eq (name, "name"); test_bool_true (spa_pod_is_none (value)); } /* request */ { struct spa_pod_int i = SPA_POD_INIT_Int (8); icipc_protocol_build_request (b, sizeof(b), "name", (struct spa_pod *)&i); const char *name = NULL; const struct spa_pod_int *value = NULL; test_bool_true (icipc_protocol_parse_request (b, sizeof(b), &name, (const struct spa_pod **)&value)); test_str_eq (name, "name"); test_cmpint (value->value, ==, 8); } /* reply error */ { icipc_protocol_build_reply_error (b, sizeof(b), "error message"); test_bool_true (icipc_protocol_is_reply_error (b, sizeof(b))); const char *msg = NULL; test_bool_true (icipc_protocol_parse_reply_error (b, sizeof(b), &msg)); test_str_eq (msg, "error message"); } /* reply ok null value */ { icipc_protocol_build_reply_ok (b, sizeof(b), NULL); test_bool_true (icipc_protocol_is_reply_ok (b, sizeof(b))); const struct spa_pod *value = NULL; test_bool_true (icipc_protocol_parse_reply_ok (b, sizeof(b), &value)); test_ptr_notnull (value); test_bool_true (spa_pod_is_none (value)); } /* reply ok */ { struct spa_pod_int i = SPA_POD_INIT_Int (3); icipc_protocol_build_reply_ok (b, sizeof(b), (struct spa_pod *)&i); test_bool_true (icipc_protocol_is_reply_ok (b, sizeof(b))); const struct spa_pod_int *value = NULL; test_bool_true (icipc_protocol_parse_reply_ok (b, sizeof(b), (const struct spa_pod **)&value)); test_cmpint (value->value, ==, 3); } } int main (int argc, char *argv[]) { test_icipc_protocol(); return TEST_PASS; }