tests/test-parser.c
changeset 171 118ca6c4520e
parent 170 bba590bac876
child 397 5e2ad0e0704a
equal deleted inserted replaced
170:bba590bac876 171:118ca6c4520e
    17  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    17  * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
    18  * Boston, MA 02111-1307, USA.
    18  * Boston, MA 02111-1307, USA.
    19  */
    19  */
    20 
    20 
    21 #include <stdlib.h>
    21 #include <stdlib.h>
    22 #include <check.h>
    22 #include <check.h> 
       
    23 #include <glib.h>
       
    24 
       
    25 #include "loudmouth/lm-parser.h"
       
    26 
       
    27 static GSList *
       
    28 get_files (const gchar *prefix) 
       
    29 {
       
    30 	GSList      *list = NULL;
       
    31 	GError      *error = NULL;
       
    32 	GDir        *dir;
       
    33 	const gchar *name;
       
    34 	
       
    35 	dir = g_dir_open (PARSER_TEST_DIR, 0, &error);
       
    36 
       
    37 	if (!dir) {
       
    38 		g_error ("Failed to open test file directory '%s' due to: %s",
       
    39 			 PARSER_TEST_DIR, error->message);
       
    40 		g_clear_error (&error);
       
    41 
       
    42 		return NULL;
       
    43 	}
       
    44 	
       
    45 
       
    46 	while ((name = g_dir_read_name (dir))) {
       
    47 		/* Find *.xml */
       
    48 
       
    49 		if (g_str_has_prefix (name, prefix) &&
       
    50 		    g_str_has_suffix (name, ".xml")) {
       
    51 			gchar *file_path;
       
    52 
       
    53 			file_path = g_strconcat (PARSER_TEST_DIR, "/", name, 
       
    54 						 NULL);
       
    55 
       
    56 			list = g_slist_prepend (list, file_path);
       
    57 		}
       
    58 	}
       
    59 
       
    60 	g_dir_close (dir);
       
    61 	g_clear_error (&error);
       
    62 
       
    63 	return list;
       
    64 }
       
    65 
       
    66 static void
       
    67 test_parser_with_file (const gchar *file_path, gboolean is_valid)
       
    68 {
       
    69 	LmParser *parser;
       
    70 	gchar    *file_contents;
       
    71 	GError   *error = NULL;
       
    72 	gsize     length;
       
    73 
       
    74 	parser = lm_parser_new (NULL, NULL, NULL);
       
    75 	if (!g_file_get_contents (file_path,
       
    76 				  &file_contents, &length, 
       
    77 				  &error)) {
       
    78 		g_error ("Couldn't read file '%s': %s",
       
    79 			 file_path, error->message);
       
    80 		g_clear_error (&error);
       
    81 		return;
       
    82 	}
       
    83 	    
       
    84 	lm_parser_parse (parser, file_contents);
       
    85 	lm_parser_free (parser);
       
    86 	g_free (file_contents);
       
    87 }
    23 
    88 
    24 static Suite *
    89 static Suite *
    25 create_lm_parser_suite ()
    90 create_lm_parser_valid_suite ()
    26 {
    91 {
    27 	Suite *suite;
    92 	Suite  *suite;
       
    93 	GSList *list, *l;
    28 
    94 
    29 	suite = suite_create ("LmParser");
    95 	suite = suite_create ("LmParser");
       
    96 
       
    97 	list = get_files ("valid");
       
    98 	for (l = list; l; l = l->next) {
       
    99 		g_print ("VALID: %s\n", (const gchar *) l->data);
       
   100 		test_parser_with_file ((const gchar *) l->data, TRUE);
       
   101 		g_free (l->data);
       
   102 	}
       
   103 	g_slist_free (list);
       
   104 
       
   105 	return suite;
       
   106 }
       
   107 
       
   108 static Suite *
       
   109 create_lm_parser_invalid_suite ()
       
   110 {
       
   111 	Suite  *suite;
       
   112 	GSList *list, *l;
       
   113 
       
   114 	suite = suite_create ("LmParser");
       
   115 
       
   116 	list = get_files ("invalid");
       
   117 	for (l = list; l; l = l->next) {
       
   118 		g_print ("INVALID: %s\n", (const gchar *) l->data);
       
   119 		g_free (l->data);
       
   120 	}
       
   121 	g_slist_free (list);
    30 
   122 
    31 	return suite;
   123 	return suite;
    32 }
   124 }
    33 
   125 
    34 int 
   126 int 
    35 main (int argc, char **argv)
   127 main (int argc, char **argv)
    36 {
   128 {
    37 	SRunner *srunner;
   129 	SRunner *srunner;
    38 	int      nf;
   130 	int      nf;
    39 
   131 
    40 	srunner = srunner_create (create_lm_parser_suite ());
   132 	srunner = srunner_create (create_lm_parser_valid_suite ());
       
   133 
       
   134 	srunner_add_suite (srunner, create_lm_parser_invalid_suite ());
    41 
   135 
    42 	srunner_run_all (srunner, CK_NORMAL);
   136 	srunner_run_all (srunner, CK_NORMAL);
    43 	nf = srunner_ntests_failed (srunner);
   137 	nf = srunner_ntests_failed (srunner);
    44 
   138 
    45 	return (nf == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
   139 	return (nf == 0) ? EXIT_SUCCESS : EXIT_FAILURE;