static void test_layout (gconstpointer d) { const gchar *filename = d; gchar *expected_file; GError *error = NULL; GString *dump; gchar *diff; expected_file = get_expected_filename (filename); dump = g_string_sized_new (0); test_file (filename, dump); diff = diff_with_file (expected_file, dump->str, dump->len, &error); g_assert_no_error (error); if (diff && diff[0]) { g_printerr ("Contents don't match expected contents:\n%s", diff); g_test_fail (); g_free (diff); } g_string_free (dump, TRUE); g_free (expected_file); }
static void test_ui_file (GFile *file) { gchar *ui_file, *in_file, *out_file; GString *record; GError *error = NULL; ui_file = g_file_get_path (file); in_file = get_test_file (ui_file, ".in", TRUE); out_file = get_test_file (ui_file, ".out", TRUE); record = g_string_new (""); record_events (ui_file, in_file, record); if (out_file) { char *diff = diff_with_file (out_file, record->str, record->len, &error); g_assert_no_error (error); if (diff && diff[0]) { g_printerr ("Contents don't match expected contents:\n%s", diff); g_test_fail (); g_free (diff); } } else if (record->str[0]) { g_test_message ("Expected a reference file:\n%s", record->str); g_test_fail (); } g_string_free (record, TRUE); g_free (in_file); g_free (out_file); g_free (ui_file); }
static void test_css_file (GFile *file) { GtkCssProvider *provider; char *css, *diff; char *css_file, *reference_file, *errors_file; GString *errors; GError *error = NULL; css_file = g_file_get_path (file); errors = g_string_new (""); provider = gtk_css_provider_new (); g_signal_connect (provider, "parsing-error", G_CALLBACK (parsing_error_cb), errors); gtk_css_provider_load_from_path (provider, css_file, NULL); css = gtk_css_provider_to_string (provider); reference_file = test_get_reference_file (css_file); diff = diff_with_file (reference_file, css, -1, &error); g_assert_no_error (error); if (diff && diff[0]) { g_test_message ("Resulting CSS doesn't match reference:\n%s", diff); g_test_fail (); } g_free (css); g_free (reference_file); errors_file = test_get_errors_file (css_file); if (errors_file) { diff = diff_with_file (errors_file, errors->str, errors->len, &error); g_assert_no_error (error); if (diff && diff[0]) { g_test_message ("Errors don't match expected errors:\n%s", diff); g_test_fail (); } } else if (errors->str[0]) { g_test_message ("Unexpected errors:\n%s", errors->str); g_test_fail (); } g_free (errors_file); g_string_free (errors, TRUE); g_free (diff); g_free (css_file); }