From 084125bc4c19af0f2ac4d53a1afbec3cc16f45e6 Mon Sep 17 00:00:00 2001 From: Dave Davenport Date: Sat, 29 Apr 2017 17:51:38 +0200 Subject: [Test] Play with check. --- .travis.yml | 1 + Makefile.am | 4 +- configure.ac | 1 + test/mode-test.c | 119 +++++++++++++++++++++++++++++++++++++++++++++---------- 4 files changed, 101 insertions(+), 24 deletions(-) diff --git a/.travis.yml b/.travis.yml index f52d9cf9..7a73af2a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -22,6 +22,7 @@ addons: - autoconf - automake - make + - check - xutils-dev - libpango1.0-dev - libcairo2-dev diff --git a/Makefile.am b/Makefile.am index 50cbcdd1..9e4b9de4 100644 --- a/Makefile.am +++ b/Makefile.am @@ -452,8 +452,8 @@ helper_config_cmdline_parser_SOURCES=\ test/helper-config-cmdline-parser.c -mode_test_CFLAGS=$(textbox_test_CFLAGS) -mode_test_LDADD=$(textbox_test_LDADD) +mode_test_CFLAGS=$(textbox_test_CFLAGS) $(check_CFLAGS) +mode_test_LDADD=$(textbox_test_LDADD) $(check_LIBS) mode_test_SOURCES=\ config/config.c\ test/mode-test.c\ diff --git a/configure.ac b/configure.ac index 4fcc5158..19e7afe3 100644 --- a/configure.ac +++ b/configure.ac @@ -119,6 +119,7 @@ GW_CHECK_XCB([xcb-aux xcb-xkb xkbcommon >= 0.5.0 xkbcommon-x11 xcb-ewmh xcb-iccc PKG_CHECK_MODULES([pango], [pango pangocairo]) PKG_CHECK_MODULES([cairo], [cairo cairo-xcb]) PKG_CHECK_MODULES([libsn], [libstartup-notification-1.0 ]) +PKG_CHECK_MODULES([check], [check]) dnl --------------------------------------------------------------------- diff --git a/test/mode-test.c b/test/mode-test.c index 05e9410c..5a7500ea 100644 --- a/test/mode-test.c +++ b/test/mode-test.c @@ -38,20 +38,10 @@ #include #include #include -unsigned int test =0; -#define TASSERT( a ) { \ - assert ( a ); \ - printf ( "Test %3i passed (%s)\n", ++test, # a ); \ -} +#include + +#include -#define TASSERTE( a, b ) { \ - if ( ( a ) == ( b ) ) { \ - printf ( "Test %i passed (%s == %s) (%u == %u)\n", ++test, # a, # b, a, b ); \ - }else { \ - printf ( "Test %i failed (%s == %s) (%u != %u)\n", ++test, # a, # b, a, b ); \ - abort ( ); \ - } \ -} void rofi_add_error_message ( GString *msg ) { } @@ -86,23 +76,108 @@ gboolean x11_parse_key ( const char *combo, unsigned int *mod, xkb_keysym_t *key } -int main ( G_GNUC_UNUSED int argc, G_GNUC_UNUSED char **argv ) +void test_mode_setup ( void ) { - setup_abe (); - TASSERTE ( mode_init ( &help_keys_mode ), TRUE ); + ck_assert_int_eq ( mode_init ( &help_keys_mode ), TRUE); +} +void test_mode_teardown (void ) +{ + mode_destroy ( &help_keys_mode ); +} +START_TEST(test_mode_create) +{ + ck_assert_ptr_nonnull ( help_keys_mode.private_data ); +} +END_TEST + +START_TEST(test_mode_destroy) +{ + mode_destroy ( &help_keys_mode ); + ck_assert_ptr_null ( help_keys_mode.private_data ); +} +END_TEST + +START_TEST(test_mode_num_items) +{ unsigned int rows = mode_get_num_entries ( &help_keys_mode); - TASSERTE ( rows , 64); - - for ( int i =0; i < rows; i++ ){ + ck_assert_int_eq ( rows, 64); + for ( unsigned int i =0; i < rows; i++ ){ int state = 0; GList *list = NULL; char *v = mode_get_display_value ( &help_keys_mode, i, &state, &list, TRUE ); - TASSERT ( v != NULL ); + ck_assert_ptr_nonnull ( v ); g_free ( v ); v = mode_get_display_value ( &help_keys_mode, i, &state, &list, FALSE ); - TASSERT ( v == NULL ); + ck_assert_ptr_null ( v ); } - mode_destroy ( &help_keys_mode ); } +END_TEST + +START_TEST(test_mode_result) +{ + char *res; + ck_assert_int_eq ( mode_result ( &help_keys_mode, MENU_NEXT, &res,0), NEXT_DIALOG); + ck_assert_int_eq ( mode_result ( &help_keys_mode, MENU_PREVIOUS, &res,0), PREVIOUS_DIALOG); + ck_assert_int_eq ( mode_result ( &help_keys_mode, MENU_QUICK_SWITCH|1, &res,0), 1); + ck_assert_int_eq ( mode_result ( &help_keys_mode, MENU_QUICK_SWITCH|2, &res,0), 2); + +} +END_TEST + +START_TEST(test_mode_match_entry) +{ + GRegex **t = tokenize( "primary-paste", FALSE ); + ck_assert_ptr_nonnull ( t ); + + ck_assert_int_eq ( mode_token_match ( &help_keys_mode, t, 0), TRUE ); + ck_assert_int_eq ( mode_token_match ( &help_keys_mode, t, 1), FALSE ); + tokenize_free ( t ); + t = tokenize( "-paste", FALSE ); + ck_assert_ptr_nonnull ( t ); + + ck_assert_int_eq ( mode_token_match ( &help_keys_mode, t, 0), TRUE ); + ck_assert_int_eq ( mode_token_match ( &help_keys_mode, t, 1), TRUE ); + ck_assert_int_eq ( mode_token_match ( &help_keys_mode, t, 2), FALSE ); + tokenize_free ( t ); + +} +END_TEST + +Suite * mode_suite (void) +{ + Suite *s; + TCase *tc_core; + + s = suite_create("Mode"); + + /* Core test case */ + tc_core = tcase_create("HelpKeys"); + tcase_add_checked_fixture(tc_core, test_mode_setup, test_mode_teardown); + tcase_add_test(tc_core, test_mode_create); + tcase_add_test(tc_core, test_mode_num_items); + tcase_add_test(tc_core, test_mode_result ); + tcase_add_test(tc_core, test_mode_destroy); + tcase_add_test(tc_core, test_mode_match_entry ); + suite_add_tcase(s, tc_core); + + return s; +} + + +int main ( G_GNUC_UNUSED int argc, G_GNUC_UNUSED char **argv ) +{ + setup_abe (); + int number_failed = 0; + Suite *s; + SRunner *sr; + + s = mode_suite(); + sr = srunner_create(s); + + srunner_run_all(sr, CK_NORMAL); + number_failed = srunner_ntests_failed(sr); + srunner_free(sr); + return (number_failed == 0) ? EXIT_SUCCESS : EXIT_FAILURE; +} -- cgit v1.2.3