From 99ac612b8ad63536a648c349fedc1a96acd30be1 Mon Sep 17 00:00:00 2001 From: Andy Meneely Date: Tue, 18 Nov 2014 01:53:00 -0500 Subject: [PATCH] Regression testing: cairo mock object stores graphics calls So the idea behind this is maintain an "expected value" for the sample runs. We store the graphics calls and their arguments as a readable text file. Any change in the samples will break this, but the idea is to make sure this doesn't get broken unexpectedly. Rearranged the data files in specs --- spec/commands/new_spec.rb | 2 +- .../{ => layouts}/easy-circular-extends.yml | 0 .../{ => layouts}/hard-circular-extends.yml | 0 .../multi-extends-single-entry.yml | 0 .../{ => layouts}/multi-level-extends.yml | 0 spec/data/{ => layouts}/multifile-a.yml | 0 spec/data/{ => layouts}/multifile-b.yml | 0 .../{ => layouts}/multifile-extends-a.yml | 0 .../{ => layouts}/multifile-extends-b.yml | 0 spec/data/{ => layouts}/no-extends.yml | 0 spec/data/{ => layouts}/pre-extends.yml | 0 .../{ => layouts}/self-circular-extends.yml | 0 spec/data/{ => layouts}/single-extends.yml | 0 .../single-level-multi-extends.yml | 0 spec/data/samples/autoscale_font.rb.txt | 79 ++ spec/data/samples/basic.rb.txt | 204 +++++ spec/data/samples/cairo_access.rb.txt | 14 + spec/data/samples/colors.rb.txt | 124 +++ spec/data/samples/custom_config.rb.txt | 45 + spec/data/samples/draw_shapes.rb.txt | 35 + spec/data/samples/excel.rb.txt | 166 ++++ spec/data/samples/hello_world.rb.txt | 35 + spec/data/samples/layouts.rb.txt | 197 +++++ spec/data/samples/load_images.rb.txt | 104 +++ spec/data/samples/portrait-landscape.rb.txt | 49 ++ spec/data/samples/ranges.rb.txt | 424 +++++++++ spec/data/samples/save_pdf.rb.txt | 547 ++++++++++++ spec/data/samples/text_options.rb.txt | 820 ++++++++++++++++++ spec/data/samples/tgc_proofs.rb.txt | 81 ++ spec/data/samples/units.rb.txt | 40 + spec/deck_spec.rb | 26 +- spec/method_log_proxy.rb | 13 + spec/samples/samples_regression_spec.rb | 44 + spec/samples_run_spec.rb | 20 - spec/spec_helper.rb | 47 +- 35 files changed, 3080 insertions(+), 36 deletions(-) rename spec/data/{ => layouts}/easy-circular-extends.yml (100%) rename spec/data/{ => layouts}/hard-circular-extends.yml (100%) rename spec/data/{ => layouts}/multi-extends-single-entry.yml (100%) rename spec/data/{ => layouts}/multi-level-extends.yml (100%) rename spec/data/{ => layouts}/multifile-a.yml (100%) rename spec/data/{ => layouts}/multifile-b.yml (100%) rename spec/data/{ => layouts}/multifile-extends-a.yml (100%) rename spec/data/{ => layouts}/multifile-extends-b.yml (100%) rename spec/data/{ => layouts}/no-extends.yml (100%) rename spec/data/{ => layouts}/pre-extends.yml (100%) rename spec/data/{ => layouts}/self-circular-extends.yml (100%) rename spec/data/{ => layouts}/single-extends.yml (100%) rename spec/data/{ => layouts}/single-level-multi-extends.yml (100%) create mode 100644 spec/data/samples/autoscale_font.rb.txt create mode 100644 spec/data/samples/basic.rb.txt create mode 100644 spec/data/samples/cairo_access.rb.txt create mode 100644 spec/data/samples/colors.rb.txt create mode 100644 spec/data/samples/custom_config.rb.txt create mode 100644 spec/data/samples/draw_shapes.rb.txt create mode 100644 spec/data/samples/excel.rb.txt create mode 100644 spec/data/samples/hello_world.rb.txt create mode 100644 spec/data/samples/layouts.rb.txt create mode 100644 spec/data/samples/load_images.rb.txt create mode 100644 spec/data/samples/portrait-landscape.rb.txt create mode 100644 spec/data/samples/ranges.rb.txt create mode 100644 spec/data/samples/save_pdf.rb.txt create mode 100644 spec/data/samples/text_options.rb.txt create mode 100644 spec/data/samples/tgc_proofs.rb.txt create mode 100644 spec/data/samples/units.rb.txt create mode 100644 spec/method_log_proxy.rb create mode 100644 spec/samples/samples_regression_spec.rb delete mode 100644 spec/samples_run_spec.rb diff --git a/spec/commands/new_spec.rb b/spec/commands/new_spec.rb index 036c1e9..73bbbb8 100644 --- a/spec/commands/new_spec.rb +++ b/spec/commands/new_spec.rb @@ -26,7 +26,7 @@ describe Squib::Commands::New do end it 'creates a new template on an empty directory' do - Dir.mkdir('foo') + FileUtils.mkdir_p('foo') @cmd.process(['foo']) expect(File.exists?('foo/deck.rb')).to be true end diff --git a/spec/data/easy-circular-extends.yml b/spec/data/layouts/easy-circular-extends.yml similarity index 100% rename from spec/data/easy-circular-extends.yml rename to spec/data/layouts/easy-circular-extends.yml diff --git a/spec/data/hard-circular-extends.yml b/spec/data/layouts/hard-circular-extends.yml similarity index 100% rename from spec/data/hard-circular-extends.yml rename to spec/data/layouts/hard-circular-extends.yml diff --git a/spec/data/multi-extends-single-entry.yml b/spec/data/layouts/multi-extends-single-entry.yml similarity index 100% rename from spec/data/multi-extends-single-entry.yml rename to spec/data/layouts/multi-extends-single-entry.yml diff --git a/spec/data/multi-level-extends.yml b/spec/data/layouts/multi-level-extends.yml similarity index 100% rename from spec/data/multi-level-extends.yml rename to spec/data/layouts/multi-level-extends.yml diff --git a/spec/data/multifile-a.yml b/spec/data/layouts/multifile-a.yml similarity index 100% rename from spec/data/multifile-a.yml rename to spec/data/layouts/multifile-a.yml diff --git a/spec/data/multifile-b.yml b/spec/data/layouts/multifile-b.yml similarity index 100% rename from spec/data/multifile-b.yml rename to spec/data/layouts/multifile-b.yml diff --git a/spec/data/multifile-extends-a.yml b/spec/data/layouts/multifile-extends-a.yml similarity index 100% rename from spec/data/multifile-extends-a.yml rename to spec/data/layouts/multifile-extends-a.yml diff --git a/spec/data/multifile-extends-b.yml b/spec/data/layouts/multifile-extends-b.yml similarity index 100% rename from spec/data/multifile-extends-b.yml rename to spec/data/layouts/multifile-extends-b.yml diff --git a/spec/data/no-extends.yml b/spec/data/layouts/no-extends.yml similarity index 100% rename from spec/data/no-extends.yml rename to spec/data/layouts/no-extends.yml diff --git a/spec/data/pre-extends.yml b/spec/data/layouts/pre-extends.yml similarity index 100% rename from spec/data/pre-extends.yml rename to spec/data/layouts/pre-extends.yml diff --git a/spec/data/self-circular-extends.yml b/spec/data/layouts/self-circular-extends.yml similarity index 100% rename from spec/data/self-circular-extends.yml rename to spec/data/layouts/self-circular-extends.yml diff --git a/spec/data/single-extends.yml b/spec/data/layouts/single-extends.yml similarity index 100% rename from spec/data/single-extends.yml rename to spec/data/layouts/single-extends.yml diff --git a/spec/data/single-level-multi-extends.yml b/spec/data/layouts/single-level-multi-extends.yml similarity index 100% rename from spec/data/single-level-multi-extends.yml rename to spec/data/layouts/single-level-multi-extends.yml diff --git a/spec/data/samples/autoscale_font.rb.txt b/spec/data/samples/autoscale_font.rb.txt new file mode 100644 index 0000000..069d8a7 --- /dev/null +++ b/spec/data/samples/autoscale_font.rb.txt @@ -0,0 +1,79 @@ +=== autoscale_font.rb === +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([65, 400]) +cairo: rotate([0]) +cairo: translate([-65, -400]) +cairo: move_to([65, 400]) +pango: font_description=([#]) +pango: text=(["ShortBig"]) +pango: width=([716800]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: rounded_rectangle([65, 400, 0, 0, 0, 0]) +cairo: set_source_color([:red]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([65, 400]) +cairo: rotate([0]) +cairo: translate([-65, -400]) +cairo: move_to([65, 400]) +pango: font_description=([#]) +pango: text=(["Medium_Length_Name"]) +pango: width=([716800]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: rounded_rectangle([65, 400, 0, 0, 0, 0]) +cairo: set_source_color([:red]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([65, 400]) +cairo: rotate([0]) +cairo: translate([-65, -400]) +cairo: move_to([65, 400]) +pango: font_description=([#]) +pango: text=(["Super_Duper_Long_Name"]) +pango: width=([716800]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: rounded_rectangle([65, 400, 0, 0, 0, 0]) +cairo: set_source_color([:red]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: restore([]) diff --git a/spec/data/samples/basic.rb.txt b/spec/data/samples/basic.rb.txt new file mode 100644 index 0000000..ff7eaac --- /dev/null +++ b/spec/data/samples/basic.rb.txt @@ -0,0 +1,204 @@ +=== basic.rb === +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([75, 75, 128, 128, 25, 25]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([75, 75, 128, 128, 25, 25]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([75, 75, 128, 128, 25, 25]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([75, 75, 128, 128, 25, 25]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([75, 75, 128, 128, 25, 25]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([75, 75, 128, 128, 25, 25]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([220, 78]) +cairo: rotate([0]) +cairo: translate([-220, -78]) +cairo: move_to([220, 78]) +pango: font_description=([#]) +pango: text=(["Thief"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([220, 78]) +cairo: rotate([0]) +cairo: translate([-220, -78]) +cairo: move_to([220, 78]) +pango: font_description=([#]) +pango: text=(["Grifter"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([220, 78]) +cairo: rotate([0]) +cairo: translate([-220, -78]) +cairo: move_to([220, 78]) +pango: font_description=([#]) +pango: text=(["Mastermind"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([75, 85]) +cairo: rotate([0]) +cairo: translate([-75, -85]) +cairo: move_to([75, 85]) +pango: font_description=([#]) +pango: text=(["1"]) +pango: width=([131072]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([75, 85]) +cairo: rotate([0]) +cairo: translate([-75, -85]) +cairo: move_to([75, 85]) +pango: font_description=([#]) +pango: text=(["2"]) +pango: width=([131072]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([75, 85]) +cairo: rotate([0]) +cairo: translate([-75, -85]) +cairo: move_to([75, 85]) +pango: font_description=([#]) +pango: text=(["3"]) +pango: width=([131072]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: translate([620, 75]) +cairo: rotate([0]) +cairo: translate([-620, -75]) +cairo: set_source([#, 620, 75]) +cairo: paint([1.0]) +cairo: restore([]) +cairo: save([]) +cairo: translate([620, 75]) +cairo: rotate([0]) +cairo: translate([-620, -75]) +cairo: set_source([#, 620, 75]) +cairo: paint([1.0]) +cairo: restore([]) +cairo: scale([1.0, 1.0]) +cairo: render_rsvg_handle([#, nil]) +cairo: save([]) +cairo: translate([620, 218]) +cairo: rotate([0]) +cairo: translate([-620, -218]) +cairo: set_source([#, 620, 218]) +cairo: paint([1.0]) +cairo: restore([]) +cairo: scale([1.0, 1.0]) +cairo: render_rsvg_handle([#, nil]) +cairo: save([]) +cairo: translate([620, 218]) +cairo: rotate([0]) +cairo: translate([-620, -218]) +cairo: set_source([#, 620, 218]) +cairo: paint([1.0]) +cairo: restore([]) diff --git a/spec/data/samples/cairo_access.rb.txt b/spec/data/samples/cairo_access.rb.txt new file mode 100644 index 0000000..564a495 --- /dev/null +++ b/spec/data/samples/cairo_access.rb.txt @@ -0,0 +1,14 @@ +=== cairo_access.rb === +cairo: save([]) +cairo: set_source_color([:white]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([:white]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: circle([50, 50, 50]) +cairo: set_source_color([:red]) +cairo: fill([]) +cairo: restore([]) diff --git a/spec/data/samples/colors.rb.txt b/spec/data/samples/colors.rb.txt new file mode 100644 index 0000000..a3617e6 --- /dev/null +++ b/spec/data/samples/colors.rb.txt @@ -0,0 +1,124 @@ +=== colors.rb === +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([50, 50]) +cairo: rotate([0]) +cairo: translate([-50, -50]) +cairo: move_to([50, 50]) +pango: font_description=([#]) +pango: text=(["3-hex"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([50, 100]) +cairo: rotate([0]) +cairo: translate([-50, -100]) +cairo: move_to([50, 100]) +pango: font_description=([#]) +pango: text=(["3-hex (alpha)"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([50, 150]) +cairo: rotate([0]) +cairo: translate([-50, -150]) +cairo: move_to([50, 150]) +pango: font_description=([#]) +pango: text=(["6-hex"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([50, 200]) +cairo: rotate([0]) +cairo: translate([-50, -200]) +cairo: move_to([50, 200]) +pango: font_description=([#]) +pango: text=(["8-hex(alpha) *"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([50, 250]) +cairo: rotate([0]) +cairo: translate([-50, -250]) +cairo: move_to([50, 250]) +pango: font_description=([#]) +pango: text=(["12-hex"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([50, 300]) +cairo: rotate([0]) +cairo: translate([-50, -300]) +cairo: move_to([50, 300]) +pango: font_description=([#]) +pango: text=(["12-hex (alpha)"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([50, 350]) +cairo: rotate([0]) +cairo: translate([-50, -350]) +cairo: move_to([50, 350]) +pango: font_description=([#]) +pango: text=(["Symbols of constants too"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) diff --git a/spec/data/samples/custom_config.rb.txt b/spec/data/samples/custom_config.rb.txt new file mode 100644 index 0000000..cd3071f --- /dev/null +++ b/spec/data/samples/custom_config.rb.txt @@ -0,0 +1,45 @@ +=== custom_config.rb === +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([0, 78]) +cairo: rotate([0]) +cairo: translate([0, -78]) +cairo: move_to([0, 78]) +pango: font_description=([#]) +pango: text=(["The Title"]) +pango: width=([844800]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: rounded_rectangle([0, 78, 0, 0, 0, 0]) +cairo: set_source_color(["#FF0000"]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: restore([]) +cairo: save([]) +cairo: translate([620, 75]) +cairo: rotate([0]) +cairo: translate([-620, -75]) +cairo: set_source([#, 620, 75]) +cairo: paint([1.0]) +cairo: restore([]) +cairo: scale([1.0, 1.0]) +cairo: render_rsvg_handle([#, nil]) +cairo: save([]) +cairo: translate([620, 218]) +cairo: rotate([0]) +cairo: translate([-620, -218]) +cairo: set_source([#, 620, 218]) +cairo: paint([1.0]) +cairo: restore([]) +cairo: set_source([#, 75, 75]) +cairo: paint([]) diff --git a/spec/data/samples/draw_shapes.rb.txt b/spec/data/samples/draw_shapes.rb.txt new file mode 100644 index 0000000..277cd59 --- /dev/null +++ b/spec/data/samples/draw_shapes.rb.txt @@ -0,0 +1,35 @@ +=== draw_shapes.rb === +cairo: save([]) +cairo: rounded_rectangle([300, 300, 400, 400, 0, 0]) +cairo: set_source_color([#]) +cairo: set_line_width([50.0]) +cairo: stroke([]) +cairo: rounded_rectangle([300, 300, 400, 400, 0, 0]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: circle([600, 600, 75]) +cairo: set_source_color([#]) +cairo: set_line_width([8.0]) +cairo: stroke([]) +cairo: circle([600, 600, 75]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: triangle([50, 50, 150, 150, 75, 250]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: triangle([50, 50, 150, 150, 75, 250]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: move_to([50, 550]) +cairo: line_to([150, 650]) +cairo: set_source_color([#]) +cairo: set_line_width([25.0]) +cairo: stroke([]) +cairo: restore([]) diff --git a/spec/data/samples/excel.rb.txt b/spec/data/samples/excel.rb.txt new file mode 100644 index 0000000..a127450 --- /dev/null +++ b/spec/data/samples/excel.rb.txt @@ -0,0 +1,166 @@ +=== excel.rb === +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([250, 55]) +cairo: rotate([0]) +cairo: translate([-250, -55]) +cairo: move_to([250, 55]) +pango: font_description=([#]) +pango: text=(["Thief"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([250, 55]) +cairo: rotate([0]) +cairo: translate([-250, -55]) +cairo: move_to([250, 55]) +pango: font_description=([#]) +pango: text=(["Grifter"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([250, 55]) +cairo: rotate([0]) +cairo: translate([-250, -55]) +cairo: move_to([250, 55]) +pango: font_description=([#]) +pango: text=(["Mastermind"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([65, 65]) +cairo: rotate([0]) +cairo: translate([-65, -65]) +cairo: move_to([65, 65]) +pango: font_description=([#]) +pango: text=(["1"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([65, 65]) +cairo: rotate([0]) +cairo: translate([-65, -65]) +cairo: move_to([65, 65]) +pango: font_description=([#]) +pango: text=(["2"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([65, 65]) +cairo: rotate([0]) +cairo: translate([-65, -65]) +cairo: move_to([65, 65]) +pango: font_description=([#]) +pango: text=(["3"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([65, 600]) +cairo: rotate([0]) +cairo: translate([-65, -600]) +cairo: move_to([65, 600]) +pango: font_description=([#]) +pango: text=(["A clever pickpocket on the street."]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([65, 600]) +cairo: rotate([0]) +cairo: translate([-65, -600]) +cairo: move_to([65, 600]) +pango: font_description=([#]) +pango: text=(["A sophisticated con artist who makes you run home for your wallet"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([65, 600]) +cairo: rotate([0]) +cairo: translate([-65, -600]) +cairo: move_to([65, 600]) +pango: font_description=([#]) +pango: text=(["A brilliant mind devoted to a life of crime."]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) diff --git a/spec/data/samples/hello_world.rb.txt b/spec/data/samples/hello_world.rb.txt new file mode 100644 index 0000000..cf61e89 --- /dev/null +++ b/spec/data/samples/hello_world.rb.txt @@ -0,0 +1,35 @@ +=== hello_world.rb === +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([0, 0]) +cairo: rotate([0]) +cairo: translate([0, 0]) +cairo: move_to([0, 0]) +pango: font_description=([#]) +pango: text=(["Hello"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([0, 0]) +cairo: rotate([0]) +cairo: translate([0, 0]) +cairo: move_to([0, 0]) +pango: font_description=([#]) +pango: text=(["World!"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) diff --git a/spec/data/samples/layouts.rb.txt b/spec/data/samples/layouts.rb.txt new file mode 100644 index 0000000..d1779cc --- /dev/null +++ b/spec/data/samples/layouts.rb.txt @@ -0,0 +1,197 @@ +=== layouts.rb === +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 25, 25]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 25, 25]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: circle([50, 50, 25]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: circle([50, 50, 25]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([125, 50]) +cairo: rotate([0]) +cairo: translate([-125, -50]) +cairo: move_to([125, 50]) +pango: font_description=([#]) +pango: text=(["The Title"]) +pango: width=([640000]) +pango: height=([102400]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: move_to([125, 50]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: rounded_rectangle([125, 50, 0, 0, 0, 0]) +cairo: set_source_color([:cyan]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: restore([]) +cairo: scale([0.9765625, 0.9765625]) +cairo: render_rsvg_handle([#, nil]) +cairo: save([]) +cairo: translate([150, 250]) +cairo: rotate([0]) +cairo: translate([-150, -250]) +cairo: set_source([#, 150, 250]) +cairo: paint([1.0]) +cairo: restore([]) +cairo: save([]) +cairo: translate([350, 400]) +cairo: rotate([0]) +cairo: translate([-350, -400]) +cairo: set_source([#, 350, 400]) +cairo: paint([1.0]) +cairo: restore([]) +cairo: scale([0.9765625, 0.9765625]) +cairo: render_rsvg_handle([#, nil]) +cairo: save([]) +cairo: translate([550, 250]) +cairo: rotate([0]) +cairo: translate([-550, -250]) +cairo: set_source([#, 550, 250]) +cairo: paint([1.0]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([250, 600, 300, 200, 32, 32]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([250, 600, 300, 200, 32, 32]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([260.0, 610.0, 280.0, 180.0, 24.0, 24.0]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([260.0, 610.0, 280.0, 180.0, 24.0, 24.0]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([270.0, 620.0]) +cairo: rotate([0]) +cairo: translate([-270.0, -620.0]) +cairo: move_to([270.0, 620.0]) +pango: font_description=([#]) +pango: text=(["Extends!"]) +pango: width=([266240.0]) +pango: height=([163840.0]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: rounded_rectangle([270.0, 620.0, 0, 0, 0, 0]) +cairo: set_source_color([:cyan]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([150, 150]) +cairo: rotate([0]) +cairo: translate([-150, -150]) +cairo: move_to([150, 150]) +pango: font_description=([#]) +pango: text=(["subtitle"]) +pango: width=([588800]) +pango: height=([61440]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: move_to([150, 150]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: rounded_rectangle([150, 150, 0, 0, 0, 0]) +cairo: set_source_color([:cyan]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([125, 50]) +cairo: rotate([0]) +cairo: translate([-125, -50]) +cairo: move_to([125, 50]) +pango: font_description=([#]) +pango: text=(["The Title"]) +pango: width=([640000]) +pango: height=([102400]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: move_to([125, 50]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([150, 150]) +cairo: rotate([0]) +cairo: translate([-150, -150]) +cairo: move_to([150, 150]) +pango: font_description=([#]) +pango: text=(["The Subtitle"]) +pango: width=([588800]) +pango: height=([61440]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: move_to([150, 150]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([150, 500.0]) +cairo: rotate([0]) +cairo: translate([-150, -500.0]) +cairo: move_to([150, 500.0]) +pango: font_description=([#]) +pango: text=(["The Description"]) +pango: width=([588800]) +pango: height=([61440]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: move_to([150, 500.0]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) diff --git a/spec/data/samples/load_images.rb.txt b/spec/data/samples/load_images.rb.txt new file mode 100644 index 0000000..7a4e15f --- /dev/null +++ b/spec/data/samples/load_images.rb.txt @@ -0,0 +1,104 @@ +=== load_images.rb === +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: translate([620, 75]) +cairo: rotate([0]) +cairo: translate([-620, -75]) +cairo: set_source([#, 620, 75]) +cairo: paint([1.0]) +cairo: restore([]) +cairo: scale([1.0, 1.0]) +cairo: render_rsvg_handle([#, nil]) +cairo: save([]) +cairo: translate([620, 218]) +cairo: rotate([0]) +cairo: translate([-620, -218]) +cairo: set_source([#, 620, 218]) +cairo: paint([1.0]) +cairo: restore([]) +cairo: scale([1.953125, 1.953125]) +cairo: render_rsvg_handle([#, nil]) +cairo: save([]) +cairo: translate([50, 50]) +cairo: rotate([0]) +cairo: translate([-50, -50]) +cairo: set_source([#, 50, 50]) +cairo: paint([1.0]) +cairo: restore([]) +cairo: scale([0.5859375, 0.5859375]) +cairo: render_rsvg_handle([#, "#backdrop"]) +cairo: save([]) +cairo: translate([50, 350]) +cairo: rotate([0]) +cairo: translate([-50, -350]) +cairo: set_source([#, 50, 350]) +cairo: paint([1.0]) +cairo: restore([]) +cairo: scale([0.9765625, 0.9765625]) +cairo: render_rsvg_handle([#, "#backdrop"]) +cairo: save([]) +cairo: translate([50, 450]) +cairo: rotate([0]) +cairo: translate([-50, -450]) +cairo: set_source([#, 50, 450]) +cairo: paint([1.0]) +cairo: restore([]) +cairo: scale([0.8021390374331551, 0.8032128514056225]) +cairo: render_rsvg_handle([#, "#thing"]) +cairo: save([]) +cairo: translate([0, 0]) +cairo: rotate([0]) +cairo: translate([0, 0]) +cairo: set_source([#, 0, 0]) +cairo: paint([1.0]) +cairo: restore([]) +cairo: save([]) +cairo: translate([50, 700]) +cairo: rotate([0]) +cairo: translate([-50, -700]) +cairo: set_source([#, 50, 700]) +cairo: paint([1.0]) +cairo: restore([]) +cairo: save([]) +cairo: translate([70, 750]) +cairo: rotate([0]) +cairo: translate([-70, -750]) +cairo: set_source([#, 70, 750]) +cairo: operator=([:color_burn]) +cairo: paint([0.75]) +cairo: restore([]) +cairo: save([]) +cairo: translate([300, 700]) +cairo: rotate([0.0]) +cairo: translate([-300, -700]) +cairo: set_source([#, 300, 700]) +cairo: paint([1.0]) +cairo: restore([]) +cairo: save([]) +cairo: translate([300, 800]) +cairo: rotate([0.7853981633974483]) +cairo: translate([-300, -800]) +cairo: set_source([#, 300, 800]) +cairo: paint([1.0]) +cairo: restore([]) +cairo: scale([1.0, 1.0]) +cairo: render_rsvg_handle([#, nil]) +cairo: save([]) +cairo: translate([300, 900]) +cairo: rotate([1.4707963267948965]) +cairo: translate([-300, -900]) +cairo: set_source([#, 300, 900]) +cairo: paint([1.0]) +cairo: restore([]) diff --git a/spec/data/samples/portrait-landscape.rb.txt b/spec/data/samples/portrait-landscape.rb.txt new file mode 100644 index 0000000..bedbdb9 --- /dev/null +++ b/spec/data/samples/portrait-landscape.rb.txt @@ -0,0 +1,49 @@ +=== portrait-landscape.rb === +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([0, 0]) +cairo: rotate([0]) +cairo: translate([0, 0]) +cairo: move_to([0, 0]) +pango: font_description=([#]) +pango: text=(["This is portrait"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([0, 0]) +cairo: rotate([0]) +cairo: translate([0, 0]) +cairo: move_to([0, 0]) +pango: font_description=([#]) +pango: text=(["This is landscape"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: translate([412.5, 562.5]) +cairo: rotate([1.5707963267948966]) +cairo: translate([-562.5, -412.5]) +cairo: set_source([#]) +cairo: paint([]) +surface: write_to_png(["_output/landscape_0.png"]) diff --git a/spec/data/samples/ranges.rb.txt b/spec/data/samples/ranges.rb.txt new file mode 100644 index 0000000..6f94c20 --- /dev/null +++ b/spec/data/samples/ranges.rb.txt @@ -0,0 +1,424 @@ +=== ranges.rb === +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([250, 55]) +cairo: rotate([0]) +cairo: translate([-250, -55]) +cairo: move_to([250, 55]) +pango: font_description=([#]) +pango: text=(["Thief"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([250, 55]) +cairo: rotate([0]) +cairo: translate([-250, -55]) +cairo: move_to([250, 55]) +pango: font_description=([#]) +pango: text=(["Grifter"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([250, 55]) +cairo: rotate([0]) +cairo: translate([-250, -55]) +cairo: move_to([250, 55]) +pango: font_description=([#]) +pango: text=(["Mastermind"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([65, 40]) +cairo: rotate([0]) +cairo: translate([-65, -40]) +cairo: move_to([65, 40]) +pango: font_description=([#]) +pango: text=(["1"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([65, 40]) +cairo: rotate([0]) +cairo: translate([-65, -40]) +cairo: move_to([65, 40]) +pango: font_description=([#]) +pango: text=(["2"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([65, 40]) +cairo: rotate([0]) +cairo: translate([-65, -40]) +cairo: move_to([65, 40]) +pango: font_description=([#]) +pango: text=(["3"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([40, 128]) +cairo: rotate([0]) +cairo: translate([-40, -128]) +cairo: move_to([40, 128]) +pango: font_description=([#]) +pango: text=(["Thug"]) +pango: width=([102400]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([40, 128]) +cairo: rotate([0]) +cairo: translate([-40, -128]) +cairo: move_to([40, 128]) +pango: font_description=([#]) +pango: text=(["Thinker"]) +pango: width=([102400]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([40, 128]) +cairo: rotate([0]) +cairo: translate([-40, -128]) +cairo: move_to([40, 128]) +pango: font_description=([#]) +pango: text=(["Thinker"]) +pango: width=([102400]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([25, 200]) +cairo: rotate([0]) +cairo: translate([-25, -200]) +cairo: move_to([25, 200]) +pango: font_description=([#]) +pango: text=(["Thief and Grifter only!!"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([25, 200]) +cairo: rotate([0]) +cairo: translate([-25, -200]) +cairo: move_to([25, 200]) +pango: font_description=([#]) +pango: text=(["Thief and Grifter only!!"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([25, 250]) +cairo: rotate([0]) +cairo: translate([-25, -250]) +cairo: move_to([25, 250]) +pango: font_description=([#]) +pango: text=(["Thief only!"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([25, 250]) +cairo: rotate([0]) +cairo: translate([-25, -250]) +cairo: move_to([25, 250]) +pango: font_description=([#]) +pango: text=(["Mastermind only!"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([25, 650]) +cairo: rotate([0]) +cairo: translate([-25, -650]) +cairo: move_to([25, 650]) +pango: font_description=([#]) +pango: text=(["Grifter and Mastermind only!"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([25, 650]) +cairo: rotate([0]) +cairo: translate([-25, -650]) +cairo: move_to([25, 650]) +pango: font_description=([#]) +pango: text=(["Grifter and Mastermind only!"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([25, 300]) +cairo: rotate([0]) +cairo: translate([-25, -300]) +cairo: move_to([25, 300]) +pango: font_description=([#]) +pango: text=(["Thief and Mastermind only!!"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([25, 300]) +cairo: rotate([0]) +cairo: translate([-25, -300]) +cairo: move_to([25, 300]) +pango: font_description=([#]) +pango: text=(["Thief and Mastermind only!!"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([40, 700]) +cairo: rotate([0]) +cairo: translate([-40, -700]) +cairo: move_to([40, 700]) +pango: font_description=([#]) +pango: text=(["red"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([80, 750]) +cairo: rotate([0]) +cairo: translate([-80, -750]) +cairo: move_to([80, 750]) +pango: font_description=([#]) +pango: text=(["green"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([120, 800]) +cairo: rotate([0]) +cairo: translate([-120, -800]) +cairo: move_to([120, 800]) +pango: font_description=([#]) +pango: text=(["blue"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([25, 400]) +cairo: rotate([0]) +cairo: translate([-25, -400]) +cairo: move_to([25, 400]) +pango: font_description=([#]) +pango: text=(["Thief through Grifter with id lookup!!"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([25, 400]) +cairo: rotate([0]) +cairo: translate([-25, -400]) +cairo: move_to([25, 400]) +pango: font_description=([#]) +pango: text=(["Thief through Grifter with id lookup!!"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([25, 500]) +cairo: rotate([0]) +cairo: translate([-25, -500]) +cairo: move_to([25, 500]) +pango: font_description=([#]) +pango: text=(["Only for Thinkers!"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([25, 500]) +cairo: rotate([0]) +cairo: translate([-25, -500]) +cairo: move_to([25, 500]) +pango: font_description=([#]) +pango: text=(["Only for Thinkers!"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) diff --git a/spec/data/samples/save_pdf.rb.txt b/spec/data/samples/save_pdf.rb.txt new file mode 100644 index 0000000..c2ab1c3 --- /dev/null +++ b/spec/data/samples/save_pdf.rb.txt @@ -0,0 +1,547 @@ +=== save_pdf.rb === +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([220, 78]) +cairo: rotate([0]) +cairo: translate([-220, -78]) +cairo: move_to([220, 78]) +pango: font_description=([#]) +pango: text=(["1"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([220, 78]) +cairo: rotate([0]) +cairo: translate([-220, -78]) +cairo: move_to([220, 78]) +pango: font_description=([#]) +pango: text=(["2"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([220, 78]) +cairo: rotate([0]) +cairo: translate([-220, -78]) +cairo: move_to([220, 78]) +pango: font_description=([#]) +pango: text=(["3"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([220, 78]) +cairo: rotate([0]) +cairo: translate([-220, -78]) +cairo: move_to([220, 78]) +pango: font_description=([#]) +pango: text=(["4"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([220, 78]) +cairo: rotate([0]) +cairo: translate([-220, -78]) +cairo: move_to([220, 78]) +pango: font_description=([#]) +pango: text=(["5"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([220, 78]) +cairo: rotate([0]) +cairo: translate([-220, -78]) +cairo: move_to([220, 78]) +pango: font_description=([#]) +pango: text=(["6"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([220, 78]) +cairo: rotate([0]) +cairo: translate([-220, -78]) +cairo: move_to([220, 78]) +pango: font_description=([#]) +pango: text=(["7"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([220, 78]) +cairo: rotate([0]) +cairo: translate([-220, -78]) +cairo: move_to([220, 78]) +pango: font_description=([#]) +pango: text=(["8"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([220, 78]) +cairo: rotate([0]) +cairo: translate([-220, -78]) +cairo: move_to([220, 78]) +pango: font_description=([#]) +pango: text=(["9"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([220, 78]) +cairo: rotate([0]) +cairo: translate([-220, -78]) +cairo: move_to([220, 78]) +pango: font_description=([#]) +pango: text=(["10"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([220, 78]) +cairo: rotate([0]) +cairo: translate([-220, -78]) +cairo: move_to([220, 78]) +pango: font_description=([#]) +pango: text=(["11"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([220, 78]) +cairo: rotate([0]) +cairo: translate([-220, -78]) +cairo: move_to([220, 78]) +pango: font_description=([#]) +pango: text=(["12"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([220, 78]) +cairo: rotate([0]) +cairo: translate([-220, -78]) +cairo: move_to([220, 78]) +pango: font_description=([#]) +pango: text=(["13"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([220, 78]) +cairo: rotate([0]) +cairo: translate([-220, -78]) +cairo: move_to([220, 78]) +pango: font_description=([#]) +pango: text=(["14"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([220, 78]) +cairo: rotate([0]) +cairo: translate([-220, -78]) +cairo: move_to([220, 78]) +pango: font_description=([#]) +pango: text=(["15"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([220, 78]) +cairo: rotate([0]) +cairo: translate([-220, -78]) +cairo: move_to([220, 78]) +pango: font_description=([#]) +pango: text=(["16"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: set_source([#, -37, -37]) +cairo: paint([]) +cairo: set_source([#, 75, 75]) +cairo: paint([]) +cairo: set_source([#, -37, -37]) +cairo: paint([]) +cairo: set_source([#, 831, 75]) +cairo: paint([]) +cairo: set_source([#, -37, -37]) +cairo: paint([]) +cairo: set_source([#, 1587, 75]) +cairo: paint([]) +cairo: set_source([#, -37, -37]) +cairo: paint([]) +cairo: set_source([#, 2343, 75]) +cairo: paint([]) +cairo: set_source([#, -37, -37]) +cairo: paint([]) +cairo: set_source([#, 75, 1131]) +cairo: paint([]) +cairo: set_source([#, -37, -37]) +cairo: paint([]) +cairo: set_source([#, 831, 1131]) +cairo: paint([]) +cairo: set_source([#, -37, -37]) +cairo: paint([]) +cairo: set_source([#, 1587, 1131]) +cairo: paint([]) +cairo: set_source([#, -37, -37]) +cairo: paint([]) +cairo: set_source([#, 2343, 1131]) +cairo: paint([]) +cairo: show_page([]) +cairo: set_source([#, -37, -37]) +cairo: paint([]) +cairo: set_source([#, 75, 75]) +cairo: paint([]) +cairo: set_source([#, -37, -37]) +cairo: paint([]) +cairo: set_source([#, 831, 75]) +cairo: paint([]) +cairo: set_source([#, -37, -37]) +cairo: paint([]) +cairo: set_source([#, 1587, 75]) +cairo: paint([]) +cairo: set_source([#, -37, -37]) +cairo: paint([]) +cairo: set_source([#, 2343, 75]) +cairo: paint([]) +cairo: set_source([#, -37, -37]) +cairo: paint([]) +cairo: set_source([#, 75, 1131]) +cairo: paint([]) +cairo: set_source([#, -37, -37]) +cairo: paint([]) +cairo: set_source([#, 831, 1131]) +cairo: paint([]) +cairo: set_source([#, -37, -37]) +cairo: paint([]) +cairo: set_source([#, 1587, 1131]) +cairo: paint([]) +cairo: set_source([#, -37, -37]) +cairo: paint([]) +cairo: set_source([#, 2343, 1131]) +cairo: paint([]) +cairo: show_page([]) diff --git a/spec/data/samples/text_options.rb.txt b/spec/data/samples/text_options.rb.txt new file mode 100644 index 0000000..c8d0a02 --- /dev/null +++ b/spec/data/samples/text_options.rb.txt @@ -0,0 +1,820 @@ +=== text_options.rb === +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([15, 15, 795, 1095, 50, 50]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([15, 15, 795, 1095, 50, 50]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([15, 15, 795, 1095, 50, 50]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([15, 15, 795, 1095, 50, 50]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([15, 15, 795, 1095, 50, 50]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([15, 15, 795, 1095, 50, 50]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([30, 30, 128, 128, 25, 25]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([30, 30, 128, 128, 25, 25]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([30, 30, 128, 128, 25, 25]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([30, 30, 128, 128, 25, 25]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([30, 30, 128, 128, 25, 25]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([30, 30, 128, 128, 25, 25]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([250, 55]) +cairo: rotate([0]) +cairo: translate([-250, -55]) +cairo: move_to([250, 55]) +pango: font_description=([#]) +pango: text=(["Thief"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([250, 55]) +cairo: rotate([0]) +cairo: translate([-250, -55]) +cairo: move_to([250, 55]) +pango: font_description=([#]) +pango: text=(["Grifter"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([250, 55]) +cairo: rotate([0]) +cairo: translate([-250, -55]) +cairo: move_to([250, 55]) +pango: font_description=([#]) +pango: text=(["Mastermind"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([65, 40]) +cairo: rotate([0]) +cairo: translate([-65, -40]) +cairo: move_to([65, 40]) +pango: font_description=([#]) +pango: text=(["1"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([65, 40]) +cairo: rotate([0]) +cairo: translate([-65, -40]) +cairo: move_to([65, 40]) +pango: font_description=([#]) +pango: text=(["2"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([65, 40]) +cairo: rotate([0]) +cairo: translate([-65, -40]) +cairo: move_to([65, 40]) +pango: font_description=([#]) +pango: text=(["3"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([565, 150]) +cairo: rotate([0]) +cairo: translate([-565, -150]) +cairo: move_to([565, 150]) +pango: font_description=([#]) +pango: text=(["UTF-8 \u2663"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([565, 150]) +cairo: rotate([0]) +cairo: translate([-565, -150]) +cairo: move_to([565, 150]) +pango: font_description=([#]) +pango: text=(["UTF-8 \u2663"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([565, 150]) +cairo: rotate([0]) +cairo: translate([-565, -150]) +cairo: move_to([565, 150]) +pango: font_description=([#]) +pango: text=(["UTF-8 \u2663"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([65, 200]) +cairo: rotate([0]) +cairo: translate([-65, -200]) +cairo: move_to([65, 200]) +pango: font_description=([#]) +pango: text=(["Font strings are expressive!"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([65, 200]) +cairo: rotate([0]) +cairo: translate([-65, -200]) +cairo: move_to([65, 200]) +pango: font_description=([#]) +pango: text=(["Font strings are expressive!"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([65, 200]) +cairo: rotate([0]) +cairo: translate([-65, -200]) +cairo: move_to([65, 200]) +pango: font_description=([#]) +pango: text=(["Font strings are expressive!"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([65, 300]) +cairo: rotate([0]) +cairo: translate([-65, -300]) +cairo: move_to([65, 300]) +pango: font_description=([#]) +pango: text=(["Font strings are expressive!"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([65, 300]) +cairo: rotate([0]) +cairo: translate([-65, -300]) +cairo: move_to([65, 300]) +pango: font_description=([#]) +pango: text=(["Font strings are expressive!"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([65, 300]) +cairo: rotate([0]) +cairo: translate([-65, -300]) +cairo: move_to([65, 300]) +pango: font_description=([#]) +pango: text=(["Font strings are expressive!"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([65, 350]) +cairo: rotate([0]) +cairo: translate([-65, -350]) +cairo: move_to([65, 350]) +pango: font_description=([#]) +pango: text=(["Font string sizes can be overridden per card."]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([65, 350]) +cairo: rotate([0]) +cairo: translate([-65, -350]) +cairo: move_to([65, 350]) +pango: font_description=([#]) +pango: text=(["Font string sizes can be overridden per card."]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([65, 350]) +cairo: rotate([0]) +cairo: translate([-65, -350]) +cairo: move_to([65, 350]) +pango: font_description=([#]) +pango: text=(["Font string sizes can be overridden per card."]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([65, 400]) +cairo: rotate([0]) +cairo: translate([-65, -400]) +cairo: move_to([65, 400]) +pango: font_description=([#]) +pango: text=(["This text has fixed width, fixed height, center-aligned, middle-valigned, and has a red hint"]) +pango: width=([307200]) +pango: height=([204800]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: rounded_rectangle([65, 400, 0, 0, 0, 0]) +cairo: set_source_color([:red]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([65, 400]) +cairo: rotate([0]) +cairo: translate([-65, -400]) +cairo: move_to([65, 400]) +pango: font_description=([#]) +pango: text=(["This text has fixed width, fixed height, center-aligned, middle-valigned, and has a red hint"]) +pango: width=([307200]) +pango: height=([204800]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: rounded_rectangle([65, 400, 0, 0, 0, 0]) +cairo: set_source_color([:red]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([65, 400]) +cairo: rotate([0]) +cairo: translate([-65, -400]) +cairo: move_to([65, 400]) +pango: font_description=([#]) +pango: text=(["This text has fixed width, fixed height, center-aligned, middle-valigned, and has a red hint"]) +pango: width=([307200]) +pango: height=([204800]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: rounded_rectangle([65, 400, 0, 0, 0, 0]) +cairo: set_source_color([:red]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([450, 400]) +cairo: rotate([0]) +cairo: translate([-450, -400]) +cairo: move_to([450, 400]) +pango: font_description=([#]) +pango: text=(["Ellipsization!\\nThe ultimate question of life, the universe, and everything to life and everything is 42"]) +pango: width=([286720]) +pango: height=([184320]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: rounded_rectangle([450, 400, 0, 0, 0, 0]) +cairo: set_source_color([:green]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([450, 400]) +cairo: rotate([0]) +cairo: translate([-450, -400]) +cairo: move_to([450, 400]) +pango: font_description=([#]) +pango: text=(["Ellipsization!\\nThe ultimate question of life, the universe, and everything to life and everything is 42"]) +pango: width=([286720]) +pango: height=([184320]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: rounded_rectangle([450, 400, 0, 0, 0, 0]) +cairo: set_source_color([:green]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([450, 400]) +cairo: rotate([0]) +cairo: translate([-450, -400]) +cairo: move_to([450, 400]) +pango: font_description=([#]) +pango: text=(["Ellipsization!\\nThe ultimate question of life, the universe, and everything to life and everything is 42"]) +pango: width=([286720]) +pango: height=([184320]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: rounded_rectangle([450, 400, 0, 0, 0, 0]) +cairo: set_source_color([:green]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([65, 625]) +cairo: rotate([0]) +cairo: translate([-65, -625]) +cairo: move_to([65, 625]) +pango: font_description=([#]) +pango: text=(["Text hints are also globally togglable!"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: rounded_rectangle([65, 625, 0, 0, 0, 0]) +cairo: set_source_color([:cyan]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([65, 625]) +cairo: rotate([0]) +cairo: translate([-65, -625]) +cairo: move_to([65, 625]) +pango: font_description=([#]) +pango: text=(["Text hints are also globally togglable!"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: rounded_rectangle([65, 625, 0, 0, 0, 0]) +cairo: set_source_color([:cyan]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([65, 625]) +cairo: rotate([0]) +cairo: translate([-65, -625]) +cairo: move_to([65, 625]) +pango: font_description=([#]) +pango: text=(["Text hints are also globally togglable!"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: rounded_rectangle([65, 625, 0, 0, 0, 0]) +cairo: set_source_color([:cyan]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([565, 625]) +cairo: rotate([0]) +cairo: translate([-565, -625]) +cairo: move_to([565, 625]) +pango: font_description=([#]) +pango: text=(["See? No hint here."]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([565, 625]) +cairo: rotate([0]) +cairo: translate([-565, -625]) +cairo: move_to([565, 625]) +pango: font_description=([#]) +pango: text=(["See? No hint here."]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([565, 625]) +cairo: rotate([0]) +cairo: translate([-565, -625]) +cairo: move_to([565, 625]) +pango: font_description=([#]) +pango: text=(["See? No hint here."]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([565, 675]) +cairo: rotate([0.2]) +cairo: translate([-565, -675]) +cairo: move_to([565, 675]) +pango: font_description=([#]) +pango: text=(["Rotated"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: rounded_rectangle([565, 675, 0, 0, 0, 0]) +cairo: set_source_color([:red]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([565, 675]) +cairo: rotate([0.2]) +cairo: translate([-565, -675]) +cairo: move_to([565, 675]) +pango: font_description=([#]) +pango: text=(["Rotated"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: rounded_rectangle([565, 675, 0, 0, 0, 0]) +cairo: set_source_color([:red]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([565, 675]) +cairo: rotate([0.2]) +cairo: translate([-565, -675]) +cairo: move_to([565, 675]) +pango: font_description=([#]) +pango: text=(["Rotated"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: rounded_rectangle([565, 675, 0, 0, 0, 0]) +cairo: set_source_color([:red]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([65, 700]) +cairo: rotate([0]) +cairo: translate([-65, -700]) +cairo: move_to([65, 700]) +pango: font_description=([#]) +pango: text=(["This is left-justified text.\nWhat do you know about tweetle beetles? well... \nWhen tweetle beetles fight, it's called a tweetle beetle battle. And when they battle in a puddle, it's a tweetle beetle puddle battle. AND when tweetle beetles battle with paddles in a puddle, they call it a tweetle beetle puddle paddle battle. AND... When beetles battle beetles in a puddle paddle battle and the beetle battle puddle is a puddle in a bottle... ..they call this a tweetle beetle bottle puddle paddle battle muddle. AND... When beetles fight these battles in a bottle with their paddles and the bottle's on a poodle and the poodle's eating noodles... ...they call this a muddle puddle tweetle poodle beetle noodle bottle paddle battle."]) +pango: width=([691200.0]) +pango: height=([307200]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([true]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([65, 700]) +cairo: rotate([0]) +cairo: translate([-65, -700]) +cairo: move_to([65, 700]) +pango: font_description=([#]) +pango: text=(["This is left-justified text.\nWhat do you know about tweetle beetles? well... \nWhen tweetle beetles fight, it's called a tweetle beetle battle. And when they battle in a puddle, it's a tweetle beetle puddle battle. AND when tweetle beetles battle with paddles in a puddle, they call it a tweetle beetle puddle paddle battle. AND... When beetles battle beetles in a puddle paddle battle and the beetle battle puddle is a puddle in a bottle... ..they call this a tweetle beetle bottle puddle paddle battle muddle. AND... When beetles fight these battles in a bottle with their paddles and the bottle's on a poodle and the poodle's eating noodles... ...they call this a muddle puddle tweetle poodle beetle noodle bottle paddle battle."]) +pango: width=([691200.0]) +pango: height=([307200]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([true]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([65, 700]) +cairo: rotate([0]) +cairo: translate([-65, -700]) +cairo: move_to([65, 700]) +pango: font_description=([#]) +pango: text=(["This is left-justified text.\nWhat do you know about tweetle beetles? well... \nWhen tweetle beetles fight, it's called a tweetle beetle battle. And when they battle in a puddle, it's a tweetle beetle puddle battle. AND when tweetle beetles battle with paddles in a puddle, they call it a tweetle beetle puddle paddle battle. AND... When beetles battle beetles in a puddle paddle battle and the beetle battle puddle is a puddle in a bottle... ..they call this a tweetle beetle bottle puddle paddle battle muddle. AND... When beetles fight these battles in a bottle with their paddles and the bottle's on a poodle and the poodle's eating noodles... ...they call this a muddle puddle tweetle poodle beetle noodle bottle paddle battle."]) +pango: width=([691200.0]) +pango: height=([307200]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([true]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([50, 1000]) +cairo: rotate([0]) +cairo: translate([-50, -1000]) +cairo: move_to([50, 1000]) +pango: font_description=([#]) +pango: text=(["Markup is also quite easy awesome"]) +pango: markup=(["Markup is also quite easy awesome"]) +pango: width=([768000]) +pango: height=([102400]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: move_to([50, 1000]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: rounded_rectangle([50, 1000, 0, 0, 0, 0]) +cairo: set_source_color([:cyan]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([50, 1000]) +cairo: rotate([0]) +cairo: translate([-50, -1000]) +cairo: move_to([50, 1000]) +pango: font_description=([#]) +pango: text=(["Markup is also quite easy awesome"]) +pango: markup=(["Markup is also quite easy awesome"]) +pango: width=([768000]) +pango: height=([102400]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: move_to([50, 1000]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: rounded_rectangle([50, 1000, 0, 0, 0, 0]) +cairo: set_source_color([:cyan]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([50, 1000]) +cairo: rotate([0]) +cairo: translate([-50, -1000]) +cairo: move_to([50, 1000]) +pango: font_description=([#]) +pango: text=(["Markup is also quite easy awesome"]) +pango: markup=(["Markup is also quite easy awesome"]) +pango: width=([768000]) +pango: height=([102400]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: move_to([50, 1000]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: rounded_rectangle([50, 1000, 0, 0, 0, 0]) +cairo: set_source_color([:cyan]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: restore([]) diff --git a/spec/data/samples/tgc_proofs.rb.txt b/spec/data/samples/tgc_proofs.rb.txt new file mode 100644 index 0000000..4f619cd --- /dev/null +++ b/spec/data/samples/tgc_proofs.rb.txt @@ -0,0 +1,81 @@ +=== tgc_proofs.rb === +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([38, 38, 750, 1050, 38, 38]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([75, 75, 128, 128, 25, 25]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([75, 75, 128, 128, 25, 25]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([220, 78]) +cairo: rotate([0]) +cairo: translate([-220, -78]) +cairo: move_to([220, 78]) +pango: font_description=([#]) +pango: text=(["Mastermind"]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: translate([75, 85]) +cairo: rotate([0]) +cairo: translate([-75, -85]) +cairo: move_to([75, 85]) +pango: font_description=([#]) +pango: text=(["3"]) +pango: width=([131072]) +pango: wrap=([#]) +pango: ellipsize=([#]) +pango: alignment=([#]) +pango: justify=([false]) +pango: spacing=([0]) +cairo: update_pango_layout([#]) +cairo: update_pango_layout([#]) +cairo: show_pango_layout([#]) +cairo: restore([]) +cairo: save([]) +cairo: translate([620, 75]) +cairo: rotate([0]) +cairo: translate([-620, -75]) +cairo: set_source([#, 620, 75]) +cairo: paint([1.0]) +cairo: restore([]) +cairo: scale([1.0, 1.0]) +cairo: render_rsvg_handle([#, nil]) +cairo: save([]) +cairo: translate([620, 218]) +cairo: rotate([0]) +cairo: translate([-620, -218]) +cairo: set_source([#, 620, 218]) +cairo: paint([1.0]) +cairo: restore([]) +cairo: save([]) +cairo: translate([0, 0]) +cairo: rotate([0]) +cairo: translate([0, 0]) +cairo: set_source([#, 0, 0]) +cairo: paint([0.5]) +cairo: restore([]) diff --git a/spec/data/samples/units.rb.txt b/spec/data/samples/units.rb.txt new file mode 100644 index 0000000..914e644 --- /dev/null +++ b/spec/data/samples/units.rb.txt @@ -0,0 +1,40 @@ +=== units.rb === +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: set_source_color([#]) +cairo: paint([]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([37.5, 37.5, 750.0, 1050.0, 25, 25]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([37.5, 37.5, 750.0, 1050.0, 25, 25]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([37.5, 37.5, 750.0, 1050.0, 25, 25]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([37.5, 37.5, 750.0, 1050.0, 25, 25]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) +cairo: save([]) +cairo: rounded_rectangle([37.5, 37.5, 750.0, 1050.0, 25, 25]) +cairo: set_source_color([#]) +cairo: set_line_width([2.0]) +cairo: stroke([]) +cairo: rounded_rectangle([37.5, 37.5, 750.0, 1050.0, 25, 25]) +cairo: set_source_color([#]) +cairo: fill([]) +cairo: restore([]) diff --git a/spec/deck_spec.rb b/spec/deck_spec.rb index 4fc2533..23e4962 100644 --- a/spec/deck_spec.rb +++ b/spec/deck_spec.rb @@ -48,7 +48,7 @@ describe Squib::Deck do context '#load_layout' do it 'loads a normal layout with no extends' do - d = Squib::Deck.new(layout: test_file('no-extends.yml')) + d = Squib::Deck.new(layout: layout_file('no-extends.yml')) expect(d.layout).to \ eq({'frame' => { 'x' => 38, @@ -61,7 +61,7 @@ describe Squib::Deck do end it 'loads with a single extends' do - d = Squib::Deck.new(layout: test_file('single-extends.yml')) + d = Squib::Deck.new(layout: layout_file('single-extends.yml')) expect(d.layout).to \ eq({'frame' => { 'x' => 38, @@ -78,7 +78,7 @@ describe Squib::Deck do end it 'applies the extends regardless of order' do - d = Squib::Deck.new(layout: test_file('pre-extends.yml')) + d = Squib::Deck.new(layout: layout_file('pre-extends.yml')) expect(d.layout).to \ eq({'frame' => { 'x' => 38, @@ -95,7 +95,7 @@ describe Squib::Deck do end it 'applies the single-level extends multiple times' do - d = Squib::Deck.new(layout: test_file('single-level-multi-extends.yml')) + d = Squib::Deck.new(layout: layout_file('single-level-multi-extends.yml')) expect(d.layout).to \ eq({'frame' => { 'x' => 38, @@ -118,7 +118,7 @@ describe Squib::Deck do end it 'applies multiple extends in a single rule' do - d = Squib::Deck.new(layout: test_file('multi-extends-single-entry.yml')) + d = Squib::Deck.new(layout: layout_file('multi-extends-single-entry.yml')) expect(d.layout).to \ eq({'aunt' => { 'a' => 101, @@ -143,7 +143,7 @@ describe Squib::Deck do end it 'applies multi-level extends' do - d = Squib::Deck.new(layout: test_file('multi-level-extends.yml')) + d = Squib::Deck.new(layout: layout_file('multi-level-extends.yml')) expect(d.layout).to \ eq({'frame' => { 'x' => 38, @@ -166,26 +166,26 @@ describe Squib::Deck do end it 'fails on a self-circular extends' do - file = test_file('self-circular-extends.yml') + file = layout_file('self-circular-extends.yml') expect { Squib::Deck.new(layout: file) }.to \ raise_error(RuntimeError, 'Invalid layout: circular extends with \'a\'') end it 'fails on a easy-circular extends' do - file = test_file('easy-circular-extends.yml') + file = layout_file('easy-circular-extends.yml') expect { Squib::Deck.new(layout: file) }.to \ raise_error(RuntimeError, 'Invalid layout: circular extends with \'a\'') end it 'hard on a easy-circular extends' do - file = test_file('hard-circular-extends.yml') + file = layout_file('hard-circular-extends.yml') expect { Squib::Deck.new(layout: file) }.to \ raise_error(RuntimeError, 'Invalid layout: circular extends with \'a\'') end it 'redefines keys on multiple layouts' do - a = test_file('multifile-a.yml') - b = test_file('multifile-b.yml') + a = layout_file('multifile-a.yml') + b = layout_file('multifile-b.yml') d = Squib::Deck.new(layout: [a, b]) expect(d.layout).to eq({ 'title' => { 'x' => 300 }, @@ -195,8 +195,8 @@ describe Squib::Deck do end it 'evaluates extends on each file first' do - a = test_file('multifile-extends-a.yml') - b = test_file('multifile-extends-b.yml') + a = layout_file('multifile-extends-a.yml') + b = layout_file('multifile-extends-b.yml') d = Squib::Deck.new(layout: [a, b]) expect(d.layout).to eq({ 'grandparent' => { 'x' => 100 }, diff --git a/spec/method_log_proxy.rb b/spec/method_log_proxy.rb new file mode 100644 index 0000000..04c28c0 --- /dev/null +++ b/spec/method_log_proxy.rb @@ -0,0 +1,13 @@ +class MethodLogProxy + def initialize(strio, client) + @strio = strio + @client = client + end + + # Any method called on the client will just be logged and passed through + def method_missing(m, *args, &block) + @strio << "#{method}(#{args})\n" + client.send(m,args) + end + +end \ No newline at end of file diff --git a/spec/samples/samples_regression_spec.rb b/spec/samples/samples_regression_spec.rb new file mode 100644 index 0000000..200cb69 --- /dev/null +++ b/spec/samples/samples_regression_spec.rb @@ -0,0 +1,44 @@ +require 'spec_helper' +require 'squib' +require 'pp' +require 'method_log_proxy' + + +describe Squib do + + context 'samples' do + it 'should execute with no errors' do + allow(ProgressBar).to receive(:create).and_return(Squib::DoNothing.new) + samples = File.expand_path('../../samples', File.dirname(__FILE__)) + Dir["#{samples}/**/*.rb"].each do |sample| + Dir.chdir(samples) do #to save to _output + load sample + end + end + end + + it 'did not change against regression logs' do + samples = File.expand_path('../../samples', File.dirname(__FILE__)) + Dir["#{samples}/**/*.rb"].each do |sample| + sample_name = File.basename(sample) + header = "=== #{sample_name} ===\n" + Dir.chdir(samples) do #to save to _output + strio = StringIO.new + strio << header + mock_cairo(strio) + load sample + test_file_str = "" + # Use this to overwrite the regression with current state + # Use ONLY temporarily after you are happy with the new sample log + # File.open(sample_regression_file(sample_name), 'w+') do |f| + # f.write(strio.string) # write back out to expected file + # end + test_file_str << File.open(sample_regression_file(sample_name)).read + expect(strio.string).to eq(test_file_str) + end + end + end + + end + +end \ No newline at end of file diff --git a/spec/samples_run_spec.rb b/spec/samples_run_spec.rb deleted file mode 100644 index ee29fc6..0000000 --- a/spec/samples_run_spec.rb +++ /dev/null @@ -1,20 +0,0 @@ -require 'spec_helper' -require 'squib' -require 'pp' - -describe Squib do - - context 'all samples run without error' do - it 'should execute with no errors' do - p = double('ProgressBar') - allow(ProgressBar).to receive(:create).and_return(Squib::DoNothing.new) - samples = File.expand_path('../samples', File.dirname(__FILE__)) - Dir["#{samples}/**/*.rb"].each do |sample| - Dir.chdir(samples) do #to save to _output - require_relative "../samples/#{File.basename(sample)}" - end - end - end - end - -end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index f1a6cba..181fdb3 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -15,8 +15,51 @@ RSpec.configure do |config| end end -def test_file(str) - "#{File.expand_path(File.dirname(__FILE__))}/data/#{str}" +def layout_file(str) + "#{File.expand_path(File.dirname(__FILE__))}/data/layouts/#{str}" +end + +def sample_regression_file(file) + "#{File.expand_path(File.dirname(__FILE__))}/data/samples/#{file}.txt" +end + +def scrub_hex(str) + str.gsub(/0x\w{7,8}/,'') + .gsub(/ptr=.{8}/,'') + .gsub(/FontDescription:.{8}/,'FontDescription') + .gsub(/Handle:.{8}/,'Handle') + # .gsub(/RGB:./,'RGB:') +end + +# Build a mock cairo instance that allows basically any method +# and logs that call to the string buffer +def mock_cairo(strio) + cxt = double(Cairo::Context) + surface = double(Cairo::ImageSurface) + pango = double(Pango::Layout) + allow(ProgressBar).to receive(:create).and_return(Squib::DoNothing.new) + allow(Cairo::Context).to receive(:new).and_return(cxt) + allow(cxt).to receive(:create_pango_layout).and_return(pango) + allow(cxt).to receive(:target).and_return(surface) + allow(pango).to receive(:height).and_return(25) + allow(pango).to receive(:width).and_return(25) + allow(pango).to receive(:extents).and_return([Pango::Rectangle.new(0,0,0,0)]*2) + + %w(save set_source_color paint restore translate rotate move_to + update_pango_layout width height show_pango_layout rounded_rectangle + set_line_width stroke fill set_source scale render_rsvg_handle circle + triangle line_to operator= show_page).each do |m| + allow(cxt).to receive(m) { |*args| strio << scrub_hex("cairo: #{m}(#{args})\n") } + end + + %w(font_description= text= width= height= wrap= ellipsize= alignment= + justify= spacing= markup=).each do |m| + allow(pango).to receive(m) {|*args| strio << scrub_hex("pango: #{m}(#{args})\n") } + end + + %w(write_to_png).each do |m| + allow(surface).to receive(m) { |*args| strio << scrub_hex("surface: #{m}(#{args})\n") } + end end # Refine Squib to allow setting the logger and progress bar