Line data Source code
1 : /**
2 : * @file test_registry.c
3 : * @brief Unit tests for TL constructor registry.
4 : */
5 :
6 : #include "test_helpers.h"
7 : #include "tl_registry.h"
8 :
9 : #include <string.h>
10 :
11 1 : void test_registry_known_constructors(void) {
12 1 : ASSERT(tl_constructor_known(TL_rpc_result), "rpc_result should be known");
13 1 : ASSERT(tl_constructor_known(TL_rpc_error), "rpc_error should be known");
14 1 : ASSERT(tl_constructor_known(TL_gzip_packed), "gzip_packed should be known");
15 1 : ASSERT(tl_constructor_known(TL_msg_container), "msg_container should be known");
16 1 : ASSERT(tl_constructor_known(TL_user), "user should be known");
17 1 : ASSERT(tl_constructor_known(TL_message), "message should be known");
18 1 : ASSERT(tl_constructor_known(TL_channel), "channel should be known");
19 1 : ASSERT(tl_constructor_known(TL_peerUser), "peerUser should be known");
20 1 : ASSERT(tl_constructor_known(TL_config), "config should be known");
21 1 : ASSERT(tl_constructor_known(TL_boolTrue), "boolTrue should be known");
22 : }
23 :
24 1 : void test_registry_unknown_constructor(void) {
25 1 : ASSERT(!tl_constructor_known(0x00000000), "0x00000000 should be unknown");
26 1 : ASSERT(!tl_constructor_known(0xFFFFFFFF), "0xFFFFFFFF should be unknown");
27 1 : ASSERT(!tl_constructor_known(0xDEADBEEF), "0xDEADBEEF should be unknown");
28 : }
29 :
30 1 : void test_registry_name_lookup(void) {
31 1 : ASSERT(strcmp(tl_constructor_name(TL_rpc_result), "rpc_result") == 0,
32 : "rpc_result name");
33 1 : ASSERT(strcmp(tl_constructor_name(TL_user), "user") == 0,
34 : "user name");
35 1 : ASSERT(strcmp(tl_constructor_name(TL_message), "message") == 0,
36 : "message name");
37 1 : ASSERT(strcmp(tl_constructor_name(TL_gzip_packed), "gzip_packed") == 0,
38 : "gzip_packed name");
39 1 : ASSERT(strcmp(tl_constructor_name(TL_peerChannel), "peerChannel") == 0,
40 : "peerChannel name");
41 : }
42 :
43 1 : void test_registry_unknown_name(void) {
44 1 : ASSERT(strcmp(tl_constructor_name(0xDEADBEEF), "unknown") == 0,
45 : "unknown constructor should return 'unknown'");
46 : }
47 :
48 1 : void test_registry_auth_constructors(void) {
49 1 : ASSERT(tl_constructor_known(TL_resPQ), "resPQ");
50 1 : ASSERT(tl_constructor_known(TL_server_DH_params_ok), "server_DH_params_ok");
51 1 : ASSERT(tl_constructor_known(TL_dh_gen_ok), "dh_gen_ok");
52 1 : ASSERT(tl_constructor_known(TL_auth_sentCode), "auth.sentCode");
53 1 : ASSERT(tl_constructor_known(TL_auth_authorization), "auth.authorization");
54 : }
55 :
56 1 : void test_registry_update_constructors(void) {
57 1 : ASSERT(tl_constructor_known(TL_updates_state), "updates.state");
58 1 : ASSERT(tl_constructor_known(TL_updates_difference), "updates.difference");
59 1 : ASSERT(tl_constructor_known(TL_updateNewMessage), "updateNewMessage");
60 1 : ASSERT(tl_constructor_known(TL_updateShort), "updateShort");
61 : }
62 :
63 1 : void test_registry_media_constructors(void) {
64 1 : ASSERT(tl_constructor_known(TL_messageMediaPhoto), "messageMediaPhoto");
65 1 : ASSERT(tl_constructor_known(TL_messageMediaDocument), "messageMediaDocument");
66 1 : ASSERT(tl_constructor_known(TL_messageMediaGeo), "messageMediaGeo");
67 1 : ASSERT(tl_constructor_known(TL_messageMediaContact), "messageMediaContact");
68 1 : ASSERT(tl_constructor_known(TL_document), "document");
69 1 : ASSERT(tl_constructor_known(TL_photo), "photo");
70 : }
71 :
72 1 : void test_registry(void) {
73 1 : RUN_TEST(test_registry_known_constructors);
74 1 : RUN_TEST(test_registry_unknown_constructor);
75 1 : RUN_TEST(test_registry_name_lookup);
76 1 : RUN_TEST(test_registry_unknown_name);
77 1 : RUN_TEST(test_registry_auth_constructors);
78 1 : RUN_TEST(test_registry_update_constructors);
79 1 : RUN_TEST(test_registry_media_constructors);
80 1 : }
|