root/tests/src/filemanager/get_random_hint.c

/* [previous][next][first][last][top][bottom][index][help]  */

DEFINITIONS

This source file includes following definitions.
  1. guess_message_value
  2. rand
  3. setup
  4. teardown
  5. START_TEST
  6. START_PARAMETRIZED_TEST
  7. main

   1 /*
   2    src/filemanager - filemanager functions.
   3    Tests for getting random hints.
   4 
   5    Copyright (C) 2013-2024
   6    Free Software Foundation, Inc.
   7 
   8    Written by:
   9    Slava Zanko <slavazanko@gmail.com>, 2013
  10 
  11    This file is part of the Midnight Commander.
  12 
  13    The Midnight Commander is free software: you can redistribute it
  14    and/or modify it under the terms of the GNU General Public License as
  15    published by the Free Software Foundation, either version 3 of the License,
  16    or (at your option) any later version.
  17 
  18    The Midnight Commander is distributed in the hope that it will be useful,
  19    but WITHOUT ANY WARRANTY; without even the implied warranty of
  20    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  21    GNU General Public License for more details.
  22 
  23    You should have received a copy of the GNU General Public License
  24    along with this program.  If not, see <http://www.gnu.org/licenses/>.
  25  */
  26 
  27 #define TEST_SUITE_NAME "/src/filemanager"
  28 
  29 #include "tests/mctest.h"
  30 
  31 #include "lib/strutil.h"
  32 #include "lib/util.h"
  33 
  34 #include "src/filemanager/filemanager.h"
  35 
  36 
  37 /* --------------------------------------------------------------------------------------------- */
  38 /* mocked functions */
  39 
  40 /* @Mock */
  41 char *
  42 guess_message_value (void)
     /* [previous][next][first][last][top][bottom][index][help]  */
  43 {
  44     return g_strdup ("not_exists");
  45 }
  46 
  47 /* --------------------------------------------------------------------------------------------- */
  48 
  49 /* @ThenReturnValue */
  50 static gboolean rand__return_value = 0;
  51 
  52 /* @Mock */
  53 int
  54 rand (void)
     /* [previous][next][first][last][top][bottom][index][help]  */
  55 {
  56     return rand__return_value;
  57 }
  58 
  59 /* --------------------------------------------------------------------------------------------- */
  60 
  61 static void
  62 setup (void)
     /* [previous][next][first][last][top][bottom][index][help]  */
  63 {
  64     mc_global.share_data_dir = (char *) TEST_SHARE_DIR;
  65     str_init_strings (NULL);
  66 }
  67 
  68 static void
  69 teardown (void)
     /* [previous][next][first][last][top][bottom][index][help]  */
  70 {
  71     str_uninit_strings ();
  72 }
  73 
  74 /* --------------------------------------------------------------------------------------------- */
  75 
  76 /* *INDENT-OFF* */
  77 START_TEST (test_not_force)
     /* [previous][next][first][last][top][bottom][index][help]  */
  78 /* *INDENT-ON* */
  79 {
  80     // given
  81     char *first_hint_for_ignore;
  82     char *actual_hint1;
  83     char *actual_hint2;
  84     char *actual_hint3;
  85 
  86     // when
  87     first_hint_for_ignore = get_random_hint (FALSE);
  88     actual_hint1 = get_random_hint (FALSE);
  89     actual_hint2 = get_random_hint (FALSE);
  90     actual_hint3 = get_random_hint (FALSE);
  91 
  92     // then
  93     mctest_assert_ptr_ne (first_hint_for_ignore, NULL);
  94     mctest_assert_str_eq (actual_hint1, "");
  95     mctest_assert_str_eq (actual_hint2, "");
  96     mctest_assert_str_eq (actual_hint3, "");
  97 
  98     g_free (actual_hint3);
  99     g_free (actual_hint2);
 100     g_free (actual_hint1);
 101     g_free (first_hint_for_ignore);
 102 }
 103 /* *INDENT-OFF* */
 104 END_TEST
 105 /* *INDENT-ON* */
 106 
 107 /* --------------------------------------------------------------------------------------------- */
 108 #define MC_HINT_FILE_SIZE 58
 109 /* @DataSource("get_random_ds") */
 110 /* *INDENT-OFF* */
 111 static const struct get_random_ds
 112 {
 113     int input_random_value;
 114 
 115     const char *expected_value;
 116 } get_random_ds[] =
 117 {
 118     { /* 0. */
 119         MC_HINT_FILE_SIZE + 2,
 120         "Para_1",
 121     },
 122     { /* 1. */
 123         MC_HINT_FILE_SIZE + 10,
 124         "Para_2_line_1 Para_2_line_2",
 125     },
 126     { /* 2. */
 127         MC_HINT_FILE_SIZE + 25,
 128         "Para_2_line_1 Para_2_line_2",
 129     },
 130     { /* 3. */
 131         MC_HINT_FILE_SIZE + 40,
 132         "Para_3",
 133     },
 134     { /* 4. */
 135         MC_HINT_FILE_SIZE + 50,
 136         "P A R A _ 4 ", /* the trailing space it's a bug, but not critical and may be omitted */
 137     },
 138 };
 139 /* *INDENT-ON* */
 140     /* @Test(dataSource = "get_random_ds") */
 141 /* *INDENT-OFF* */
 142 START_PARAMETRIZED_TEST (get_random, get_random_ds)
     /* [previous][next][first][last][top][bottom][index][help]  */
 143 /* *INDENT-ON* */
 144 {
 145     /* given */
 146     char *actual_value;
 147 
 148     rand__return_value = data->input_random_value;
 149 
 150     /* when */
 151     actual_value = get_random_hint (TRUE);
 152 
 153     /* then */
 154     mctest_assert_str_eq (actual_value, data->expected_value);
 155     g_free (actual_value);
 156 }
 157 /* *INDENT-OFF* */
 158 END_PARAMETRIZED_TEST
 159 /* *INDENT-ON* */
 160 
 161 /* --------------------------------------------------------------------------------------------- */
 162 
 163 int
 164 main (void)
     /* [previous][next][first][last][top][bottom][index][help]  */
 165 {
 166     TCase *tc_core;
 167 
 168     tc_core = tcase_create ("Core");
 169 
 170     tcase_add_checked_fixture (tc_core, setup, teardown);
 171 
 172     /* Add new tests here: *************** */
 173     tcase_add_test (tc_core, test_not_force);
 174     mctest_add_parameterized_test (tc_core, get_random, get_random_ds);
 175     /* *********************************** */
 176 
 177     return mctest_run_all (tc_core);
 178 }
 179 
 180 /* --------------------------------------------------------------------------------------------- */

/* [previous][next][first][last][top][bottom][index][help]  */