Zero struct stat tv_nsec (if supported) whenever st is filled manually
[midnight-commander.git] / tests / lib / vfs / vfs_get_encoding.c
bloba62ecd90fe533acb9d99eafd6d9ea6b7946c71a1
1 /*
2 lib/vfs - test vfs_get_encoding() functionality
4 Copyright (C) 2013-2017
5 Free Software Foundation, Inc.
7 Written by:
8 Andrew Borodin <aborodin@vmail.ru>, 2013
10 This file is part of the Midnight Commander.
12 The Midnight Commander is free software: you can redistribute it
13 and/or modify it under the terms of the GNU General Public License as
14 published by the Free Software Foundation, either version 3 of the License,
15 or (at your option) any later version.
17 The Midnight Commander is distributed in the hope that it will be useful,
18 but WITHOUT ANY WARRANTY; without even the implied warranty of
19 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20 GNU General Public License for more details.
22 You should have received a copy of the GNU General Public License
23 along with this program. If not, see <http://www.gnu.org/licenses/>.
26 #define TEST_SUITE_NAME "/lib/vfs"
28 #include "tests/mctest.h"
30 #include "lib/vfs/path.c" /* for testing of static vfs_get_encoding() */
32 /* --------------------------------------------------------------------------------------------- */
34 /* @Before */
35 static void
36 setup (void)
40 /* --------------------------------------------------------------------------------------------- */
42 /* @After */
43 static void
44 teardown (void)
48 /* --------------------------------------------------------------------------------------------- */
50 /* @DataSource("test_vfs_get_encoding_ds") */
51 /* *INDENT-OFF* */
52 static const struct test_vfs_get_encoding_ds
54 const char *path;
55 const char *expected_encoding;
56 } test_vfs_get_encoding_ds[] =
58 { /* 0 */
59 "",
60 NULL
62 { /* 1 */
63 "aaaa",
64 NULL
66 { /* 2 */
67 "/aaaa",
68 NULL
70 { /* 3 */
71 "aaaa/bbbb",
72 NULL
74 { /* 4 */
75 "/aaaa/bbbb",
76 NULL
78 { /* 5 */
79 "#enc:UTF-8/aaaa",
80 "UTF-8"
82 { /* 6 */
83 "/#enc:UTF-8/aaaa",
84 "UTF-8"
86 { /* 7 */
87 "/aaaa/#enc:UTF-8/bbbb",
88 "UTF-8"
90 { /* 8 */
91 "/aaaa/#enc:UTF-8/bbbb/#enc:KOI8-R",
92 "KOI8-R"
94 { /* 9 */
95 "/aaaa/#enc:UTF-8/bbbb/#enc:KOI8-R/cccc",
96 "KOI8-R"
98 { /* 10 */
99 "/aaaa/#enc:UTF-8/bbbb/cccc#enc:KOI8-R/dddd",
100 "UTF-8"
102 { /* 11 */
103 "/#enc:UTF-8/bbbb/cccc#enc:KOI8-R/dddd",
104 "UTF-8"
106 { /* 12 */
107 "#enc:UTF-8/bbbb/cccc#enc:KOI8-R/dddd",
108 "UTF-8"
110 { /* 13 */
111 "aaaa#enc:UTF-8/bbbb/cccc#enc:KOI8-R/dddd",
112 NULL
114 { /* 14 */
115 "/aaaa/#enc:UTF-8/bbbb/#enc:KOI8-R#enc:IBM866/cccc",
116 "KOI8-R#enc:IBM866"
119 /* *INDENT-ON* */
121 /* @Test(dataSource = "test_vfs_get_encoding_ds") */
122 /* *INDENT-OFF* */
123 START_PARAMETRIZED_TEST (test_vfs_get_encoding, test_vfs_get_encoding_ds)
124 /* *INDENT-ON* */
126 /* given */
127 char *actual_encoding;
129 /* when */
130 actual_encoding = vfs_get_encoding (data->path, -1);
132 /* then */
133 mctest_assert_str_eq (actual_encoding, data->expected_encoding);
135 g_free (actual_encoding);
137 /* *INDENT-OFF* */
138 END_PARAMETRIZED_TEST
139 /* *INDENT-ON* */
141 /* --------------------------------------------------------------------------------------------- */
144 main (void)
146 int number_failed;
148 Suite *s = suite_create (TEST_SUITE_NAME);
149 TCase *tc_core = tcase_create ("Core");
150 SRunner *sr;
152 tcase_add_checked_fixture (tc_core, setup, teardown);
154 /* Add new tests here: *************** */
155 mctest_add_parameterized_test (tc_core, test_vfs_get_encoding, test_vfs_get_encoding_ds);
156 /* *********************************** */
158 suite_add_tcase (s, tc_core);
159 sr = srunner_create (s);
160 srunner_set_log (sr, "vfs_get_encoding.log");
161 srunner_run_all (sr, CK_ENV);
162 number_failed = srunner_ntests_failed (sr);
163 srunner_free (sr);
164 return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
167 /* --------------------------------------------------------------------------------------------- */