LCOV - code coverage report
Current view: top level - tests/functional - test_tg_cli_read_dispatch.c (source / functions) Coverage Total Hit
Test: coverage.info Lines: 100.0 % 77 77
Test Date: 2026-04-20 19:54:22 Functions: 100.0 % 12 12

            Line data    Source code
       1              : /* SPDX-License-Identifier: GPL-3.0-or-later */
       2              : /* Copyright 2026 Peter Csaszar */
       3              : 
       4              : /**
       5              :  * @file test_tg_cli_read_dispatch.c
       6              :  * @brief Verify that arg_parse recognises all read subcommands that tg-cli
       7              :  *        now dispatches (FEAT-37 refactor — tg-cli exposes every command).
       8              :  *
       9              :  * These are parser-level tests only; no RPC is performed.
      10              :  */
      11              : 
      12              : #include "test_helpers.h"
      13              : #include "arg_parse.h"
      14              : 
      15              : #include <string.h>
      16              : 
      17            2 : static void test_dispatch_me(void) {
      18            2 :     char *argv[] = {"tg-cli", "me", NULL};
      19              :     ArgResult r;
      20            2 :     int rc = arg_parse(2, argv, &r);
      21            2 :     ASSERT(rc == ARG_OK,        "me: ARG_OK");
      22            2 :     ASSERT(r.command == CMD_ME, "me: CMD_ME");
      23              : }
      24              : 
      25            2 : static void test_dispatch_self(void) {
      26            2 :     char *argv[] = {"tg-cli", "self", NULL};
      27              :     ArgResult r;
      28            2 :     int rc = arg_parse(2, argv, &r);
      29            2 :     ASSERT(rc == ARG_OK,        "self: ARG_OK");
      30            2 :     ASSERT(r.command == CMD_ME, "self: CMD_ME");
      31              : }
      32              : 
      33            2 : static void test_dispatch_dialogs(void) {
      34            2 :     char *argv[] = {"tg-cli", "dialogs", NULL};
      35              :     ArgResult r;
      36            2 :     int rc = arg_parse(2, argv, &r);
      37            2 :     ASSERT(rc == ARG_OK,               "dialogs: ARG_OK");
      38            2 :     ASSERT(r.command == CMD_DIALOGS,   "dialogs: CMD_DIALOGS");
      39              : }
      40              : 
      41            2 : static void test_dispatch_history(void) {
      42            2 :     char *argv[] = {"tg-cli", "history", "@peer", NULL};
      43              :     ArgResult r;
      44            2 :     int rc = arg_parse(3, argv, &r);
      45            2 :     ASSERT(rc == ARG_OK,               "history: ARG_OK");
      46            2 :     ASSERT(r.command == CMD_HISTORY,   "history: CMD_HISTORY");
      47            2 :     ASSERT(strcmp(r.peer, "@peer") == 0, "history: peer set");
      48              : }
      49              : 
      50            2 : static void test_dispatch_search(void) {
      51            2 :     char *argv[] = {"tg-cli", "search", "hello", NULL};
      52              :     ArgResult r;
      53            2 :     int rc = arg_parse(3, argv, &r);
      54            2 :     ASSERT(rc == ARG_OK,               "search: ARG_OK");
      55            2 :     ASSERT(r.command == CMD_SEARCH,    "search: CMD_SEARCH");
      56              : }
      57              : 
      58            2 : static void test_dispatch_contacts(void) {
      59            2 :     char *argv[] = {"tg-cli", "contacts", NULL};
      60              :     ArgResult r;
      61            2 :     int rc = arg_parse(2, argv, &r);
      62            2 :     ASSERT(rc == ARG_OK,               "contacts: ARG_OK");
      63            2 :     ASSERT(r.command == CMD_CONTACTS,  "contacts: CMD_CONTACTS");
      64              : }
      65              : 
      66            2 : static void test_dispatch_user_info(void) {
      67            2 :     char *argv[] = {"tg-cli", "user-info", "@durov", NULL};
      68              :     ArgResult r;
      69            2 :     int rc = arg_parse(3, argv, &r);
      70            2 :     ASSERT(rc == ARG_OK,               "user-info: ARG_OK");
      71            2 :     ASSERT(r.command == CMD_USER_INFO, "user-info: CMD_USER_INFO");
      72            2 :     ASSERT(strcmp(r.peer, "@durov") == 0, "user-info: peer set");
      73              : }
      74              : 
      75            2 : static void test_dispatch_watch(void) {
      76            2 :     char *argv[] = {"tg-cli", "watch", NULL};
      77              :     ArgResult r;
      78            2 :     int rc = arg_parse(2, argv, &r);
      79            2 :     ASSERT(rc == ARG_OK,               "watch: ARG_OK");
      80            2 :     ASSERT(r.command == CMD_WATCH,     "watch: CMD_WATCH");
      81              : }
      82              : 
      83            2 : static void test_dispatch_download(void) {
      84            2 :     char *argv[] = {"tg-cli", "download", "@peer", "42", NULL};
      85              :     ArgResult r;
      86            2 :     int rc = arg_parse(4, argv, &r);
      87            2 :     ASSERT(rc == ARG_OK,               "download: ARG_OK");
      88            2 :     ASSERT(r.command == CMD_DOWNLOAD,  "download: CMD_DOWNLOAD");
      89            2 :     ASSERT(r.msg_id == 42,             "download: msg_id 42");
      90              : }
      91              : 
      92            2 : static void test_dispatch_login(void) {
      93            2 :     char *argv[] = {"tg-cli", "login", NULL};
      94              :     ArgResult r;
      95            2 :     int rc = arg_parse(2, argv, &r);
      96            2 :     ASSERT(rc == ARG_OK,               "login: ARG_OK");
      97            2 :     ASSERT(r.command == CMD_LOGIN,     "login: CMD_LOGIN");
      98            2 :     ASSERT(r.api_id_str  == NULL,      "login: api_id_str NULL");
      99            2 :     ASSERT(r.api_hash_str == NULL,     "login: api_hash_str NULL");
     100            2 :     ASSERT(r.force == 0,               "login: force 0");
     101              : }
     102              : 
     103            2 : static void test_dispatch_login_batch(void) {
     104            2 :     char *argv[] = {"tg-cli", "login",
     105              :                     "--api-id",   "12345",
     106              :                     "--api-hash", "deadbeefdeadbeefdeadbeefdeadbeef",
     107              :                     "--force",    NULL};
     108              :     ArgResult r;
     109            2 :     int rc = arg_parse(7, argv, &r);
     110            2 :     ASSERT(rc == ARG_OK,               "login batch: ARG_OK");
     111            2 :     ASSERT(r.command == CMD_LOGIN,     "login batch: CMD_LOGIN");
     112            2 :     ASSERT(strcmp(r.api_id_str,  "12345")                             == 0,
     113              :            "login batch: api_id_str");
     114            2 :     ASSERT(strcmp(r.api_hash_str, "deadbeefdeadbeefdeadbeefdeadbeef") == 0,
     115              :            "login batch: api_hash_str");
     116            2 :     ASSERT(r.force == 1,               "login batch: force 1");
     117              : }
     118              : 
     119            2 : void run_tg_cli_read_dispatch_tests(void) {
     120            2 :     RUN_TEST(test_dispatch_me);
     121            2 :     RUN_TEST(test_dispatch_self);
     122            2 :     RUN_TEST(test_dispatch_dialogs);
     123            2 :     RUN_TEST(test_dispatch_history);
     124            2 :     RUN_TEST(test_dispatch_search);
     125            2 :     RUN_TEST(test_dispatch_contacts);
     126            2 :     RUN_TEST(test_dispatch_user_info);
     127            2 :     RUN_TEST(test_dispatch_watch);
     128            2 :     RUN_TEST(test_dispatch_download);
     129            2 :     RUN_TEST(test_dispatch_login);
     130            2 :     RUN_TEST(test_dispatch_login_batch);
     131            2 : }
        

Generated by: LCOV version 2.0-1