From 467677ee6a0df00dc76ae74d035f1377f351f49c Mon Sep 17 00:00:00 2001 From: Slava Zanko Date: Mon, 19 Nov 2012 16:15:05 +0300 Subject: [PATCH] Added tests for name_quote function. Signed-off-by: Slava Zanko --- tests/lib/Makefile.am | 4 ++ tests/lib/name_quote.c | 140 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 144 insertions(+) create mode 100644 tests/lib/name_quote.c diff --git a/tests/lib/Makefile.am b/tests/lib/Makefile.am index 959e618d1..00ca581a7 100644 --- a/tests/lib/Makefile.am +++ b/tests/lib/Makefile.am @@ -6,6 +6,7 @@ LIBS=@CHECK_LIBS@ $(top_builddir)/lib/libmc.la TESTS = \ library_independ \ mc_build_filename \ + name_quote \ serialize \ x_basename @@ -17,6 +18,9 @@ library_independ_SOURCES = \ mc_build_filename_SOURCES = \ mc_build_filename.c +name_quote_SOURCES = \ + name_quote.c + serialize_SOURCES = \ serialize.c diff --git a/tests/lib/name_quote.c b/tests/lib/name_quote.c new file mode 100644 index 000000000..16fce5171 --- /dev/null +++ b/tests/lib/name_quote.c @@ -0,0 +1,140 @@ +/* + lib/vfs - Quote file names + + Copyright (C) 2011 + The Free Software Foundation, Inc. + + Written by: + Slava Zanko , 2011 + + This file is part of the Midnight Commander. + + The Midnight Commander is free software: you can redistribute it + and/or modify it under the terms of the GNU General Public License as + published by the Free Software Foundation, either version 3 of the License, + or (at your option) any later version. + + The Midnight Commander is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . +*/ + +#define TEST_SUITE_NAME "/lib/util" + +#include + +#include + +#include "lib/global.h" +#include "lib/util.h" + + +static void +setup (void) +{ +} + +static void +teardown (void) +{ +} + +/* --------------------------------------------------------------------------------------------- */ + +static const struct data_source1_struct +{ + gboolean input_quote_percent; + const char *input_string; + + const char *expected_string; +} data_source1[] = +{ + { TRUE, "%%", "%%%%"}, + { FALSE, "%%", "%%"}, +}; + +START_TEST (quote_percent_test) +{ + // given + char *actual_string; + const struct data_source1_struct test_data = data_source1[_i]; + + // when + actual_string = name_quote (test_data.input_string, test_data.input_quote_percent); + + // then + g_assert_cmpstr (actual_string, ==, test_data.expected_string); + + g_free (actual_string); +} +END_TEST + +/* --------------------------------------------------------------------------------------------- */ + +static const struct data_source2_struct +{ + const char *input_string; + + const char *expected_string; +} data_source2[] = +{ + {"-", "./-"}, + {"blabla-", "blabla-"}, + {"\r\n\t", "\\\r\\\n\\\t"}, + {"'\\\";?|[]{}<>`!$&*()", "\\'\\\\\\\"\\;\\?\\|\\[\\]\\{\\}\\<\\>\\`\\!\\$\\&\\*\\(\\)"}, + {"a b c ", "a\\ b\\ c\\ "}, + {"#", "\\#"}, + {"blabla#", "blabla#"}, + {"~", "\\~"}, + {"blabla~", "blabla~"}, +}; + +START_TEST (name_quote_test) +{ + // given + char *actual_string; + const struct data_source2_struct test_data = data_source2[_i]; + + // when + actual_string = name_quote (test_data.input_string, FALSE); + + // then + g_assert_cmpstr (actual_string, ==, test_data.expected_string); + + g_free (actual_string); +} +END_TEST + +/* --------------------------------------------------------------------------------------------- */ + +int +main (void) +{ + int number_failed; + + Suite *s = suite_create (TEST_SUITE_NAME); + TCase *tc_core = tcase_create ("Core"); + SRunner *sr; + + tcase_add_checked_fixture (tc_core, setup, teardown); + + /* Add new tests here: *************** */ + tcase_add_loop_test (tc_core, quote_percent_test, 0, sizeof(data_source1)/sizeof(data_source1[0])); + + tcase_add_loop_test (tc_core, name_quote_test, 0, sizeof(data_source2)/sizeof(data_source2[0])); + /* *********************************** */ + + suite_add_tcase (s, tc_core); + sr = srunner_create (s); + srunner_set_log (sr, "serialize.log"); + srunner_run_all (sr, CK_NORMAL); + number_failed = srunner_ntests_failed (sr); + srunner_free (sr); + return (number_failed == 0) ? 0 : 1; +} + +/* --------------------------------------------------------------------------------------------- */ -- 2.11.4.GIT