--- a/tests/test-parser.c Fri Sep 08 12:29:54 2006 +0000
+++ b/tests/test-parser.c Sun Sep 10 12:24:09 2006 +0000
@@ -19,15 +19,107 @@
*/
#include <stdlib.h>
-#include <check.h>
+#include <check.h>
+#include <glib.h>
+
+#include "loudmouth/lm-parser.h"
+
+static GSList *
+get_files (const gchar *prefix)
+{
+ GSList *list = NULL;
+ GError *error = NULL;
+ GDir *dir;
+ const gchar *name;
+
+ dir = g_dir_open (PARSER_TEST_DIR, 0, &error);
+
+ if (!dir) {
+ g_error ("Failed to open test file directory '%s' due to: %s",
+ PARSER_TEST_DIR, error->message);
+ g_clear_error (&error);
+
+ return NULL;
+ }
+
+
+ while ((name = g_dir_read_name (dir))) {
+ /* Find *.xml */
+
+ if (g_str_has_prefix (name, prefix) &&
+ g_str_has_suffix (name, ".xml")) {
+ gchar *file_path;
+
+ file_path = g_strconcat (PARSER_TEST_DIR, "/", name,
+ NULL);
+
+ list = g_slist_prepend (list, file_path);
+ }
+ }
+
+ g_dir_close (dir);
+ g_clear_error (&error);
+
+ return list;
+}
+
+static void
+test_parser_with_file (const gchar *file_path, gboolean is_valid)
+{
+ LmParser *parser;
+ gchar *file_contents;
+ GError *error = NULL;
+ gsize length;
+
+ parser = lm_parser_new (NULL, NULL, NULL);
+ if (!g_file_get_contents (file_path,
+ &file_contents, &length,
+ &error)) {
+ g_error ("Couldn't read file '%s': %s",
+ file_path, error->message);
+ g_clear_error (&error);
+ return;
+ }
+
+ lm_parser_parse (parser, file_contents);
+ lm_parser_free (parser);
+ g_free (file_contents);
+}
static Suite *
-create_lm_parser_suite ()
+create_lm_parser_valid_suite ()
{
- Suite *suite;
+ Suite *suite;
+ GSList *list, *l;
suite = suite_create ("LmParser");
+ list = get_files ("valid");
+ for (l = list; l; l = l->next) {
+ g_print ("VALID: %s\n", (const gchar *) l->data);
+ test_parser_with_file ((const gchar *) l->data, TRUE);
+ g_free (l->data);
+ }
+ g_slist_free (list);
+
+ return suite;
+}
+
+static Suite *
+create_lm_parser_invalid_suite ()
+{
+ Suite *suite;
+ GSList *list, *l;
+
+ suite = suite_create ("LmParser");
+
+ list = get_files ("invalid");
+ for (l = list; l; l = l->next) {
+ g_print ("INVALID: %s\n", (const gchar *) l->data);
+ g_free (l->data);
+ }
+ g_slist_free (list);
+
return suite;
}
@@ -37,7 +129,9 @@
SRunner *srunner;
int nf;
- srunner = srunner_create (create_lm_parser_suite ());
+ srunner = srunner_create (create_lm_parser_valid_suite ());
+
+ srunner_add_suite (srunner, create_lm_parser_invalid_suite ());
srunner_run_all (srunner, CK_NORMAL);
nf = srunner_ntests_failed (srunner);