1
1
//! Tests with reference images.
2
//!
3
//! This is the bulk of librsvg's black-box tests.  In principle, each test takes an SVG file, renders
4
//! it to a raster image, and compares that image to a reference image stored on disk.  If the images
5
//! are "too different", the test fails.  We allow for minor differences in rendering to account for
6
//! antialiasing artifacts, floating-point variations, and such.
7
//!
8

            
9
use rsvg::tests_only::{SharedImageSurface, SurfaceType};
10
use rsvg::{CairoRenderer, IntrinsicDimensions, Length, Loader};
11

            
12
use rsvg::test_utils::reference_utils::{Compare, Evaluate, Reference};
13
use rsvg::test_utils::{setup_font_map, setup_language};
14
use rsvg::{test_compare_render_output, test_svg_reference};
15

            
16
use std::path::{Path, PathBuf};
17

            
18
// The original reference images from the SVG1.1 test suite are at 72 DPI.
19
const TEST_SUITE_DPI: f64 = 72.0;
20

            
21
// https://gitlab.gnome.org/GNOME/librsvg/issues/91
22
//
23
// We were computing some offsets incorrectly if the initial transformation matrix
24
// passed to rsvg_handle_render_cairo() was not the identity matrix.  So,
25
// we create a surface with a "frame" around the destination for the image,
26
// and then only consider the pixels inside the frame.  This will require us
27
// to have a non-identity transformation (i.e. a translation matrix), which
28
// will test for this bug.
29
//
30
// The frame size is meant to be a ridiculous number to simulate an arbitrary
31
// offset.
32
const FRAME_SIZE: i32 = 47;
33

            
34
733
fn reference_test(path: &Path) {
35
733
    setup_language();
36
733
    setup_font_map();
37

            
38
733
    let path_base_name = path.file_stem().unwrap().to_string_lossy().to_owned();
39
727
    if path_base_name.starts_with("ignore") {
40
        return;
41
    }
42

            
43
722
    let reference = reference_path(path);
44

            
45
728
    let handle = Loader::new()
46
        .read_path(path)
47
        .unwrap_or_else(|e| panic!("could not load: {}", e));
48

            
49
728
    let renderer = CairoRenderer::new(&handle)
50
        .test_mode(true)
51
        .with_dpi(TEST_SUITE_DPI, TEST_SUITE_DPI);
52
728
    let (width, height) = image_size(renderer.intrinsic_dimensions(), TEST_SUITE_DPI);
53

            
54
722
    let surface = cairo::ImageSurface::create(
55
722
        cairo::Format::ARgb32,
56
722
        width + 2 * FRAME_SIZE,
57
722
        height + 2 * FRAME_SIZE,
58
    )
59
    .unwrap();
60

            
61
    {
62
724
        let cr = cairo::Context::new(&surface).expect("Failed to create a cairo context");
63
724
        cr.translate(f64::from(FRAME_SIZE), f64::from(FRAME_SIZE));
64
722
        renderer
65
            .render_document(
66
                &cr,
67
720
                &cairo::Rectangle::new(0.0, 0.0, f64::from(width), f64::from(height)),
68
            )
69
            .unwrap();
70
722
    }
71

            
72
722
    let surface = extract_rectangle(&surface, FRAME_SIZE, FRAME_SIZE, width, height).unwrap();
73

            
74
722
    let output_surf = SharedImageSurface::wrap(surface, SurfaceType::SRgb).unwrap();
75

            
76
1444
    Reference::from_png(reference)
77
        .compare(&output_surf)
78
722
        .evaluate(&output_surf, &path_base_name);
79
727
}
80

            
81
/// Turns `/foo/bar/baz.svg` into `/foo/bar/baz-ref.png`.
82
722
fn reference_path(path: &Path) -> PathBuf {
83
722
    let basename = path.file_stem().unwrap();
84

            
85
722
    let mut reference_filename = basename.to_string_lossy().into_owned();
86
722
    reference_filename.push_str("-ref.png");
87

            
88
722
    path.with_file_name(reference_filename)
89
722
}
90

            
91
722
fn extract_rectangle(
92
    source: &cairo::ImageSurface,
93
    x: i32,
94
    y: i32,
95
    w: i32,
96
    h: i32,
97
) -> Result<cairo::ImageSurface, cairo::Error> {
98
722
    let dest = cairo::ImageSurface::create(cairo::Format::ARgb32, w, h)?;
99
722
    let cr = cairo::Context::new(&dest).expect("Failed to create a cairo context");
100
722
    cr.set_source_surface(source, f64::from(-x), f64::from(-y))
101
        .unwrap();
102
722
    cr.paint().unwrap();
103
722
    Ok(dest)
104
722
}
105

            
106
/// Computes the (width, height) pixel size at which an SVG should be rendered, based on its intrinsic dimensions.
107
///
108
/// # Panics:
109
///
110
/// Will panic if none of the following conditions are met:
111
///
112
/// * Width and height both exist
113
/// * Width and height do not exist, but viewBox exists.
114
722
fn image_size(dim: IntrinsicDimensions, dpi: f64) -> (i32, i32) {
115
    let IntrinsicDimensions {
116
722
        width,
117
722
        height,
118
722
        vbox,
119
    } = dim;
120

            
121
    use rsvg::LengthUnit::*;
122

            
123
722
    if !(has_supported_unit(&width) && has_supported_unit(&height)) {
124
        panic!("SVG has unsupported unit type in width or height");
125
    }
126

            
127
    #[rustfmt::skip]
128
1444
    let (width, height) = match (width, height, vbox) {
129
356
        (Length { length: w, unit: Percent },
130
178
         Length { length: h, unit: Percent }, vbox) if w == 1.0 && h == 1.0 => {
131
178
            if let Some(vbox) = vbox {
132
178
                (vbox.width(), vbox.height())
133
            } else {
134
                panic!("SVG with percentage width/height must have a viewBox");
135
            }
136
178
        }
137

            
138
        (Length { length: _, unit: Percent },
139
         Length { length: _, unit: Percent }, _) => {
140
            panic!("Test suite only supports percentage width/height at 100%");
141
        }
142

            
143
544
        (w, h, _) => {
144
544
            (normalize(&w, dpi), normalize(&h, dpi))
145
544
        }
146
    };
147

            
148
    // Keep in sync with c_api.rs
149
722
    let width = checked_i32(width.round());
150
722
    let height = checked_i32(height.round());
151

            
152
722
    (width, height)
153
722
}
154

            
155
// Keep in sync with c_api.rs
156
1442
fn checked_i32(x: f64) -> i32 {
157
1442
    cast::i32(x).expect("overflow when converting f64 to i32")
158
1442
}
159

            
160
1444
fn has_supported_unit(l: &Length) -> bool {
161
    use rsvg::LengthUnit::*;
162

            
163
1444
    match l.unit {
164
1444
        Percent | Px | In | Cm | Mm | Pt | Pc => true,
165
        _ => false,
166
    }
167
1444
}
168

            
169
const POINTS_PER_INCH: f64 = 72.0;
170
const CM_PER_INCH: f64 = 2.54;
171
const MM_PER_INCH: f64 = 25.4;
172
const PICA_PER_INCH: f64 = 6.0;
173

            
174
1087
fn normalize(l: &Length, dpi: f64) -> f64 {
175
    use rsvg::LengthUnit::*;
176

            
177
1087
    match l.unit {
178
1081
        Px => l.length,
179
        In => l.length * dpi,
180
2
        Cm => l.length * dpi / CM_PER_INCH,
181
2
        Mm => l.length * dpi / MM_PER_INCH,
182
2
        Pt => l.length * dpi / POINTS_PER_INCH,
183
        Pc => l.length * dpi / PICA_PER_INCH,
184
        _ => panic!("unsupported length unit"),
185
    }
186
1087
}
187

            
188
727
fn reftest(filename: &str) {
189
727
    let mut full_filename = PathBuf::new();
190
727
    full_filename.push("tests/fixtures/reftests");
191
727
    full_filename.push(filename);
192

            
193
727
    reference_test(&full_filename);
194
727
}
195

            
196
macro_rules! t {
197
    ($test_name:ident, $filename:expr) => {
198
        #[test]
199
1454
        fn $test_name() {
200
727
            reftest($filename);
201
1454
        }
202
    };
203
}
204

            
205
#[rustfmt::skip]
206
mod tests {
207
    use super::*;
208

            
209
    t!(a_pseudo_class_svg,                                          "a-pseudo-class.svg");
210
    t!(bug483_attribute_selectors_svg,                              "bug483-attribute-selectors.svg");
211
    t!(bug525_specificity_svg,                                      "bug525-specificity.svg");
212
    t!(css_import_svg,                                              "css-import.svg");
213
    t!(css_import_url_svg,                                          "css-import-url.svg");
214
    t!(duplicate_id_svg,                                            "duplicate-id.svg");
215
    t!(filter_component_transfer_from_reference_page_svg,           "filter-component-transfer-from-reference-page.svg");
216
    t!(filter_conv_bounds_svg,                                      "filter-conv-bounds.svg");
217
    t!(filter_conv_divisor_svg,                                     "filter-conv-divisor.svg");
218
    t!(filter_effects_region_svg,                                   "filter-effects-region.svg");
219
    t!(filter_image_from_reference_page_svg,                        "filter-image-from-reference-page.svg");
220
    t!(filter_kernel_unit_length_svg,                               "filter-kernel-unit-length.svg");
221
    t!(filter_offset_svg,                                           "filter-offset.svg");
222
    t!(font_shorthand_svg,                                          "font-shorthand.svg");
223
    t!(gzip_compressed_svg,                                         "gzip-compressed.svg");
224
    t!(hexchat_svg,                                                 "hexchat.svg");
225
    t!(ignore_filter_composite_color_interpolation_filters_svg,     "ignore-filter-composite-color-interpolation-filters.svg");
226
    t!(include_compressed_svg,                                      "include-compressed.svg");
227
    t!(include_fallback_svg,                                        "include-fallback.svg");
228
    t!(include_text_svg,                                            "include-text.svg");
229
    t!(rtl_tspan_svg,                                               "rtl-tspan.svg");
230
    t!(specificity_svg,                                             "specificity.svg");
231
    t!(structural_pseudo_classes_svg,                               "structural-pseudo-classes.svg");
232
    t!(style_with_xml_comments_svg,                                 "style-with-xml-comments.svg");
233
    t!(system_language_de_svg,                                      "system-language-de.svg");
234
    t!(system_language_en_svg,                                      "system-language-en.svg");
235
    t!(system_language_other_svg,                                   "system-language-other.svg");
236
    t!(text_objectboundingbox_svg,                                  "text-objectBoundingBox.svg");
237
    t!(xml_lang_css_inherit_svg,                                    "xml-lang-css-inherit.svg");
238
    t!(xml_lang_css_svg,                                            "xml-lang-css.svg");
239
    t!(adwaita_ac_adapter_symbolic_svg,                             "adwaita/ac-adapter-symbolic.svg");
240
    t!(adwaita_accessories_calculator_symbolic_svg,                 "adwaita/accessories-calculator-symbolic.svg");
241
    t!(adwaita_accessories_character_map_symbolic_svg,              "adwaita/accessories-character-map-symbolic.svg");
242
    t!(adwaita_accessories_dictionary_symbolic_svg,                 "adwaita/accessories-dictionary-symbolic.svg");
243
    t!(adwaita_accessories_text_editor_symbolic_svg,                "adwaita/accessories-text-editor-symbolic.svg");
244
    t!(adwaita_action_unavailable_symbolic_svg,                     "adwaita/action-unavailable-symbolic.svg");
245
    t!(adwaita_address_book_new_symbolic_svg,                       "adwaita/address-book-new-symbolic.svg");
246
    t!(adwaita_airplane_mode_symbolic_svg,                          "adwaita/airplane-mode-symbolic.svg");
247
    t!(adwaita_alarm_symbolic_svg,                                  "adwaita/alarm-symbolic.svg");
248
    t!(adwaita_applets_screenshooter_symbolic_svg,                  "adwaita/applets-screenshooter-symbolic.svg");
249
    t!(adwaita_application_certificate_symbolic_svg,                "adwaita/application-certificate-symbolic.svg");
250
    t!(adwaita_application_exit_symbolic_svg,                       "adwaita/application-exit-symbolic.svg");
251
    t!(adwaita_application_rss_xml_symbolic_svg,                    "adwaita/application-rss-xml-symbolic.svg");
252
    t!(adwaita_applications_engineering_symbolic_svg,               "adwaita/applications-engineering-symbolic.svg");
253
    t!(adwaita_applications_games_symbolic_svg,                     "adwaita/applications-games-symbolic.svg");
254
    t!(adwaita_applications_graphics_symbolic_svg,                  "adwaita/applications-graphics-symbolic.svg");
255
    t!(adwaita_applications_multimedia_symbolic_svg,                "adwaita/applications-multimedia-symbolic.svg");
256
    t!(adwaita_applications_science_symbolic_svg,                   "adwaita/applications-science-symbolic.svg");
257
    t!(adwaita_applications_system_symbolic_svg,                    "adwaita/applications-system-symbolic.svg");
258
    t!(adwaita_applications_utilities_symbolic_svg,                 "adwaita/applications-utilities-symbolic.svg");
259
    t!(adwaita_application_x_addon_symbolic_svg,                    "adwaita/application-x-addon-symbolic.svg");
260
    t!(adwaita_application_x_appliance_symbolic_svg,                "adwaita/application-x-appliance-symbolic.svg");
261
    t!(adwaita_application_x_executable_symbolic_svg,               "adwaita/application-x-executable-symbolic.svg");
262
    t!(adwaita_application_x_firmware_symbolic_svg,                 "adwaita/application-x-firmware-symbolic.svg");
263
    t!(adwaita_appointment_missed_symbolic_svg,                     "adwaita/appointment-missed-symbolic.svg");
264
    t!(adwaita_appointment_new_symbolic_svg,                        "adwaita/appointment-new-symbolic.svg");
265
    t!(adwaita_appointment_soon_symbolic_svg,                       "adwaita/appointment-soon-symbolic.svg");
266
    t!(adwaita_audio_card_symbolic_svg,                             "adwaita/audio-card-symbolic.svg");
267
    t!(adwaita_audio_headphones_symbolic_svg,                       "adwaita/audio-headphones-symbolic.svg");
268
    t!(adwaita_audio_headset_symbolic_svg,                          "adwaita/audio-headset-symbolic.svg");
269
    t!(adwaita_audio_input_microphone_symbolic_svg,                 "adwaita/audio-input-microphone-symbolic.svg");
270
    t!(adwaita_audio_speakers_symbolic_svg,                         "adwaita/audio-speakers-symbolic.svg");
271
    t!(adwaita_audio_volume_high_symbolic_svg,                      "adwaita/audio-volume-high-symbolic.svg");
272
    t!(adwaita_audio_volume_low_symbolic_svg,                       "adwaita/audio-volume-low-symbolic.svg");
273
    t!(adwaita_audio_volume_medium_symbolic_svg,                    "adwaita/audio-volume-medium-symbolic.svg");
274
    t!(adwaita_audio_volume_muted_symbolic_svg,                     "adwaita/audio-volume-muted-symbolic.svg");
275
    t!(adwaita_audio_volume_overamplified_symbolic_svg,             "adwaita/audio-volume-overamplified-symbolic.svg");
276
    t!(adwaita_audio_x_generic_symbolic_svg,                        "adwaita/audio-x-generic-symbolic.svg");
277
    t!(adwaita_auth_fingerprint_symbolic_svg,                       "adwaita/auth-fingerprint-symbolic.svg");
278
    t!(adwaita_auth_smartcard_symbolic_svg,                         "adwaita/auth-smartcard-symbolic.svg");
279
    t!(adwaita_avatar_default_symbolic_svg,                         "adwaita/avatar-default-symbolic.svg");
280
    t!(adwaita_battery_caution_charging_symbolic_svg,               "adwaita/battery-caution-charging-symbolic.svg");
281
    t!(adwaita_battery_caution_symbolic_svg,                        "adwaita/battery-caution-symbolic.svg");
282
    t!(adwaita_battery_empty_charging_symbolic_svg,                 "adwaita/battery-empty-charging-symbolic.svg");
283
    t!(adwaita_battery_empty_symbolic_svg,                          "adwaita/battery-empty-symbolic.svg");
284
    t!(adwaita_battery_full_charged_symbolic_svg,                   "adwaita/battery-full-charged-symbolic.svg");
285
    t!(adwaita_battery_full_charging_symbolic_svg,                  "adwaita/battery-full-charging-symbolic.svg");
286
    t!(adwaita_battery_full_symbolic_svg,                           "adwaita/battery-full-symbolic.svg");
287
    t!(adwaita_battery_good_charging_symbolic_svg,                  "adwaita/battery-good-charging-symbolic.svg");
288
    t!(adwaita_battery_good_symbolic_svg,                           "adwaita/battery-good-symbolic.svg");
289
    t!(adwaita_battery_low_charging_symbolic_svg,                   "adwaita/battery-low-charging-symbolic.svg");
290
    t!(adwaita_battery_low_symbolic_svg,                            "adwaita/battery-low-symbolic.svg");
291
    t!(adwaita_battery_missing_symbolic_svg,                        "adwaita/battery-missing-symbolic.svg");
292
    t!(adwaita_battery_symbolic_svg,                                "adwaita/battery-symbolic.svg");
293
    t!(adwaita_bluetooth_active_symbolic_svg,                       "adwaita/bluetooth-active-symbolic.svg");
294
    t!(adwaita_bluetooth_disabled_symbolic_svg,                     "adwaita/bluetooth-disabled-symbolic.svg");
295
    t!(adwaita_bluetooth_symbolic_svg,                              "adwaita/bluetooth-symbolic.svg");
296
    t!(adwaita_bookmark_new_symbolic_svg,                           "adwaita/bookmark-new-symbolic.svg");
297
    t!(adwaita_call_missed_symbolic_svg,                            "adwaita/call-missed-symbolic.svg");
298
    t!(adwaita_call_start_symbolic_svg,                             "adwaita/call-start-symbolic.svg");
299
    t!(adwaita_call_stop_symbolic_svg,                              "adwaita/call-stop-symbolic.svg");
300
    t!(adwaita_camera_photo_symbolic_svg,                           "adwaita/camera-photo-symbolic.svg");
301
    t!(adwaita_camera_switch_symbolic_svg,                          "adwaita/camera-switch-symbolic.svg");
302
    t!(adwaita_camera_video_symbolic_svg,                           "adwaita/camera-video-symbolic.svg");
303
    t!(adwaita_camera_web_symbolic_svg,                             "adwaita/camera-web-symbolic.svg");
304
    t!(adwaita_changes_allow_symbolic_svg,                          "adwaita/changes-allow-symbolic.svg");
305
    t!(adwaita_changes_prevent_symbolic_svg,                        "adwaita/changes-prevent-symbolic.svg");
306
    t!(adwaita_channel_insecure_symbolic_svg,                       "adwaita/channel-insecure-symbolic.svg");
307
    t!(adwaita_channel_secure_symbolic_svg,                         "adwaita/channel-secure-symbolic.svg");
308
    t!(adwaita_checkbox_checked_symbolic_svg,                       "adwaita/checkbox-checked-symbolic.svg");
309
    t!(adwaita_checkbox_mixed_symbolic_svg,                         "adwaita/checkbox-mixed-symbolic.svg");
310
    t!(adwaita_checkbox_symbolic_svg,                               "adwaita/checkbox-symbolic.svg");
311
    t!(adwaita_colorimeter_colorhug_symbolic_svg,                   "adwaita/colorimeter-colorhug-symbolic.svg");
312
    t!(adwaita_color_select_symbolic_svg,                           "adwaita/color-select-symbolic.svg");
313
    t!(adwaita_computer_apple_ipad_symbolic_svg,                    "adwaita/computer-apple-ipad-symbolic.svg");
314
    t!(adwaita_computer_fail_symbolic_svg,                          "adwaita/computer-fail-symbolic.svg");
315
    t!(adwaita_computer_symbolic_svg,                               "adwaita/computer-symbolic.svg");
316
    t!(adwaita_contact_new_symbolic_svg,                            "adwaita/contact-new-symbolic.svg");
317
    t!(adwaita_content_loading_symbolic_svg,                        "adwaita/content-loading-symbolic.svg");
318
    t!(adwaita_daytime_sunrise_symbolic_svg,                        "adwaita/daytime-sunrise-symbolic.svg");
319
    t!(adwaita_daytime_sunset_symbolic_svg,                         "adwaita/daytime-sunset-symbolic.svg");
320
    t!(adwaita_dialog_error_symbolic_svg,                           "adwaita/dialog-error-symbolic.svg");
321
    t!(adwaita_dialog_information_symbolic_svg,                     "adwaita/dialog-information-symbolic.svg");
322
    t!(adwaita_dialog_password_symbolic_svg,                        "adwaita/dialog-password-symbolic.svg");
323
    t!(adwaita_dialog_question_symbolic_svg,                        "adwaita/dialog-question-symbolic.svg");
324
    t!(adwaita_dialog_warning_symbolic_svg,                         "adwaita/dialog-warning-symbolic.svg");
325
    t!(adwaita_display_brightness_symbolic_svg,                     "adwaita/display-brightness-symbolic.svg");
326
    t!(adwaita_display_projector_symbolic_svg,                      "adwaita/display-projector-symbolic.svg");
327
    t!(adwaita_document_edit_symbolic_svg,                          "adwaita/document-edit-symbolic.svg");
328
    t!(adwaita_document_new_symbolic_svg,                           "adwaita/document-new-symbolic.svg");
329
    t!(adwaita_document_open_recent_symbolic_svg,                   "adwaita/document-open-recent-symbolic.svg");
330
    t!(adwaita_document_open_symbolic_svg,                          "adwaita/document-open-symbolic.svg");
331
    t!(adwaita_document_page_setup_symbolic_svg,                    "adwaita/document-page-setup-symbolic.svg");
332
    t!(adwaita_document_print_preview_symbolic_svg,                 "adwaita/document-print-preview-symbolic.svg");
333
    t!(adwaita_document_print_symbolic_svg,                         "adwaita/document-print-symbolic.svg");
334
    t!(adwaita_document_properties_symbolic_svg,                    "adwaita/document-properties-symbolic.svg");
335
    t!(adwaita_document_revert_symbolic_rtl_svg,                    "adwaita/document-revert-symbolic-rtl.svg");
336
    t!(adwaita_document_revert_symbolic_svg,                        "adwaita/document-revert-symbolic.svg");
337
    t!(adwaita_document_save_as_symbolic_svg,                       "adwaita/document-save-as-symbolic.svg");
338
    t!(adwaita_document_save_symbolic_svg,                          "adwaita/document-save-symbolic.svg");
339
    t!(adwaita_document_send_symbolic_svg,                          "adwaita/document-send-symbolic.svg");
340
    t!(adwaita_drive_harddisk_ieee1394_symbolic_svg,                "adwaita/drive-harddisk-ieee1394-symbolic.svg");
341
    t!(adwaita_drive_harddisk_solidstate_symbolic_svg,              "adwaita/drive-harddisk-solidstate-symbolic.svg");
342
    t!(adwaita_drive_harddisk_symbolic_svg,                         "adwaita/drive-harddisk-symbolic.svg");
343
    t!(adwaita_drive_harddisk_system_symbolic_svg,                  "adwaita/drive-harddisk-system-symbolic.svg");
344
    t!(adwaita_drive_harddisk_usb_symbolic_svg,                     "adwaita/drive-harddisk-usb-symbolic.svg");
345
    t!(adwaita_drive_multidisk_symbolic_svg,                        "adwaita/drive-multidisk-symbolic.svg");
346
    t!(adwaita_drive_optical_symbolic_svg,                          "adwaita/drive-optical-symbolic.svg");
347
    t!(adwaita_drive_removable_media_symbolic_svg,                  "adwaita/drive-removable-media-symbolic.svg");
348
    t!(adwaita_edit_clear_all_symbolic_svg,                         "adwaita/edit-clear-all-symbolic.svg");
349
    t!(adwaita_edit_clear_symbolic_rtl_svg,                         "adwaita/edit-clear-symbolic-rtl.svg");
350
    t!(adwaita_edit_clear_symbolic_svg,                             "adwaita/edit-clear-symbolic.svg");
351
    t!(adwaita_edit_copy_symbolic_svg,                              "adwaita/edit-copy-symbolic.svg");
352
    t!(adwaita_edit_cut_symbolic_svg,                               "adwaita/edit-cut-symbolic.svg");
353
    t!(adwaita_edit_delete_symbolic_svg,                            "adwaita/edit-delete-symbolic.svg");
354
    t!(adwaita_edit_find_replace_symbolic_svg,                      "adwaita/edit-find-replace-symbolic.svg");
355
    t!(adwaita_edit_find_symbolic_svg,                              "adwaita/edit-find-symbolic.svg");
356
    t!(adwaita_edit_paste_symbolic_svg,                             "adwaita/edit-paste-symbolic.svg");
357
    t!(adwaita_edit_redo_symbolic_rtl_svg,                          "adwaita/edit-redo-symbolic-rtl.svg");
358
    t!(adwaita_edit_redo_symbolic_svg,                              "adwaita/edit-redo-symbolic.svg");
359
    t!(adwaita_edit_select_all_symbolic_svg,                        "adwaita/edit-select-all-symbolic.svg");
360
    t!(adwaita_edit_select_symbolic_svg,                            "adwaita/edit-select-symbolic.svg");
361
    t!(adwaita_edit_undo_symbolic_rtl_svg,                          "adwaita/edit-undo-symbolic-rtl.svg");
362
    t!(adwaita_edit_undo_symbolic_svg,                              "adwaita/edit-undo-symbolic.svg");
363
    t!(adwaita_emblem_default_symbolic_svg,                         "adwaita/emblem-default-symbolic.svg");
364
    t!(adwaita_emblem_documents_symbolic_svg,                       "adwaita/emblem-documents-symbolic.svg");
365
    t!(adwaita_emblem_favorite_symbolic_svg,                        "adwaita/emblem-favorite-symbolic.svg");
366
    t!(adwaita_emblem_important_symbolic_svg,                       "adwaita/emblem-important-symbolic.svg");
367
    t!(adwaita_emblem_music_symbolic_svg,                           "adwaita/emblem-music-symbolic.svg");
368
    t!(adwaita_emblem_ok_symbolic_svg,                              "adwaita/emblem-ok-symbolic.svg");
369
    t!(adwaita_emblem_photos_symbolic_svg,                          "adwaita/emblem-photos-symbolic.svg");
370
    t!(adwaita_emblem_shared_symbolic_svg,                          "adwaita/emblem-shared-symbolic.svg");
371
    t!(adwaita_emblem_synchronizing_symbolic_svg,                   "adwaita/emblem-synchronizing-symbolic.svg");
372
    t!(adwaita_emblem_system_symbolic_svg,                          "adwaita/emblem-system-symbolic.svg");
373
    t!(adwaita_emblem_videos_symbolic_svg,                          "adwaita/emblem-videos-symbolic.svg");
374
    t!(adwaita_emoji_activities_symbolic_svg,                       "adwaita/emoji-activities-symbolic.svg");
375
    t!(adwaita_emoji_body_symbolic_svg,                             "adwaita/emoji-body-symbolic.svg");
376
    t!(adwaita_emoji_flags_symbolic_svg,                            "adwaita/emoji-flags-symbolic.svg");
377
    t!(adwaita_emoji_food_symbolic_svg,                             "adwaita/emoji-food-symbolic.svg");
378
    t!(adwaita_emoji_nature_symbolic_svg,                           "adwaita/emoji-nature-symbolic.svg");
379
    t!(adwaita_emoji_objects_symbolic_svg,                          "adwaita/emoji-objects-symbolic.svg");
380
    t!(adwaita_emoji_people_symbolic_svg,                           "adwaita/emoji-people-symbolic.svg");
381
    t!(adwaita_emoji_recent_symbolic_svg,                           "adwaita/emoji-recent-symbolic.svg");
382
    t!(adwaita_emoji_symbols_symbolic_svg,                          "adwaita/emoji-symbols-symbolic.svg");
383
    t!(adwaita_emoji_travel_symbolic_svg,                           "adwaita/emoji-travel-symbolic.svg");
384
    t!(adwaita_emote_love_symbolic_svg,                             "adwaita/emote-love-symbolic.svg");
385
    t!(adwaita_error_correct_symbolic_svg,                          "adwaita/error-correct-symbolic.svg");
386
    t!(adwaita_face_angel_symbolic_svg,                             "adwaita/face-angel-symbolic.svg");
387
    t!(adwaita_face_angry_symbolic_svg,                             "adwaita/face-angry-symbolic.svg");
388
    t!(adwaita_face_confused_symbolic_svg,                          "adwaita/face-confused-symbolic.svg");
389
    t!(adwaita_face_cool_symbolic_svg,                              "adwaita/face-cool-symbolic.svg");
390
    t!(adwaita_face_crying_symbolic_svg,                            "adwaita/face-crying-symbolic.svg");
391
    t!(adwaita_face_devilish_symbolic_svg,                          "adwaita/face-devilish-symbolic.svg");
392
    t!(adwaita_face_embarrassed_symbolic_svg,                       "adwaita/face-embarrassed-symbolic.svg");
393
    t!(adwaita_face_glasses_symbolic_svg,                           "adwaita/face-glasses-symbolic.svg");
394
    t!(adwaita_face_kiss_symbolic_svg,                              "adwaita/face-kiss-symbolic.svg");
395
    t!(adwaita_face_laugh_symbolic_svg,                             "adwaita/face-laugh-symbolic.svg");
396
    t!(adwaita_face_monkey_symbolic_svg,                            "adwaita/face-monkey-symbolic.svg");
397
    t!(adwaita_face_plain_symbolic_svg,                             "adwaita/face-plain-symbolic.svg");
398
    t!(adwaita_face_raspberry_symbolic_svg,                         "adwaita/face-raspberry-symbolic.svg");
399
    t!(adwaita_face_sad_symbolic_svg,                               "adwaita/face-sad-symbolic.svg");
400
    t!(adwaita_face_shutmouth_symbolic_svg,                         "adwaita/face-shutmouth-symbolic.svg");
401
    t!(adwaita_face_sick_symbolic_svg,                              "adwaita/face-sick-symbolic.svg");
402
    t!(adwaita_face_smile_big_symbolic_svg,                         "adwaita/face-smile-big-symbolic.svg");
403
    t!(adwaita_face_smile_symbolic_svg,                             "adwaita/face-smile-symbolic.svg");
404
    t!(adwaita_face_smirk_symbolic_svg,                             "adwaita/face-smirk-symbolic.svg");
405
    t!(adwaita_face_surprise_symbolic_svg,                          "adwaita/face-surprise-symbolic.svg");
406
    t!(adwaita_face_tired_symbolic_svg,                             "adwaita/face-tired-symbolic.svg");
407
    t!(adwaita_face_uncertain_symbolic_svg,                         "adwaita/face-uncertain-symbolic.svg");
408
    t!(adwaita_face_wink_symbolic_svg,                              "adwaita/face-wink-symbolic.svg");
409
    t!(adwaita_face_worried_symbolic_svg,                           "adwaita/face-worried-symbolic.svg");
410
    t!(adwaita_face_yawn_symbolic_svg,                              "adwaita/face-yawn-symbolic.svg");
411
    t!(adwaita_find_location_symbolic_svg,                          "adwaita/find-location-symbolic.svg");
412
    t!(adwaita_focus_legacy_systray_symbolic_svg,                   "adwaita/focus-legacy-systray-symbolic.svg");
413
    t!(adwaita_focus_top_bar_symbolic_svg,                          "adwaita/focus-top-bar-symbolic.svg");
414
    t!(adwaita_focus_windows_symbolic_svg,                          "adwaita/focus-windows-symbolic.svg");
415
    t!(adwaita_folder_documents_symbolic_svg,                       "adwaita/folder-documents-symbolic.svg");
416
    t!(adwaita_folder_download_symbolic_svg,                        "adwaita/folder-download-symbolic.svg");
417
    t!(adwaita_folder_drag_accept_symbolic_svg,                     "adwaita/folder-drag-accept-symbolic.svg");
418
    t!(adwaita_folder_music_symbolic_svg,                           "adwaita/folder-music-symbolic.svg");
419
    t!(adwaita_folder_new_symbolic_svg,                             "adwaita/folder-new-symbolic.svg");
420
    t!(adwaita_folder_open_symbolic_svg,                            "adwaita/folder-open-symbolic.svg");
421
    t!(adwaita_folder_pictures_symbolic_svg,                        "adwaita/folder-pictures-symbolic.svg");
422
    t!(adwaita_folder_publicshare_symbolic_svg,                     "adwaita/folder-publicshare-symbolic.svg");
423
    t!(adwaita_folder_remote_symbolic_svg,                          "adwaita/folder-remote-symbolic.svg");
424
    t!(adwaita_folder_saved_search_symbolic_svg,                    "adwaita/folder-saved-search-symbolic.svg");
425
    t!(adwaita_folder_symbolic_svg,                                 "adwaita/folder-symbolic.svg");
426
    t!(adwaita_folder_templates_symbolic_svg,                       "adwaita/folder-templates-symbolic.svg");
427
    t!(adwaita_folder_videos_symbolic_svg,                          "adwaita/folder-videos-symbolic.svg");
428
    t!(adwaita_folder_visiting_symbolic_svg,                        "adwaita/folder-visiting-symbolic.svg");
429
    t!(adwaita_font_select_symbolic_svg,                            "adwaita/font-select-symbolic.svg");
430
    t!(adwaita_font_x_generic_symbolic_svg,                         "adwaita/font-x-generic-symbolic.svg");
431
    t!(adwaita_format_indent_less_symbolic_rtl_svg,                 "adwaita/format-indent-less-symbolic-rtl.svg");
432
    t!(adwaita_format_indent_less_symbolic_svg,                     "adwaita/format-indent-less-symbolic.svg");
433
    t!(adwaita_format_indent_more_symbolic_rtl_svg,                 "adwaita/format-indent-more-symbolic-rtl.svg");
434
    t!(adwaita_format_indent_more_symbolic_svg,                     "adwaita/format-indent-more-symbolic.svg");
435
    t!(adwaita_format_justify_center_symbolic_svg,                  "adwaita/format-justify-center-symbolic.svg");
436
    t!(adwaita_format_justify_fill_symbolic_svg,                    "adwaita/format-justify-fill-symbolic.svg");
437
    t!(adwaita_format_justify_left_symbolic_svg,                    "adwaita/format-justify-left-symbolic.svg");
438
    t!(adwaita_format_justify_right_symbolic_svg,                   "adwaita/format-justify-right-symbolic.svg");
439
    t!(adwaita_format_text_bold_symbolic_svg,                       "adwaita/format-text-bold-symbolic.svg");
440
    t!(adwaita_format_text_direction_symbolic_rtl_svg,              "adwaita/format-text-direction-symbolic-rtl.svg");
441
    t!(adwaita_format_text_direction_symbolic_svg,                  "adwaita/format-text-direction-symbolic.svg");
442
    t!(adwaita_format_text_italic_symbolic_svg,                     "adwaita/format-text-italic-symbolic.svg");
443
    t!(adwaita_format_text_strikethrough_symbolic_svg,              "adwaita/format-text-strikethrough-symbolic.svg");
444
    t!(adwaita_format_text_underline_symbolic_svg,                  "adwaita/format-text-underline-symbolic.svg");
445
    t!(adwaita_gnome_power_manager_symbolic_svg,                    "adwaita/gnome-power-manager-symbolic.svg");
446
    t!(adwaita_goa_panel_symbolic_svg,                              "adwaita/goa-panel-symbolic.svg");
447
    t!(adwaita_go_bottom_symbolic_svg,                              "adwaita/go-bottom-symbolic.svg");
448
    t!(adwaita_go_down_symbolic_svg,                                "adwaita/go-down-symbolic.svg");
449
    t!(adwaita_go_first_symbolic_rtl_svg,                           "adwaita/go-first-symbolic-rtl.svg");
450
    t!(adwaita_go_first_symbolic_svg,                               "adwaita/go-first-symbolic.svg");
451
    t!(adwaita_go_home_symbolic_svg,                                "adwaita/go-home-symbolic.svg");
452
    t!(adwaita_go_jump_symbolic_svg,                                "adwaita/go-jump-symbolic.svg");
453
    t!(adwaita_go_last_symbolic_rtl_svg,                            "adwaita/go-last-symbolic-rtl.svg");
454
    t!(adwaita_go_last_symbolic_svg,                                "adwaita/go-last-symbolic.svg");
455
    t!(adwaita_go_next_symbolic_rtl_svg,                            "adwaita/go-next-symbolic-rtl.svg");
456
    t!(adwaita_go_next_symbolic_svg,                                "adwaita/go-next-symbolic.svg");
457
    t!(adwaita_go_previous_symbolic_rtl_svg,                        "adwaita/go-previous-symbolic-rtl.svg");
458
    t!(adwaita_go_previous_symbolic_svg,                            "adwaita/go-previous-symbolic.svg");
459
    t!(adwaita_go_top_symbolic_svg,                                 "adwaita/go-top-symbolic.svg");
460
    t!(adwaita_go_up_symbolic_svg,                                  "adwaita/go-up-symbolic.svg");
461
    t!(adwaita_help_about_symbolic_svg,                             "adwaita/help-about-symbolic.svg");
462
    t!(adwaita_help_browser_symbolic_svg,                           "adwaita/help-browser-symbolic.svg");
463
    t!(adwaita_help_contents_symbolic_svg,                          "adwaita/help-contents-symbolic.svg");
464
    t!(adwaita_help_faq_symbolic_svg,                               "adwaita/help-faq-symbolic.svg");
465
    t!(adwaita_image_loading_symbolic_svg,                          "adwaita/image-loading-symbolic.svg");
466
    t!(adwaita_image_x_generic_symbolic_svg,                        "adwaita/image-x-generic-symbolic.svg");
467
    t!(adwaita_inode_directory_symbolic_svg,                        "adwaita/inode-directory-symbolic.svg");
468
    t!(adwaita_input_dialpad_symbolic_svg,                          "adwaita/input-dialpad-symbolic.svg");
469
    t!(adwaita_input_gaming_symbolic_svg,                           "adwaita/input-gaming-symbolic.svg");
470
    t!(adwaita_input_keyboard_symbolic_svg,                         "adwaita/input-keyboard-symbolic.svg");
471
    t!(adwaita_input_mouse_symbolic_svg,                            "adwaita/input-mouse-symbolic.svg");
472
    t!(adwaita_input_tablet_symbolic_svg,                           "adwaita/input-tablet-symbolic.svg");
473
    t!(adwaita_input_touchpad_symbolic_svg,                         "adwaita/input-touchpad-symbolic.svg");
474
    t!(adwaita_insert_image_symbolic_svg,                           "adwaita/insert-image-symbolic.svg");
475
    t!(adwaita_insert_link_symbolic_svg,                            "adwaita/insert-link-symbolic.svg");
476
    t!(adwaita_insert_object_symbolic_svg,                          "adwaita/insert-object-symbolic.svg");
477
    t!(adwaita_insert_text_symbolic_svg,                            "adwaita/insert-text-symbolic.svg");
478
    t!(adwaita_keyboard_brightness_symbolic_svg,                    "adwaita/keyboard-brightness-symbolic.svg");
479
    t!(adwaita_list_add_symbolic_svg,                               "adwaita/list-add-symbolic.svg");
480
    t!(adwaita_list_remove_all_symbolic_svg,                        "adwaita/list-remove-all-symbolic.svg");
481
    t!(adwaita_list_remove_symbolic_svg,                            "adwaita/list-remove-symbolic.svg");
482
    t!(adwaita_mail_attachment_symbolic_svg,                        "adwaita/mail-attachment-symbolic.svg");
483
    t!(adwaita_mail_mark_important_symbolic_svg,                    "adwaita/mail-mark-important-symbolic.svg");
484
    t!(adwaita_mail_read_symbolic_svg,                              "adwaita/mail-read-symbolic.svg");
485
    t!(adwaita_mail_replied_symbolic_svg,                           "adwaita/mail-replied-symbolic.svg");
486
    t!(adwaita_mail_send_receive_symbolic_svg,                      "adwaita/mail-send-receive-symbolic.svg");
487
    t!(adwaita_mail_send_symbolic_svg,                              "adwaita/mail-send-symbolic.svg");
488
    t!(adwaita_mail_unread_symbolic_svg,                            "adwaita/mail-unread-symbolic.svg");
489
    t!(adwaita_mark_location_symbolic_svg,                          "adwaita/mark-location-symbolic.svg");
490
    t!(adwaita_media_eject_symbolic_svg,                            "adwaita/media-eject-symbolic.svg");
491
    t!(adwaita_media_flash_symbolic_svg,                            "adwaita/media-flash-symbolic.svg");
492
    t!(adwaita_media_floppy_symbolic_svg,                           "adwaita/media-floppy-symbolic.svg");
493
    t!(adwaita_media_optical_bd_symbolic_svg,                       "adwaita/media-optical-bd-symbolic.svg");
494
    t!(adwaita_media_optical_cd_audio_symbolic_svg,                 "adwaita/media-optical-cd-audio-symbolic.svg");
495
    t!(adwaita_media_optical_dvd_symbolic_svg,                      "adwaita/media-optical-dvd-symbolic.svg");
496
    t!(adwaita_media_optical_symbolic_svg,                          "adwaita/media-optical-symbolic.svg");
497
    t!(adwaita_media_playback_pause_symbolic_svg,                   "adwaita/media-playback-pause-symbolic.svg");
498
    t!(adwaita_media_playback_start_symbolic_rtl_svg,               "adwaita/media-playback-start-symbolic-rtl.svg");
499
    t!(adwaita_media_playback_start_symbolic_svg,                   "adwaita/media-playback-start-symbolic.svg");
500
    t!(adwaita_media_playback_stop_symbolic_svg,                    "adwaita/media-playback-stop-symbolic.svg");
501
    t!(adwaita_media_playlist_consecutive_symbolic_rtl_svg,         "adwaita/media-playlist-consecutive-symbolic-rtl.svg");
502
    t!(adwaita_media_playlist_consecutive_symbolic_svg,             "adwaita/media-playlist-consecutive-symbolic.svg");
503
    t!(adwaita_media_playlist_repeat_song_symbolic_rtl_svg,         "adwaita/media-playlist-repeat-song-symbolic-rtl.svg");
504
    t!(adwaita_media_playlist_repeat_song_symbolic_svg,             "adwaita/media-playlist-repeat-song-symbolic.svg");
505
    t!(adwaita_media_playlist_repeat_symbolic_rtl_svg,              "adwaita/media-playlist-repeat-symbolic-rtl.svg");
506
    t!(adwaita_media_playlist_repeat_symbolic_svg,                  "adwaita/media-playlist-repeat-symbolic.svg");
507
    t!(adwaita_media_playlist_shuffle_symbolic_rtl_svg,             "adwaita/media-playlist-shuffle-symbolic-rtl.svg");
508
    t!(adwaita_media_playlist_shuffle_symbolic_svg,                 "adwaita/media-playlist-shuffle-symbolic.svg");
509
    t!(adwaita_media_record_symbolic_svg,                           "adwaita/media-record-symbolic.svg");
510
    t!(adwaita_media_removable_symbolic_svg,                        "adwaita/media-removable-symbolic.svg");
511
    t!(adwaita_media_seek_backward_symbolic_rtl_svg,                "adwaita/media-seek-backward-symbolic-rtl.svg");
512
    t!(adwaita_media_seek_backward_symbolic_svg,                    "adwaita/media-seek-backward-symbolic.svg");
513
    t!(adwaita_media_seek_forward_symbolic_rtl_svg,                 "adwaita/media-seek-forward-symbolic-rtl.svg");
514
    t!(adwaita_media_seek_forward_symbolic_svg,                     "adwaita/media-seek-forward-symbolic.svg");
515
    t!(adwaita_media_skip_backward_symbolic_rtl_svg,                "adwaita/media-skip-backward-symbolic-rtl.svg");
516
    t!(adwaita_media_skip_backward_symbolic_svg,                    "adwaita/media-skip-backward-symbolic.svg");
517
    t!(adwaita_media_skip_forward_symbolic_rtl_svg,                 "adwaita/media-skip-forward-symbolic-rtl.svg");
518
    t!(adwaita_media_skip_forward_symbolic_svg,                     "adwaita/media-skip-forward-symbolic.svg");
519
    t!(adwaita_media_tape_symbolic_svg,                             "adwaita/media-tape-symbolic.svg");
520
    t!(adwaita_media_view_subtitles_symbolic_svg,                   "adwaita/media-view-subtitles-symbolic.svg");
521
    t!(adwaita_media_zip_symbolic_svg,                              "adwaita/media-zip-symbolic.svg");
522
    t!(adwaita_microphone_sensitivity_high_symbolic_svg,            "adwaita/microphone-sensitivity-high-symbolic.svg");
523
    t!(adwaita_microphone_sensitivity_low_symbolic_svg,             "adwaita/microphone-sensitivity-low-symbolic.svg");
524
    t!(adwaita_microphone_sensitivity_medium_symbolic_svg,          "adwaita/microphone-sensitivity-medium-symbolic.svg");
525
    t!(adwaita_microphone_sensitivity_muted_symbolic_svg,           "adwaita/microphone-sensitivity-muted-symbolic.svg");
526
    t!(adwaita_modem_symbolic_svg,                                  "adwaita/modem-symbolic.svg");
527
    t!(adwaita_multimedia_player_apple_ipod_touch_symbolic_svg,     "adwaita/multimedia-player-apple-ipod-touch-symbolic.svg");
528
    t!(adwaita_multimedia_player_symbolic_svg,                      "adwaita/multimedia-player-symbolic.svg");
529
    t!(adwaita_multimedia_volume_control_symbolic_svg,              "adwaita/multimedia-volume-control-symbolic.svg");
530
    t!(adwaita_network_cellular_3g_symbolic_svg,                    "adwaita/network-cellular-3g-symbolic.svg");
531
    t!(adwaita_network_cellular_4g_symbolic_svg,                    "adwaita/network-cellular-4g-symbolic.svg");
532
    t!(adwaita_network_cellular_acquiring_symbolic_svg,             "adwaita/network-cellular-acquiring-symbolic.svg");
533
    t!(adwaita_network_cellular_connected_symbolic_svg,             "adwaita/network-cellular-connected-symbolic.svg");
534
    t!(adwaita_network_cellular_edge_symbolic_svg,                  "adwaita/network-cellular-edge-symbolic.svg");
535
    t!(adwaita_network_cellular_gprs_symbolic_svg,                  "adwaita/network-cellular-gprs-symbolic.svg");
536
    t!(adwaita_network_cellular_hspa_symbolic_svg,                  "adwaita/network-cellular-hspa-symbolic.svg");
537
    t!(adwaita_network_cellular_no_route_symbolic_svg,              "adwaita/network-cellular-no-route-symbolic.svg");
538
    t!(adwaita_network_cellular_offline_symbolic_svg,               "adwaita/network-cellular-offline-symbolic.svg");
539
    t!(adwaita_network_cellular_signal_excellent_symbolic_svg,      "adwaita/network-cellular-signal-excellent-symbolic.svg");
540
    t!(adwaita_network_cellular_signal_good_symbolic_svg,           "adwaita/network-cellular-signal-good-symbolic.svg");
541
    t!(adwaita_network_cellular_signal_none_symbolic_svg,           "adwaita/network-cellular-signal-none-symbolic.svg");
542
    t!(adwaita_network_cellular_signal_ok_symbolic_svg,             "adwaita/network-cellular-signal-ok-symbolic.svg");
543
    t!(adwaita_network_cellular_signal_weak_symbolic_svg,           "adwaita/network-cellular-signal-weak-symbolic.svg");
544
    t!(adwaita_network_error_symbolic_svg,                          "adwaita/network-error-symbolic.svg");
545
    t!(adwaita_network_idle_symbolic_svg,                           "adwaita/network-idle-symbolic.svg");
546
    t!(adwaita_network_no_route_symbolic_svg,                       "adwaita/network-no-route-symbolic.svg");
547
    t!(adwaita_network_offline_symbolic_svg,                        "adwaita/network-offline-symbolic.svg");
548
    t!(adwaita_network_receive_symbolic_svg,                        "adwaita/network-receive-symbolic.svg");
549
    t!(adwaita_network_server_symbolic_svg,                         "adwaita/network-server-symbolic.svg");
550
    t!(adwaita_network_transmit_receive_symbolic_svg,               "adwaita/network-transmit-receive-symbolic.svg");
551
    t!(adwaita_network_transmit_symbolic_svg,                       "adwaita/network-transmit-symbolic.svg");
552
    t!(adwaita_network_vpn_acquiring_symbolic_svg,                  "adwaita/network-vpn-acquiring-symbolic.svg");
553
    t!(adwaita_network_vpn_no_route_symbolic_svg,                   "adwaita/network-vpn-no-route-symbolic.svg");
554
    t!(adwaita_network_vpn_symbolic_svg,                            "adwaita/network-vpn-symbolic.svg");
555
    t!(adwaita_network_wired_acquiring_symbolic_svg,                "adwaita/network-wired-acquiring-symbolic.svg");
556
    t!(adwaita_network_wired_disconnected_symbolic_svg,             "adwaita/network-wired-disconnected-symbolic.svg");
557
    t!(adwaita_network_wired_no_route_symbolic_svg,                 "adwaita/network-wired-no-route-symbolic.svg");
558
    t!(adwaita_network_wired_offline_symbolic_svg,                  "adwaita/network-wired-offline-symbolic.svg");
559
    t!(adwaita_network_wired_symbolic_svg,                          "adwaita/network-wired-symbolic.svg");
560
    t!(adwaita_network_wireless_acquiring_symbolic_svg,             "adwaita/network-wireless-acquiring-symbolic.svg");
561
    t!(adwaita_network_wireless_connected_symbolic_svg,             "adwaita/network-wireless-connected-symbolic.svg");
562
    t!(adwaita_network_wireless_encrypted_symbolic_svg,             "adwaita/network-wireless-encrypted-symbolic.svg");
563
    t!(adwaita_network_wireless_hotspot_symbolic_svg,               "adwaita/network-wireless-hotspot-symbolic.svg");
564
    t!(adwaita_network_wireless_no_route_symbolic_svg,              "adwaita/network-wireless-no-route-symbolic.svg");
565
    t!(adwaita_network_wireless_offline_symbolic_svg,               "adwaita/network-wireless-offline-symbolic.svg");
566
    t!(adwaita_network_wireless_signal_excellent_symbolic_svg,      "adwaita/network-wireless-signal-excellent-symbolic.svg");
567
    t!(adwaita_network_wireless_signal_good_symbolic_svg,           "adwaita/network-wireless-signal-good-symbolic.svg");
568
    t!(adwaita_network_wireless_signal_none_symbolic_svg,           "adwaita/network-wireless-signal-none-symbolic.svg");
569
    t!(adwaita_network_wireless_signal_ok_symbolic_svg,             "adwaita/network-wireless-signal-ok-symbolic.svg");
570
    t!(adwaita_network_wireless_signal_weak_symbolic_svg,           "adwaita/network-wireless-signal-weak-symbolic.svg");
571
    t!(adwaita_network_wireless_symbolic_svg,                       "adwaita/network-wireless-symbolic.svg");
572
    t!(adwaita_network_workgroup_symbolic_svg,                      "adwaita/network-workgroup-symbolic.svg");
573
    t!(adwaita_night_light_symbolic_svg,                            "adwaita/night-light-symbolic.svg");
574
    t!(adwaita_non_starred_symbolic_svg,                            "adwaita/non-starred-symbolic.svg");
575
    t!(adwaita_object_flip_horizontal_symbolic_svg,                 "adwaita/object-flip-horizontal-symbolic.svg");
576
    t!(adwaita_object_flip_vertical_symbolic_svg,                   "adwaita/object-flip-vertical-symbolic.svg");
577
    t!(adwaita_object_rotate_left_symbolic_svg,                     "adwaita/object-rotate-left-symbolic.svg");
578
    t!(adwaita_object_rotate_right_symbolic_svg,                    "adwaita/object-rotate-right-symbolic.svg");
579
    t!(adwaita_object_select_symbolic_svg,                          "adwaita/object-select-symbolic.svg");
580
    t!(adwaita_open_menu_symbolic_svg,                              "adwaita/open-menu-symbolic.svg");
581
    t!(adwaita_orientation_landscape_inverse_symbolic_svg,          "adwaita/orientation-landscape-inverse-symbolic.svg");
582
    t!(adwaita_orientation_landscape_symbolic_svg,                  "adwaita/orientation-landscape-symbolic.svg");
583
    t!(adwaita_orientation_portrait_inverse_symbolic_svg,           "adwaita/orientation-portrait-inverse-symbolic.svg");
584
    t!(adwaita_orientation_portrait_symbolic_svg,                   "adwaita/orientation-portrait-symbolic.svg");
585
    t!(adwaita_package_x_generic_symbolic_svg,                      "adwaita/package-x-generic-symbolic.svg");
586
    t!(adwaita_pan_down_symbolic_svg,                               "adwaita/pan-down-symbolic.svg");
587
    t!(adwaita_pan_end_symbolic_rtl_svg,                            "adwaita/pan-end-symbolic-rtl.svg");
588
    t!(adwaita_pan_end_symbolic_svg,                                "adwaita/pan-end-symbolic.svg");
589
    t!(adwaita_pan_start_symbolic_rtl_svg,                          "adwaita/pan-start-symbolic-rtl.svg");
590
    t!(adwaita_pan_start_symbolic_svg,                              "adwaita/pan-start-symbolic.svg");
591
    t!(adwaita_pan_up_symbolic_svg,                                 "adwaita/pan-up-symbolic.svg");
592
    t!(adwaita_pda_symbolic_svg,                                    "adwaita/pda-symbolic.svg");
593
    t!(adwaita_phone_apple_iphone_symbolic_svg,                     "adwaita/phone-apple-iphone-symbolic.svg");
594
    t!(adwaita_phone_symbolic_svg,                                  "adwaita/phone-symbolic.svg");
595
    t!(adwaita_preferences_color_symbolic_svg,                      "adwaita/preferences-color-symbolic.svg");
596
    t!(adwaita_preferences_desktop_accessibility_symbolic_svg,      "adwaita/preferences-desktop-accessibility-symbolic.svg");
597
    t!(adwaita_preferences_desktop_display_symbolic_svg,            "adwaita/preferences-desktop-display-symbolic.svg");
598
    t!(adwaita_preferences_desktop_font_symbolic_svg,               "adwaita/preferences-desktop-font-symbolic.svg");
599
    t!(adwaita_preferences_desktop_keyboard_shortcuts_symbolic_svg, "adwaita/preferences-desktop-keyboard-shortcuts-symbolic.svg");
600
    t!(adwaita_preferences_desktop_keyboard_symbolic_svg,           "adwaita/preferences-desktop-keyboard-symbolic.svg");
601
    t!(adwaita_preferences_desktop_locale_symbolic_svg,             "adwaita/preferences-desktop-locale-symbolic.svg");
602
    t!(adwaita_preferences_desktop_remote_desktop_symbolic_svg,     "adwaita/preferences-desktop-remote-desktop-symbolic.svg");
603
    t!(adwaita_preferences_desktop_screensaver_symbolic_svg,        "adwaita/preferences-desktop-screensaver-symbolic.svg");
604
    t!(adwaita_preferences_desktop_wallpaper_symbolic_svg,          "adwaita/preferences-desktop-wallpaper-symbolic.svg");
605
    t!(adwaita_preferences_other_symbolic_svg,                      "adwaita/preferences-other-symbolic.svg");
606
    t!(adwaita_preferences_system_details_symbolic_svg,             "adwaita/preferences-system-details-symbolic.svg");
607
    t!(adwaita_preferences_system_devices_symbolic_svg,             "adwaita/preferences-system-devices-symbolic.svg");
608
    t!(adwaita_preferences_system_network_proxy_symbolic_svg,       "adwaita/preferences-system-network-proxy-symbolic.svg");
609
    t!(adwaita_preferences_system_network_symbolic_svg,             "adwaita/preferences-system-network-symbolic.svg");
610
    t!(adwaita_preferences_system_notifications_symbolic_svg,       "adwaita/preferences-system-notifications-symbolic.svg");
611
    t!(adwaita_preferences_system_privacy_symbolic_svg,             "adwaita/preferences-system-privacy-symbolic.svg");
612
    t!(adwaita_preferences_system_search_symbolic_svg,              "adwaita/preferences-system-search-symbolic.svg");
613
    t!(adwaita_preferences_system_sharing_symbolic_svg,             "adwaita/preferences-system-sharing-symbolic.svg");
614
    t!(adwaita_preferences_system_symbolic_svg,                     "adwaita/preferences-system-symbolic.svg");
615
    t!(adwaita_preferences_system_time_symbolic_svg,                "adwaita/preferences-system-time-symbolic.svg");
616
    t!(adwaita_printer_error_symbolic_svg,                          "adwaita/printer-error-symbolic.svg");
617
    t!(adwaita_printer_network_symbolic_svg,                        "adwaita/printer-network-symbolic.svg");
618
    t!(adwaita_printer_printing_symbolic_svg,                       "adwaita/printer-printing-symbolic.svg");
619
    t!(adwaita_printer_symbolic_svg,                                "adwaita/printer-symbolic.svg");
620
    t!(adwaita_printer_warning_symbolic_svg,                        "adwaita/printer-warning-symbolic.svg");
621
    t!(adwaita_process_stop_symbolic_svg,                           "adwaita/process-stop-symbolic.svg");
622
    t!(adwaita_radio_checked_symbolic_svg,                          "adwaita/radio-checked-symbolic.svg");
623
    t!(adwaita_radio_mixed_symbolic_svg,                            "adwaita/radio-mixed-symbolic.svg");
624
    t!(adwaita_radio_symbolic_svg,                                  "adwaita/radio-symbolic.svg");
625
    t!(adwaita_rotation_allowed_symbolic_svg,                       "adwaita/rotation-allowed-symbolic.svg");
626
    t!(adwaita_rotation_locked_symbolic_svg,                        "adwaita/rotation-locked-symbolic.svg");
627
    t!(adwaita_scanner_symbolic_svg,                                "adwaita/scanner-symbolic.svg");
628
    t!(adwaita_security_high_symbolic_svg,                          "adwaita/security-high-symbolic.svg");
629
    t!(adwaita_security_low_symbolic_svg,                           "adwaita/security-low-symbolic.svg");
630
    t!(adwaita_security_medium_symbolic_svg,                        "adwaita/security-medium-symbolic.svg");
631
    t!(adwaita_selection_end_symbolic_rtl_svg,                      "adwaita/selection-end-symbolic-rtl.svg");
632
    t!(adwaita_selection_end_symbolic_svg,                          "adwaita/selection-end-symbolic.svg");
633
    t!(adwaita_selection_start_symbolic_rtl_svg,                    "adwaita/selection-start-symbolic-rtl.svg");
634
    t!(adwaita_selection_start_symbolic_svg,                        "adwaita/selection-start-symbolic.svg");
635
    t!(adwaita_semi_starred_symbolic_rtl_svg,                       "adwaita/semi-starred-symbolic-rtl.svg");
636
    t!(adwaita_semi_starred_symbolic_svg,                           "adwaita/semi-starred-symbolic.svg");
637
    t!(adwaita_send_to_symbolic_svg,                                "adwaita/send-to-symbolic.svg");
638
    t!(adwaita_software_update_available_symbolic_svg,              "adwaita/software-update-available-symbolic.svg");
639
    t!(adwaita_software_update_urgent_symbolic_svg,                 "adwaita/software-update-urgent-symbolic.svg");
640
    t!(adwaita_star_new_symbolic_svg,                               "adwaita/star-new-symbolic.svg");
641
    t!(adwaita_starred_symbolic_svg,                                "adwaita/starred-symbolic.svg");
642
    t!(adwaita_start_here_symbolic_svg,                             "adwaita/start-here-symbolic.svg");
643
    t!(adwaita_system_file_manager_symbolic_svg,                    "adwaita/system-file-manager-symbolic.svg");
644
    t!(adwaita_system_help_symbolic_svg,                            "adwaita/system-help-symbolic.svg");
645
    t!(adwaita_system_lock_screen_symbolic_svg,                     "adwaita/system-lock-screen-symbolic.svg");
646
    t!(adwaita_system_run_symbolic_svg,                             "adwaita/system-run-symbolic.svg");
647
    t!(adwaita_system_search_symbolic_svg,                          "adwaita/system-search-symbolic.svg");
648
    t!(adwaita_system_shutdown_symbolic_svg,                        "adwaita/system-shutdown-symbolic.svg");
649
    t!(adwaita_system_software_install_symbolic_svg,                "adwaita/system-software-install-symbolic.svg");
650
    t!(adwaita_system_switch_user_symbolic_svg,                     "adwaita/system-switch-user-symbolic.svg");
651
    t!(adwaita_system_users_symbolic_svg,                           "adwaita/system-users-symbolic.svg");
652
    t!(adwaita_tab_new_symbolic_svg,                                "adwaita/tab-new-symbolic.svg");
653
    t!(adwaita_task_due_symbolic_svg,                               "adwaita/task-due-symbolic.svg");
654
    t!(adwaita_task_past_due_symbolic_svg,                          "adwaita/task-past-due-symbolic.svg");
655
    t!(adwaita_text_editor_symbolic_svg,                            "adwaita/text-editor-symbolic.svg");
656
    t!(adwaita_text_x_generic_symbolic_svg,                         "adwaita/text-x-generic-symbolic.svg");
657
    t!(adwaita_thunderbolt_acquiring_symbolic_svg,                  "adwaita/thunderbolt-acquiring-symbolic.svg");
658
    t!(adwaita_thunderbolt_symbolic_svg,                            "adwaita/thunderbolt-symbolic.svg");
659
    t!(adwaita_tools_check_spelling_symbolic_svg,                   "adwaita/tools-check-spelling-symbolic.svg");
660
    t!(adwaita_touchpad_disabled_symbolic_svg,                      "adwaita/touchpad-disabled-symbolic.svg");
661
    t!(adwaita_tv_symbolic_svg,                                     "adwaita/tv-symbolic.svg");
662
    t!(adwaita_uninterruptible_power_supply_symbolic_svg,           "adwaita/uninterruptible-power-supply-symbolic.svg");
663
    t!(adwaita_user_available_symbolic_svg,                         "adwaita/user-available-symbolic.svg");
664
    t!(adwaita_user_away_symbolic_svg,                              "adwaita/user-away-symbolic.svg");
665
    t!(adwaita_user_bookmarks_symbolic_svg,                         "adwaita/user-bookmarks-symbolic.svg");
666
    t!(adwaita_user_busy_symbolic_svg,                              "adwaita/user-busy-symbolic.svg");
667
    t!(adwaita_user_desktop_symbolic_svg,                           "adwaita/user-desktop-symbolic.svg");
668
    t!(adwaita_user_home_symbolic_svg,                              "adwaita/user-home-symbolic.svg");
669
    t!(adwaita_user_idle_symbolic_svg,                              "adwaita/user-idle-symbolic.svg");
670
    t!(adwaita_user_info_symbolic_svg,                              "adwaita/user-info-symbolic.svg");
671
    t!(adwaita_user_invisible_symbolic_svg,                         "adwaita/user-invisible-symbolic.svg");
672
    t!(adwaita_user_not_tracked_symbolic_svg,                       "adwaita/user-not-tracked-symbolic.svg");
673
    t!(adwaita_user_offline_symbolic_svg,                           "adwaita/user-offline-symbolic.svg");
674
    t!(adwaita_user_status_pending_symbolic_svg,                    "adwaita/user-status-pending-symbolic.svg");
675
    t!(adwaita_user_trash_full_symbolic_svg,                        "adwaita/user-trash-full-symbolic.svg");
676
    t!(adwaita_user_trash_symbolic_svg,                             "adwaita/user-trash-symbolic.svg");
677
    t!(adwaita_utilities_system_monitor_symbolic_svg,               "adwaita/utilities-system-monitor-symbolic.svg");
678
    t!(adwaita_utilities_terminal_symbolic_svg,                     "adwaita/utilities-terminal-symbolic.svg");
679
    t!(adwaita_video_display_symbolic_svg,                          "adwaita/video-display-symbolic.svg");
680
    t!(adwaita_video_joined_displays_symbolic_svg,                  "adwaita/video-joined-displays-symbolic.svg");
681
    t!(adwaita_video_single_display_symbolic_svg,                   "adwaita/video-single-display-symbolic.svg");
682
    t!(adwaita_video_x_generic_symbolic_svg,                        "adwaita/video-x-generic-symbolic.svg");
683
    t!(adwaita_view_app_grid_symbolic_svg,                          "adwaita/view-app-grid-symbolic.svg");
684
    t!(adwaita_view_continuous_symbolic_svg,                        "adwaita/view-continuous-symbolic.svg");
685
    t!(adwaita_view_dual_symbolic_svg,                              "adwaita/view-dual-symbolic.svg");
686
    t!(adwaita_view_fullscreen_symbolic_svg,                        "adwaita/view-fullscreen-symbolic.svg");
687
    t!(adwaita_view_grid_symbolic_svg,                              "adwaita/view-grid-symbolic.svg");
688
    t!(adwaita_view_list_symbolic_svg,                              "adwaita/view-list-symbolic.svg");
689
    t!(adwaita_view_mirror_symbolic_svg,                            "adwaita/view-mirror-symbolic.svg");
690
    t!(adwaita_view_more_horizontal_symbolic_svg,                   "adwaita/view-more-horizontal-symbolic.svg");
691
    t!(adwaita_view_more_symbolic_svg,                              "adwaita/view-more-symbolic.svg");
692
    t!(adwaita_view_paged_symbolic_svg,                             "adwaita/view-paged-symbolic.svg");
693
    t!(adwaita_view_pin_symbolic_svg,                               "adwaita/view-pin-symbolic.svg");
694
    t!(adwaita_view_refresh_symbolic_svg,                           "adwaita/view-refresh-symbolic.svg");
695
    t!(adwaita_view_restore_symbolic_svg,                           "adwaita/view-restore-symbolic.svg");
696
    t!(adwaita_view_sort_ascending_symbolic_svg,                    "adwaita/view-sort-ascending-symbolic.svg");
697
    t!(adwaita_view_sort_descending_symbolic_svg,                   "adwaita/view-sort-descending-symbolic.svg");
698
    t!(adwaita_view_wrapped_symbolic_rtl_svg,                       "adwaita/view-wrapped-symbolic-rtl.svg");
699
    t!(adwaita_view_wrapped_symbolic_svg,                           "adwaita/view-wrapped-symbolic.svg");
700
    t!(adwaita_weather_clear_night_symbolic_svg,                    "adwaita/weather-clear-night-symbolic.svg");
701
    t!(adwaita_weather_clear_symbolic_svg,                          "adwaita/weather-clear-symbolic.svg");
702
    t!(adwaita_weather_few_clouds_night_symbolic_svg,               "adwaita/weather-few-clouds-night-symbolic.svg");
703
    t!(adwaita_weather_few_clouds_symbolic_svg,                     "adwaita/weather-few-clouds-symbolic.svg");
704
    t!(adwaita_weather_fog_symbolic_svg,                            "adwaita/weather-fog-symbolic.svg");
705
    t!(adwaita_weather_overcast_symbolic_svg,                       "adwaita/weather-overcast-symbolic.svg");
706
    t!(adwaita_weather_severe_alert_symbolic_svg,                   "adwaita/weather-severe-alert-symbolic.svg");
707
    t!(adwaita_weather_showers_scattered_symbolic_svg,              "adwaita/weather-showers-scattered-symbolic.svg");
708
    t!(adwaita_weather_showers_symbolic_svg,                        "adwaita/weather-showers-symbolic.svg");
709
    t!(adwaita_weather_snow_symbolic_svg,                           "adwaita/weather-snow-symbolic.svg");
710
    t!(adwaita_weather_storm_symbolic_svg,                          "adwaita/weather-storm-symbolic.svg");
711
    t!(adwaita_weather_windy_symbolic_svg,                          "adwaita/weather-windy-symbolic.svg");
712
    t!(adwaita_web_browser_symbolic_svg,                            "adwaita/web-browser-symbolic.svg");
713
    t!(adwaita_window_close_symbolic_svg,                           "adwaita/window-close-symbolic.svg");
714
    t!(adwaita_window_maximize_symbolic_svg,                        "adwaita/window-maximize-symbolic.svg");
715
    t!(adwaita_window_minimize_symbolic_svg,                        "adwaita/window-minimize-symbolic.svg");
716
    t!(adwaita_window_restore_symbolic_svg,                         "adwaita/window-restore-symbolic.svg");
717
    t!(adwaita_x_office_address_book_symbolic_svg,                  "adwaita/x-office-address-book-symbolic.svg");
718
    t!(adwaita_x_office_calendar_symbolic_svg,                      "adwaita/x-office-calendar-symbolic.svg");
719
    t!(adwaita_x_office_document_symbolic_svg,                      "adwaita/x-office-document-symbolic.svg");
720
    t!(adwaita_x_office_drawing_symbolic_svg,                       "adwaita/x-office-drawing-symbolic.svg");
721
    t!(adwaita_x_office_presentation_symbolic_svg,                  "adwaita/x-office-presentation-symbolic.svg");
722
    t!(adwaita_x_office_spreadsheet_symbolic_svg,                   "adwaita/x-office-spreadsheet-symbolic.svg");
723
    t!(adwaita_zoom_fit_best_symbolic_svg,                          "adwaita/zoom-fit-best-symbolic.svg");
724
    t!(adwaita_zoom_in_symbolic_svg,                                "adwaita/zoom-in-symbolic.svg");
725
    t!(adwaita_zoom_original_symbolic_svg,                          "adwaita/zoom-original-symbolic.svg");
726
    t!(adwaita_zoom_out_symbolic_svg,                               "adwaita/zoom-out-symbolic.svg");
727
    t!(bugs_a_inside_text_content_738_svg,                          "bugs/a-inside-text-content-738.svg");
728
    t!(bugs_a_inside_text_content_pseudo_class_738_svg,             "bugs/a-inside-text-content-pseudo-class-738.svg");
729
    t!(bugs_bug108_font_size_relative_svg,                          "bugs/bug108-font-size-relative.svg");
730
    t!(bugs_bug112_svg_delayed_attributes_svg,                      "bugs/bug112-svg-delayed-attributes.svg");
731
    t!(bugs_bug165_zero_length_subpath_square_linecap_svg,          "bugs/bug165-zero-length-subpath-square-linecap.svg");
732
    t!(bugs_bug181_inheritable_attrs_in_svg_svg,                    "bugs/bug181-inheritable-attrs-in-svg.svg");
733
    t!(bugs_bug241_light_source_type_svg,                           "bugs/bug241-light-source-type.svg");
734
    t!(bugs_bug245_negative_dashoffset_svg,                         "bugs/bug245-negative-dashoffset.svg");
735
    t!(bugs_bug282_drop_shadow_svg,                                 "bugs/bug282-drop-shadow.svg");
736
    t!(bugs_bug340047_svg,                                          "bugs/bug340047.svg");
737
    t!(bugs_bug363_missing_space_svg,                               "bugs/bug363-missing-space.svg");
738
    t!(bugs_bug372_small_arcs_svg,                                  "bugs/bug372-small-arcs.svg");
739
    t!(bugs_bug373_gradient_userspaceonuse_svg,                     "bugs/bug373-gradient-userspaceonuse.svg");
740
    t!(bugs_bug403357_svg,                                          "bugs/bug403357.svg");
741
    t!(bugs_bug476507_svg,                                          "bugs/bug476507.svg");
742
    t!(bugs_bug481_tspan_uses_at_least_first_x_svg,                 "bugs/bug481-tspan-uses-at-least-first-x.svg");
743
    t!(bugs_bug494_text_accumulate_dy_svg,                          "bugs/bug494-text-accumulate-dy.svg");
744
    t!(bugs_bug506_pattern_fallback_svg,                            "bugs/bug506-pattern-fallback.svg");
745
    t!(bugs_bug510_pattern_fill_opacity_svg,                        "bugs/bug510-pattern-fill-opacity.svg");
746
    t!(bugs_bug510_pattern_fill_svg,                                "bugs/bug510-pattern-fill.svg");
747
    t!(bugs_bug548_data_url_without_mimetype_svg,                   "bugs/bug548-data-url-without-mimetype.svg");
748
    t!(bugs_bug563933_svg,                                          "bugs/bug563933.svg");
749
    t!(bugs_bug587721_text_transform_svg,                           "bugs/bug587721-text-transform.svg");
750
    t!(bugs_bug590_mask_units_svg,                                  "bugs/bug590-mask-units.svg");
751
    t!(bugs_bug603550_mask_luminance_svg,                           "bugs/bug603550-mask-luminance.svg");
752
    t!(bugs_bug609_clippath_transform_svg,                          "bugs/bug609-clippath-transform.svg");
753
    t!(bugs_bug634324_blur_negative_transform_svg,                  "bugs/bug634324-blur-negative-transform.svg");
754
    t!(bugs_bug642_nested_tspan_dx_dy_svg,                          "bugs/bug642-nested-tspan-dx-dy.svg");
755
    t!(bugs_bug667_tspan_visibility_svg,                            "bugs/bug667-tspan-visibility.svg");
756
    t!(bugs_bug668_small_caps_svg,                                  "bugs/bug668-small-caps.svg");
757
    t!(bugs_bug689832_unresolved_gradient_svg,                      "bugs/bug689832-unresolved-gradient.svg");
758
    t!(bugs_bug718_rect_negative_rx_ry_svg,                         "bugs/bug718-rect-negative-rx-ry.svg");
759
    t!(bugs_bug730_font_scaling_svg,                                "bugs/bug730-font-scaling.svg");
760
    t!(bugs_bug738367_svg,                                          "bugs/bug738367.svg");
761
    t!(bugs_bug749415_svg,                                          "bugs/bug749415.svg");
762
    t!(bugs_bug760180_svg,                                          "bugs/bug760180.svg");
763
    t!(bugs_bug761175_recursive_masks_svg,                          "bugs/bug761175-recursive-masks.svg");
764
    t!(bugs_bug761871_reset_reflection_points_svg,                  "bugs/bug761871-reset-reflection-points.svg");
765
    t!(bugs_bug763386_marker_coincident_svg,                        "bugs/bug763386-marker-coincident.svg");
766
    t!(bugs_bug776297_marker_on_non_path_elements_svg,              "bugs/bug776297-marker-on-non-path-elements.svg");
767
    t!(bugs_bug786372_default_style_type_svg,                       "bugs/bug786372-default-style-type.svg");
768
    t!(bugs_bug788_inner_svg_viewbox_svg,                           "bugs/bug788-inner-svg-viewbox.svg");
769
    t!(bugs_ignore_577_multiple_font_families_svg,                  "bugs/ignore-577-multiple-font-families.svg");
770
    t!(svg1_1_coords_trans_01_b_svg,                                "svg1.1/coords-trans-01-b.svg");
771
    t!(svg1_1_coords_trans_02_t_svg,                                "svg1.1/coords-trans-02-t.svg");
772
    t!(svg1_1_coords_trans_03_t_svg,                                "svg1.1/coords-trans-03-t.svg");
773
    t!(svg1_1_coords_trans_04_t_svg,                                "svg1.1/coords-trans-04-t.svg");
774
    t!(svg1_1_coords_trans_05_t_svg,                                "svg1.1/coords-trans-05-t.svg");
775
    t!(svg1_1_coords_trans_06_t_svg,                                "svg1.1/coords-trans-06-t.svg");
776
    t!(svg1_1_coords_trans_07_t_svg,                                "svg1.1/coords-trans-07-t.svg");
777
    t!(svg1_1_coords_trans_08_t_svg,                                "svg1.1/coords-trans-08-t.svg");
778
    t!(svg1_1_coords_trans_09_t_svg,                                "svg1.1/coords-trans-09-t.svg");
779
    t!(svg1_1_coords_viewattr_01_b_svg,                             "svg1.1/coords-viewattr-01-b.svg");
780
    t!(svg1_1_coords_viewattr_02_b_svg,                             "svg1.1/coords-viewattr-02-b.svg");
781
    t!(svg1_1_coords_viewattr_03_b_svg,                             "svg1.1/coords-viewattr-03-b.svg");
782
    t!(svg1_1_coords_viewattr_04_f_svg,                             "svg1.1/coords-viewattr-04-f.svg");
783
    t!(svg1_1_filters_background_01_f_svg,                          "svg1.1/filters-background-01-f.svg");
784
    t!(svg1_1_filters_blend_01_b_svg,                               "svg1.1/filters-blend-01-b.svg");
785
    t!(svg1_1_filters_color_01_b_svg,                               "svg1.1/filters-color-01-b.svg");
786
    t!(svg1_1_filters_color_02_b_svg,                               "svg1.1/filters-color-02-b.svg");
787
    t!(svg1_1_filters_composite_02_b_svg,                           "svg1.1/filters-composite-02-b.svg");
788
    t!(svg1_1_filters_composite_03_f_svg,                           "svg1.1/filters-composite-03-f.svg");
789
    t!(svg1_1_filters_composite_04_f_svg,                           "svg1.1/filters-composite-04-f.svg");
790
    t!(svg1_1_filters_composite_05_f_svg,                           "svg1.1/filters-composite-05-f.svg");
791
    t!(svg1_1_filters_comptran_01_b_svg,                            "svg1.1/filters-comptran-01-b.svg");
792
    t!(svg1_1_filters_conv_01_f_svg,                                "svg1.1/filters-conv-01-f.svg");
793
    t!(svg1_1_filters_conv_02_f_svg,                                "svg1.1/filters-conv-02-f.svg");
794
    t!(svg1_1_filters_conv_03_f_svg,                                "svg1.1/filters-conv-03-f.svg");
795
    t!(svg1_1_filters_conv_04_f_svg,                                "svg1.1/filters-conv-04-f.svg");
796
    t!(svg1_1_filters_conv_05_f_svg,                                "svg1.1/filters-conv-05-f.svg");
797
    t!(svg1_1_filters_diffuse_01_f_svg,                             "svg1.1/filters-diffuse-01-f.svg");
798
    t!(svg1_1_filters_displace_02_f_svg,                            "svg1.1/filters-displace-02-f.svg");
799
    t!(svg1_1_filters_felem_02_f_svg,                               "svg1.1/filters-felem-02-f.svg");
800
    t!(svg1_1_filters_gauss_01_b_svg,                               "svg1.1/filters-gauss-01-b.svg");
801
    t!(svg1_1_filters_gauss_02_f_svg,                               "svg1.1/filters-gauss-02-f.svg");
802
    t!(svg1_1_filters_gauss_03_f_svg,                               "svg1.1/filters-gauss-03-f.svg");
803
    t!(svg1_1_filters_image_01_b_svg,                               "svg1.1/filters-image-01-b.svg");
804
    t!(svg1_1_filters_image_02_b_svg,                               "svg1.1/filters-image-02-b.svg");
805
    t!(svg1_1_filters_image_03_f_svg,                               "svg1.1/filters-image-03-f.svg");
806
    t!(svg1_1_filters_image_04_f_svg,                               "svg1.1/filters-image-04-f.svg");
807
    t!(svg1_1_filters_image_05_f_svg,                               "svg1.1/filters-image-05-f.svg");
808
    t!(svg1_1_filters_light_01_f_svg,                               "svg1.1/filters-light-01-f.svg");
809
    t!(svg1_1_filters_light_02_f_svg,                               "svg1.1/filters-light-02-f.svg");
810
    t!(svg1_1_filters_light_03_f_svg,                               "svg1.1/filters-light-03-f.svg");
811
    t!(svg1_1_filters_light_04_f_svg,                               "svg1.1/filters-light-04-f.svg");
812
    t!(svg1_1_filters_light_05_f_svg,                               "svg1.1/filters-light-05-f.svg");
813
    t!(svg1_1_filters_morph_01_f_svg,                               "svg1.1/filters-morph-01-f.svg");
814
    t!(svg1_1_filters_offset_01_b_svg,                              "svg1.1/filters-offset-01-b.svg");
815
    t!(svg1_1_filters_overview_01_b_svg,                            "svg1.1/filters-overview-01-b.svg");
816
    t!(svg1_1_filters_overview_02_b_svg,                            "svg1.1/filters-overview-02-b.svg");
817
    t!(svg1_1_filters_overview_03_b_svg,                            "svg1.1/filters-overview-03-b.svg");
818
    t!(svg1_1_filters_specular_01_f_svg,                            "svg1.1/filters-specular-01-f.svg");
819
    t!(svg1_1_filters_tile_01_b_svg,                                "svg1.1/filters-tile-01-b.svg");
820
    t!(svg1_1_filters_turb_01_f_svg,                                "svg1.1/filters-turb-01-f.svg");
821
    t!(svg1_1_filters_turb_02_f_svg,                                "svg1.1/filters-turb-02-f.svg");
822
    t!(svg1_1_ignore_filters_displace_01_f_svg,                     "svg1.1/ignore-filters-displace-01-f.svg");
823
    t!(svg1_1_ignore_filters_example_01_b_svg,                      "svg1.1/ignore-filters-example-01-b.svg");
824
    t!(svg1_1_ignore_masking_path_07_b_svg,                         "svg1.1/ignore-masking-path-07-b.svg");
825
    t!(svg1_1_masking_filter_01_f_svg,                              "svg1.1/masking-filter-01-f.svg");
826
    t!(svg1_1_masking_intro_01_f_svg,                               "svg1.1/masking-intro-01-f.svg");
827
    t!(svg1_1_masking_mask_01_b_svg,                                "svg1.1/masking-mask-01-b.svg");
828
    t!(svg1_1_masking_mask_02_f_svg,                                "svg1.1/masking-mask-02-f.svg");
829
    t!(svg1_1_masking_opacity_01_b_svg,                             "svg1.1/masking-opacity-01-b.svg");
830
    t!(svg1_1_masking_path_01_b_svg,                                "svg1.1/masking-path-01-b.svg");
831
    t!(svg1_1_masking_path_02_b_svg,                                "svg1.1/masking-path-02-b.svg");
832
    t!(svg1_1_masking_path_03_b_svg,                                "svg1.1/masking-path-03-b.svg");
833
    t!(svg1_1_masking_path_04_b_svg,                                "svg1.1/masking-path-04-b.svg");
834
    t!(svg1_1_masking_path_05_f_svg,                                "svg1.1/masking-path-05-f.svg");
835
    t!(svg1_1_masking_path_08_b_svg,                                "svg1.1/masking-path-08-b.svg");
836
    t!(svg1_1_painting_control_02_f_svg,                            "svg1.1/painting-control-02-f.svg");
837
    t!(svg1_1_painting_marker_01_f_svg,                             "svg1.1/painting-marker-01-f.svg");
838
    t!(svg1_1_painting_marker_02_f_svg,                             "svg1.1/painting-marker-02-f.svg");
839
    t!(svg1_1_painting_marker_03_f_svg,                             "svg1.1/painting-marker-03-f.svg");
840
    t!(svg1_1_painting_marker_04_f_svg,                             "svg1.1/painting-marker-04-f.svg");
841
    t!(svg1_1_painting_marker_06_f_svg,                             "svg1.1/painting-marker-06-f.svg");
842
    t!(svg1_1_painting_marker_07_f_svg,                             "svg1.1/painting-marker-07-f.svg");
843
    t!(svg1_1_painting_marker_properties_01_f_svg,                  "svg1.1/painting-marker-properties-01-f.svg");
844
    t!(svg1_1_painting_stroke_01_t_svg,                             "svg1.1/painting-stroke-01-t.svg");
845
    t!(svg1_1_painting_stroke_02_t_svg,                             "svg1.1/painting-stroke-02-t.svg");
846
    t!(svg1_1_painting_stroke_03_t_svg,                             "svg1.1/painting-stroke-03-t.svg");
847
    t!(svg1_1_painting_stroke_04_t_svg,                             "svg1.1/painting-stroke-04-t.svg");
848
    t!(svg1_1_painting_stroke_05_t_svg,                             "svg1.1/painting-stroke-05-t.svg");
849
    t!(svg1_1_painting_stroke_06_t_svg,                             "svg1.1/painting-stroke-06-t.svg");
850
    t!(svg1_1_painting_stroke_07_t_svg,                             "svg1.1/painting-stroke-07-t.svg");
851
    t!(svg1_1_painting_stroke_08_t_svg,                             "svg1.1/painting-stroke-08-t.svg");
852
    t!(svg1_1_painting_stroke_09_t_svg,                             "svg1.1/painting-stroke-09-t.svg");
853
    t!(svg1_1_paths_data_01_t_svg,                                  "svg1.1/paths-data-01-t.svg");
854
    t!(svg1_1_paths_data_02_t_svg,                                  "svg1.1/paths-data-02-t.svg");
855
    t!(svg1_1_paths_data_03_f_svg,                                  "svg1.1/paths-data-03-f.svg");
856
    t!(svg1_1_paths_data_04_t_svg,                                  "svg1.1/paths-data-04-t.svg");
857
    t!(svg1_1_paths_data_05_t_svg,                                  "svg1.1/paths-data-05-t.svg");
858
    t!(svg1_1_paths_data_06_t_svg,                                  "svg1.1/paths-data-06-t.svg");
859
    t!(svg1_1_paths_data_07_t_svg,                                  "svg1.1/paths-data-07-t.svg");
860
    t!(svg1_1_paths_data_08_t_svg,                                  "svg1.1/paths-data-08-t.svg");
861
    t!(svg1_1_paths_data_09_t_svg,                                  "svg1.1/paths-data-09-t.svg");
862
    t!(svg1_1_paths_data_10_t_svg,                                  "svg1.1/paths-data-10-t.svg");
863
    t!(svg1_1_paths_data_12_t_svg,                                  "svg1.1/paths-data-12-t.svg");
864
    t!(svg1_1_paths_data_13_t_svg,                                  "svg1.1/paths-data-13-t.svg");
865
    t!(svg1_1_paths_data_14_t_svg,                                  "svg1.1/paths-data-14-t.svg");
866
    t!(svg1_1_paths_data_15_t_svg,                                  "svg1.1/paths-data-15-t.svg");
867
    t!(svg1_1_paths_data_16_t_svg,                                  "svg1.1/paths-data-16-t.svg");
868
    t!(svg1_1_paths_data_17_f_svg,                                  "svg1.1/paths-data-17-f.svg");
869
    t!(svg1_1_paths_data_18_f_svg,                                  "svg1.1/paths-data-18-f.svg");
870
    t!(svg1_1_paths_data_19_f_svg,                                  "svg1.1/paths-data-19-f.svg");
871
    t!(svg1_1_paths_data_20_f_svg,                                  "svg1.1/paths-data-20-f.svg");
872
    t!(svg1_1_pservers_grad_01_b_svg,                               "svg1.1/pservers-grad-01-b.svg");
873
    t!(svg1_1_pservers_grad_02_b_svg,                               "svg1.1/pservers-grad-02-b.svg");
874
    t!(svg1_1_pservers_grad_03_b_svg,                               "svg1.1/pservers-grad-03-b.svg");
875
    t!(svg1_1_pservers_grad_04_b_svg,                               "svg1.1/pservers-grad-04-b.svg");
876
    t!(svg1_1_pservers_grad_05_b_svg,                               "svg1.1/pservers-grad-05-b.svg");
877
    t!(svg1_1_pservers_grad_06_b_svg,                               "svg1.1/pservers-grad-06-b.svg");
878
    t!(svg1_1_pservers_grad_07_b_svg,                               "svg1.1/pservers-grad-07-b.svg");
879
    t!(svg1_1_pservers_grad_08_b_svg,                               "svg1.1/pservers-grad-08-b.svg");
880
    t!(svg1_1_pservers_grad_09_b_svg,                               "svg1.1/pservers-grad-09-b.svg");
881
    t!(svg1_1_pservers_grad_10_b_svg,                               "svg1.1/pservers-grad-10-b.svg");
882
    t!(svg1_1_pservers_grad_11_b_svg,                               "svg1.1/pservers-grad-11-b.svg");
883
    t!(svg1_1_pservers_grad_12_b_svg,                               "svg1.1/pservers-grad-12-b.svg");
884
    t!(svg1_1_pservers_grad_14_b_svg,                               "svg1.1/pservers-grad-14-b.svg");
885
    t!(svg1_1_pservers_grad_15_b_svg,                               "svg1.1/pservers-grad-15-b.svg");
886
    t!(svg1_1_pservers_grad_16_b_svg,                               "svg1.1/pservers-grad-16-b.svg");
887
    t!(svg1_1_pservers_grad_18_b_svg,                               "svg1.1/pservers-grad-18-b.svg");
888
    t!(svg1_1_pservers_grad_22_b_svg,                               "svg1.1/pservers-grad-22-b.svg");
889
    t!(svg1_1_pservers_grad_23_f_svg,                               "svg1.1/pservers-grad-23-f.svg");
890
    t!(svg1_1_pservers_grad_24_f_svg,                               "svg1.1/pservers-grad-24-f.svg");
891
    t!(svg1_1_pservers_grad_stops_01_f_svg,                         "svg1.1/pservers-grad-stops-01-f.svg");
892
    t!(svg1_1_pservers_pattern_01_b_svg,                            "svg1.1/pservers-pattern-01-b.svg");
893
    t!(svg1_1_pservers_pattern_02_f_svg,                            "svg1.1/pservers-pattern-02-f.svg");
894
    t!(svg1_1_pservers_pattern_03_f_svg,                            "svg1.1/pservers-pattern-03-f.svg");
895
    t!(svg1_1_pservers_pattern_04_f_svg,                            "svg1.1/pservers-pattern-04-f.svg");
896
    t!(svg1_1_pservers_pattern_05_f_svg,                            "svg1.1/pservers-pattern-05-f.svg");
897
    t!(svg1_1_pservers_pattern_06_f_svg,                            "svg1.1/pservers-pattern-06-f.svg");
898
    t!(svg1_1_pservers_pattern_07_f_svg,                            "svg1.1/pservers-pattern-07-f.svg");
899
    t!(svg1_1_pservers_pattern_08_f_svg,                            "svg1.1/pservers-pattern-08-f.svg");
900
    t!(svg1_1_pservers_pattern_09_f_svg,                            "svg1.1/pservers-pattern-09-f.svg");
901
    t!(svg1_1_shapes_intro_01_t_svg,                                "svg1.1/shapes-intro-01-t.svg");
902
    t!(svg1_1_shapes_intro_02_f_svg,                                "svg1.1/shapes-intro-02-f.svg");
903
    t!(svg1_1_struct_cond_01_t_svg,                                 "svg1.1/struct-cond-01-t.svg");
904
    t!(svg1_1_struct_cond_03_t_svg,                                 "svg1.1/struct-cond-03-t.svg");
905
    t!(svg1_1_struct_group_03_t_svg,                                "svg1.1/struct-group-03-t.svg");
906
    t!(svg1_1_struct_image_05_b_svg,                                "svg1.1/struct-image-05-b.svg");
907
    t!(svg1_1_struct_svg_03_f_svg,                                  "svg1.1/struct-svg-03-f.svg");
908
    t!(svg1_1_struct_symbol_01_b_svg,                               "svg1.1/struct-symbol-01-b.svg");
909
    t!(svg1_1_struct_use_01_t_svg,                                  "svg1.1/struct-use-01-t.svg");
910
    t!(svg1_1_struct_use_03_t_svg,                                  "svg1.1/struct-use-03-t.svg");
911
    t!(svg1_1_struct_use_04_b_svg,                                  "svg1.1/struct-use-04-b.svg");
912
    t!(svg1_1_struct_use_09_b_svg,                                  "svg1.1/struct-use-09-b.svg");
913
    t!(svg1_1_struct_use_10_f_svg,                                  "svg1.1/struct-use-10-f.svg");
914
    t!(svg1_1_styling_css_01_b_svg,                                 "svg1.1/styling-css-01-b.svg");
915
    t!(svg1_1_styling_css_02_b_svg,                                 "svg1.1/styling-css-02-b.svg");
916
    t!(svg1_1_styling_css_03_b_svg,                                 "svg1.1/styling-css-03-b.svg");
917
    t!(svg1_1_styling_css_04_f_svg,                                 "svg1.1/styling-css-04-f.svg");
918
    t!(svg1_1_styling_css_07_f_svg,                                 "svg1.1/styling-css-07-f.svg");
919
    t!(svg1_1_styling_css_08_f_svg,                                 "svg1.1/styling-css-08-f.svg");
920
    t!(svg1_1_text_align_01_b_svg,                                  "svg1.1/text-align-01-b.svg");
921
    t!(svg1_1_text_align_02_b_svg,                                  "svg1.1/text-align-02-b.svg");
922
    t!(svg1_1_text_align_03_b_svg,                                  "svg1.1/text-align-03-b.svg");
923
    t!(svg1_1_text_fonts_02_t_svg,                                  "svg1.1/text-fonts-02-t.svg");
924
    t!(svg1_1_text_text_03_b_svg,                                   "svg1.1/text-text-03-b.svg");
925
    t!(svg1_1_text_text_08_b_svg,                                   "svg1.1/text-text-08-b.svg");
926
    t!(svg1_1_text_text_10_t_svg,                                   "svg1.1/text-text-10-t.svg");
927
    t!(svg1_1_text_tref_01_b_svg,                                   "svg1.1/text-tref-01-b.svg");
928
    t!(svg1_1_text_tref_02_b_svg,                                   "svg1.1/text-tref-02-b.svg");
929
    t!(svg1_1_text_tref_03_b_svg,                                   "svg1.1/text-tref-03-b.svg");
930
    t!(svg1_1_types_basic_02_f_svg,                                 "svg1.1/types-basic-02-f.svg");
931
    t!(svg2_gradient_01_b_svg,                                      "svg2/gradient-01-b.svg");
932
    t!(svg2_mix_blend_mode_svg,                                     "svg2/mix-blend-mode.svg");
933
    t!(svg2_multi_filter_svg,                                       "svg2/multi-filter.svg");
934
    t!(svg2_paint_order_svg,                                        "svg2/paint-order.svg");
935
    t!(svg2_text_paint_order_svg,                                   "svg2/text-paint-order.svg");
936
}
937

            
938
test_compare_render_output!(
939
    marker_orient_auto_start_reverse,
940
    100,
941
    100,
942
    br##"<svg xmlns="http://www.w3.org/2000/svg" width="100" height="100">
943
    <defs>
944
      <marker id="marker" orient="auto-start-reverse" viewBox="0 0 10 10"
945
              refX="0" refY="5" markerWidth="10" markerHeight="10"
946
              markerUnits="userSpaceOnUse">
947
        <path d="M0,0 L10,5 L0,10 Z" fill="green"/>
948
      </marker>
949
    </defs>
950
  
951
    <path d="M20,50 L80,50" marker-start="url(#marker)" marker-end="url(#marker)" stroke-width="10" stroke="black"/>
952
  </svg>"##,
953

            
954
    br##"<?xml version="1.0" encoding="UTF-8" standalone="no"?>
955
    <svg xmlns="http://www.w3.org/2000/svg" width="100" height="100">
956
      <path
957
         d="M 20,55 10,50 20,45 Z"
958
         id="triangle1" fill="green"/>
959
      <path
960
         d="m 80,45 10,5 -10,5 z"
961
         id="triangle2" fill="green"/>
962
      <rect
963
         id="rectangle"
964
         width="60"
965
         height="10"
966
         x="20"
967
         y="45" fill="black"/>
968
    </svg>"##,
969
);
970

            
971
test_compare_render_output!(
972
    marker_context_stroke_fill,
973
    400,
974
    400,
975
    br##"<?xml version="1.0" encoding="UTF-8"?>
976
    <svg xmlns="http://www.w3.org/2000/svg" width="400" height="400">
977
      <style>
978
        .path1 {
979
          fill: none;
980
          stroke-width: 4px;
981
          marker: url(#marker1);
982
        }
983
    
984
        .path2 {
985
          fill: darkblue;
986
          stroke: mediumseagreen;
987
          stroke-width: 4px;
988
          marker: url(#marker2);
989
        }
990
      </style>
991
    
992
      <path class="path1" d="M20,20 L200,20 L380,20" stroke="lime"/>
993
    
994
      <path class="path2" d="M20,40 h360 v320 h-360 v-320 Z"/>
995
    
996
      <marker id="marker1" markerWidth="12" markerHeight="12" refX="6" refY="6"
997
              markerUnits="userSpaceOnUse">
998
        <circle cx="6" cy="6" r="3"
999
                fill="white" stroke="context-stroke" stroke-width="2"/>
      </marker>
      <marker id="marker2" markerWidth="12" markerHeight="12" refX="6" refY="6"
              markerUnits="userSpaceOnUse">
        <!-- Note that here the paint is reversed:
             fill=context-stroke,
             stroke=context-fill 
        -->
        <circle cx="6" cy="6" r="3"
                fill="context-stroke" stroke="context-fill" stroke-width="2"/>
      </marker>
    </svg>"##,
    br##"<?xml version="1.0" encoding="UTF-8"?>
    <svg xmlns="http://www.w3.org/2000/svg" width="400" height="400">
      <path d="M20,20 L200,20 L380,20" stroke="lime" stroke-width="4"/>
      <circle cx="20" cy="20" r="3" stroke-width="2" fill="white" stroke="lime"/>
      <circle cx="200" cy="20" r="3" stroke-width="2" fill="white" stroke="lime"/>
      <circle cx="380" cy="20" r="3" stroke-width="2" fill="white" stroke="lime"/>
      <path class="path2" d="M20,40 h360 v320 h-360 v-320 Z" fill="darkblue"
            stroke="mediumseagreen" stroke-width="4"/>
      <circle cx="20"  cy="40"  r="3" fill="mediumseagreen" stroke="darkblue" stroke-width="2"/>
      <circle cx="20"  cy="40"  r="3" fill="mediumseagreen" stroke="darkblue" stroke-width="2"/>
      <circle cx="380" cy="40"  r="3" fill="mediumseagreen" stroke="darkblue" stroke-width="2"/>
      <circle cx="380" cy="360" r="3" fill="mediumseagreen" stroke="darkblue" stroke-width="2"/>
      <circle cx="20"  cy="360" r="3" fill="mediumseagreen" stroke="darkblue" stroke-width="2"/>
      <circle cx="20"  cy="40"  r="3" fill="mediumseagreen" stroke="darkblue" stroke-width="2"/>
    </svg>
    "##,
);
test_compare_render_output!(
    image_auto_width_height,
    30,
    30,
    br##"<?xml version="1.0" encoding="UTF-8"?>
    <svg xmlns="http://www.w3.org/2000/svg" width="30" height="30">
      <image
        href="data:;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAIAAAACUFjqAAAAFElEQVQY02Nk+M+ABzAxMIxKYwIAQC0BEwZFOw4AAAAASUVORK5CYII="
        x="10" y="10"/>
    </svg>"##,
    br##"<?xml version="1.0" encoding="UTF-8"?>
    <svg xmlns="http://www.w3.org/2000/svg" width="30" height="30">
      <rect x="10" y="10" width="10" height="10" fill="lime"/>
    </svg>"##,
);
test_compare_render_output!(
    rect_auto_width_height,
    30,
    30,
    br##"<?xml version="1.0" encoding="UTF-8"?>
    <svg xmlns="http://www.w3.org/2000/svg" width="30" height="30">
      <rect x="10" y="10" width="auto" height="auto" fill="lime"/>
    </svg>"##,
    br##"<?xml version="1.0" encoding="UTF-8"?>
    <svg xmlns="http://www.w3.org/2000/svg" width="30" height="30">
    </svg>"##
);
test_compare_render_output!(
    svg_auto_width_height,
    30,
    30,
    br##"<?xml version="1.0" encoding="UTF-8"?>
    <svg xmlns="http://www.w3.org/2000/svg" width="30" height="30">
      <svg xmlns="http://www.w3.org/2000/svg" width="auto" height="auto">
        <rect x="10" y="10" width="100%" height="100%" fill="lime"/>
      </svg>
    </svg>"##,
    br##"<?xml version="1.0" encoding="UTF-8"?>
    <svg xmlns="http://www.w3.org/2000/svg" width="30" height="30">
      <rect x="10" y="10" width="100%" height="100%" fill="lime"/>
    </svg>"##,
);
test_compare_render_output!(
    use_context_stroke,
    100,
    20,
    br##"<?xml version="1.0" encoding="UTF-8"?>
    <svg width="100" height="20" viewBox="0 0 40 10" xmlns="http://www.w3.org/2000/svg">
  <g id="group">
    <circle cx="5" cy="5" r="4" stroke="context-stroke" fill="black"/>
    <circle cx="14" cy="5" r="4" stroke="context-fill"/>
  </g>
  <use href="#group" x="20" stroke="blue" fill="yellow"/>
  <!--
  Modified from: https://developer.mozilla.org/en-US/docs/Web/SVG/Element/use
  -->
</svg>
    "##,
    br##"<?xml version="1.0" encoding="UTF-8"?>
    <svg width="100" height="20" viewBox="0 0 40 10" xmlns="http://www.w3.org/2000/svg">
    <circle cx="5" cy="5" r="4" fill="black"/>
    <circle cx="14" cy="5" r="4" fill="black"/>
    <circle cx="25" cy="5" r="4" stroke="blue" fill="black"/>
    <circle cx="34" cy="5" r="4" stroke="yellow" fill="yellow"/>
    <!--
    Modified from: https://developer.mozilla.org/en-US/docs/Web/SVG/Element/use
    -->
  </svg>
    "##,
);
test_svg_reference!(
    isolation,
    "tests/fixtures/reftests/svg2-reftests/isolation.svg",
    "tests/fixtures/reftests/svg2-reftests/isolation-ref.svg"
);
test_svg_reference!(
    mask_and_opacity,
    "tests/fixtures/reftests/svg2-reftests/mask-and-opacity.svg",
    "tests/fixtures/reftests/svg2-reftests/mask-and-opacity-ref.svg"
);
test_svg_reference!(
    gaussian_blur_nonpositive_913,
    "tests/fixtures/reftests/svg2-reftests/bug913-gaussian-blur-nonpositive.svg",
    "tests/fixtures/reftests/svg2-reftests/bug913-gaussian-blur-nonpositive-ref.svg"
);
test_svg_reference!(
    bug_880_horizontal_vertical_stroked_lines,
    "tests/fixtures/reftests/bugs-reftests/bug880-stroke-wide-line.svg",
    "tests/fixtures/reftests/bugs-reftests/bug880-stroke-wide-line-ref.svg"
);
test_svg_reference!(
    bug_92_symbol_clip,
    "tests/fixtures/reftests/bugs-reftests/bug92-symbol-clip.svg",
    "tests/fixtures/reftests/bugs-reftests/bug92-symbol-clip-ref.svg"
);
test_svg_reference!(
    bug_875_svg_use_width_height,
    "tests/fixtures/reftests/bugs-reftests/bug875-svg-use-width-height.svg",
    "tests/fixtures/reftests/bugs-reftests/bug875-svg-use-width-height-ref.svg"
);
test_svg_reference!(
    bug_885_vector_effect_non_scaling_stroke,
    "tests/fixtures/reftests/bugs-reftests/bug885-vector-effect-non-scaling-stroke.svg",
    "tests/fixtures/reftests/bugs-reftests/bug885-vector-effect-non-scaling-stroke-ref.svg"
);
test_svg_reference!(
    bug_930_invalid_clip_path_transform,
    "tests/fixtures/reftests/bugs-reftests/bug930-invalid-clip-path-transform.svg",
    "tests/fixtures/reftests/bugs-reftests/bug930-invalid-clip-path-transform-ref.svg"
);
test_svg_reference!(
    bug_985_image_rendering_property,
    "tests/fixtures/reftests/svg2-reftests/image-rendering-985.svg",
    "tests/fixtures/reftests/svg2-reftests/image-rendering-985-ref.svg"
);
test_svg_reference!(
    bug_992_use_symbol_cascade,
    "tests/fixtures/reftests/bugs/use-symbol-cascade-992.svg",
    "tests/fixtures/reftests/bugs/use-symbol-cascade-992-ref.svg"
);
test_svg_reference!(
    color_types,
    "tests/fixtures/reftests/color-types.svg",
    "tests/fixtures/reftests/color-types-ref.svg"
);
// Note that this uses the same reference file as color-types.svg - the result ought to be the same.
test_svg_reference!(
    color_property_color_types,
    "tests/fixtures/reftests/color-property-color-types.svg",
    "tests/fixtures/reftests/color-types-ref.svg"
);
test_svg_reference!(
    color_types_unsupported,
    "tests/fixtures/reftests/color-types-unsupported.svg",
    "tests/fixtures/reftests/color-types-unsupported-ref.svg"
);
test_svg_reference!(
    invalid_gradient_transform,
    "tests/fixtures/reftests/invalid-gradient-transform.svg",
    "tests/fixtures/reftests/invalid-gradient-transform-ref.svg"
);
test_svg_reference!(
    xinclude_data_url,
    "tests/fixtures/reftests/xinclude-data-url.svg",
    "tests/fixtures/reftests/xinclude-data-url-ref.svg"
);
test_svg_reference!(
    markers_arc_segments,
    "tests/fixtures/reftests/markers-arc-segments.svg",
    "tests/fixtures/reftests/markers-arc-segments-ref.svg"
);