prawn 2.0.1 → 2.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (129) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +7 -5
  3. data/lib/prawn.rb +4 -4
  4. data/lib/prawn/document.rb +47 -46
  5. data/lib/prawn/document/bounding_box.rb +13 -19
  6. data/lib/prawn/document/column_box.rb +3 -5
  7. data/lib/prawn/document/internals.rb +0 -1
  8. data/lib/prawn/document/span.rb +12 -12
  9. data/lib/prawn/errors.rb +32 -33
  10. data/lib/prawn/font.rb +29 -36
  11. data/lib/prawn/font/afm.rb +20 -20
  12. data/lib/prawn/font/dfont.rb +0 -1
  13. data/lib/prawn/font/ttf.rb +30 -27
  14. data/lib/prawn/font_metric_cache.rb +4 -8
  15. data/lib/prawn/graphics.rb +37 -42
  16. data/lib/prawn/graphics/cap_style.rb +1 -1
  17. data/lib/prawn/graphics/color.rb +21 -23
  18. data/lib/prawn/graphics/dash.rb +5 -6
  19. data/lib/prawn/graphics/join_style.rb +1 -2
  20. data/lib/prawn/graphics/patterns.rb +25 -21
  21. data/lib/prawn/graphics/transformation.rb +4 -5
  22. data/lib/prawn/graphics/transparency.rb +6 -8
  23. data/lib/prawn/grid.rb +21 -14
  24. data/lib/prawn/image_handler.rb +2 -2
  25. data/lib/prawn/images.rb +29 -31
  26. data/lib/prawn/images/image.rb +1 -1
  27. data/lib/prawn/images/jpg.rb +10 -12
  28. data/lib/prawn/images/png.rb +13 -13
  29. data/lib/prawn/measurements.rb +7 -14
  30. data/lib/prawn/outline.rb +6 -6
  31. data/lib/prawn/repeater.rb +1 -5
  32. data/lib/prawn/security.rb +17 -25
  33. data/lib/prawn/security/arcfour.rb +1 -1
  34. data/lib/prawn/soft_mask.rb +11 -12
  35. data/lib/prawn/stamp.rb +16 -8
  36. data/lib/prawn/text.rb +23 -20
  37. data/lib/prawn/text/box.rb +3 -6
  38. data/lib/prawn/text/formatted/arranger.rb +9 -12
  39. data/lib/prawn/text/formatted/box.rb +23 -22
  40. data/lib/prawn/text/formatted/fragment.rb +0 -4
  41. data/lib/prawn/text/formatted/line_wrap.rb +13 -24
  42. data/lib/prawn/text/formatted/parser.rb +16 -20
  43. data/lib/prawn/text/formatted/wrap.rb +2 -7
  44. data/lib/prawn/utilities.rb +6 -3
  45. data/lib/prawn/version.rb +1 -1
  46. data/manual/basic_concepts/basic_concepts.rb +0 -2
  47. data/manual/basic_concepts/view.rb +1 -1
  48. data/manual/bounding_box/bounding_box.rb +0 -3
  49. data/manual/bounding_box/russian_boxes.rb +7 -8
  50. data/manual/bounding_box/stretchy.rb +0 -1
  51. data/manual/contents.rb +2 -2
  52. data/manual/cover.rb +11 -12
  53. data/manual/document_and_page_options/document_and_page_options.rb +2 -5
  54. data/manual/document_and_page_options/metadata.rb +10 -10
  55. data/manual/document_and_page_options/page_size.rb +0 -1
  56. data/manual/graphics/fill_rules.rb +5 -4
  57. data/manual/graphics/graphics.rb +0 -3
  58. data/manual/graphics/lines_and_curves.rb +1 -1
  59. data/manual/graphics/rotate.rb +0 -2
  60. data/manual/graphics/scale.rb +4 -2
  61. data/manual/graphics/soft_masks.rb +0 -1
  62. data/manual/graphics/stroke_cap.rb +1 -1
  63. data/manual/graphics/stroke_join.rb +1 -1
  64. data/manual/graphics/translate.rb +3 -3
  65. data/manual/graphics/transparency.rb +0 -1
  66. data/manual/how_to_read_this_manual.rb +0 -1
  67. data/manual/images/images.rb +0 -3
  68. data/manual/layout/boxes.rb +5 -5
  69. data/manual/layout/content.rb +2 -2
  70. data/manual/layout/layout.rb +0 -3
  71. data/manual/outline/outline.rb +0 -3
  72. data/manual/repeatable_content/page_numbering.rb +1 -1
  73. data/manual/repeatable_content/repeatable_content.rb +0 -3
  74. data/manual/repeatable_content/repeater.rb +6 -6
  75. data/manual/security/encryption.rb +0 -2
  76. data/manual/security/permissions.rb +0 -2
  77. data/manual/security/security.rb +0 -3
  78. data/manual/text/alignment.rb +3 -3
  79. data/manual/text/color.rb +0 -1
  80. data/manual/text/column_box.rb +0 -1
  81. data/manual/text/fallback_fonts.rb +2 -2
  82. data/manual/text/formatted_callbacks.rb +3 -2
  83. data/manual/text/paragraph_indentation.rb +2 -3
  84. data/manual/text/registering_families.rb +13 -9
  85. data/manual/text/rotation.rb +0 -1
  86. data/manual/text/text.rb +0 -3
  87. data/manual/text/text_box_overflow.rb +7 -5
  88. data/manual/text/utf8.rb +1 -1
  89. data/manual/text/win_ansi_charset.rb +2 -2
  90. data/prawn.gemspec +4 -4
  91. data/spec/acceptance/png.rb +6 -7
  92. data/spec/annotations_spec.rb +21 -28
  93. data/spec/bounding_box_spec.rb +100 -109
  94. data/spec/column_box_spec.rb +26 -32
  95. data/spec/destinations_spec.rb +2 -4
  96. data/spec/document_spec.rb +145 -151
  97. data/spec/extensions/mocha.rb +0 -1
  98. data/spec/font_metric_cache_spec.rb +7 -7
  99. data/spec/font_spec.rb +103 -102
  100. data/spec/formatted_text_arranger_spec.rb +76 -74
  101. data/spec/formatted_text_box_spec.rb +170 -159
  102. data/spec/formatted_text_fragment_spec.rb +57 -56
  103. data/spec/graphics_spec.rb +158 -175
  104. data/spec/grid_spec.rb +28 -29
  105. data/spec/image_handler_spec.rb +4 -5
  106. data/spec/images_spec.rb +50 -36
  107. data/spec/inline_formatted_text_parser_spec.rb +397 -393
  108. data/spec/jpg_spec.rb +4 -6
  109. data/spec/line_wrap_spec.rb +54 -55
  110. data/spec/measurement_units_spec.rb +12 -15
  111. data/spec/outline_spec.rb +77 -98
  112. data/spec/png_spec.rb +55 -65
  113. data/spec/reference_spec.rb +3 -3
  114. data/spec/repeater_spec.rb +20 -26
  115. data/spec/security_spec.rb +42 -49
  116. data/spec/soft_mask_spec.rb +4 -5
  117. data/spec/span_spec.rb +5 -6
  118. data/spec/spec_helper.rb +2 -4
  119. data/spec/stamp_spec.rb +41 -22
  120. data/spec/stroke_styles_spec.rb +36 -39
  121. data/spec/text_at_spec.rb +28 -29
  122. data/spec/text_box_spec.rb +160 -165
  123. data/spec/text_rendering_mode_spec.rb +9 -9
  124. data/spec/text_spacing_spec.rb +13 -13
  125. data/spec/text_spec.rb +116 -124
  126. data/spec/text_with_inline_formatting_spec.rb +5 -5
  127. data/spec/transparency_spec.rb +20 -20
  128. data/spec/view_spec.rb +0 -1
  129. metadata +7 -7
@@ -5,20 +5,20 @@ require File.join(File.expand_path(File.dirname(__FILE__)), "spec_helper")
5
5
  describe "Text::Formatted::Fragment#space_count" do
6
6
  it "should return the number of spaces in the fragment" do
7
7
  create_pdf
8
- format_state = { }
8
+ format_state = {}
9
9
  fragment = Prawn::Text::Formatted::Fragment.new("hello world ",
10
- format_state,
11
- @pdf)
12
- fragment.space_count.should == 2
10
+ format_state,
11
+ @pdf)
12
+ expect(fragment.space_count).to eq(2)
13
13
  end
14
- it "should exclude trailing spaces from the count when " +
14
+ it "should exclude trailing spaces from the count when " \
15
15
  ":exclude_trailing_white_space => true" do
16
16
  create_pdf
17
17
  format_state = { :exclude_trailing_white_space => true }
18
18
  fragment = Prawn::Text::Formatted::Fragment.new("hello world ",
19
- format_state,
20
- @pdf)
21
- fragment.space_count.should == 1
19
+ format_state,
20
+ @pdf)
21
+ expect(fragment.space_count).to eq(1)
22
22
  end
23
23
  end
24
24
 
@@ -27,31 +27,31 @@ describe "Text::Formatted::Fragment#include_trailing_white_space!" do
27
27
  create_pdf
28
28
  format_state = { :exclude_trailing_white_space => true }
29
29
  fragment = Prawn::Text::Formatted::Fragment.new("hello world ",
30
- format_state,
31
- @pdf)
32
- fragment.space_count.should == 1
30
+ format_state,
31
+ @pdf)
32
+ expect(fragment.space_count).to eq(1)
33
33
  fragment.include_trailing_white_space!
34
- fragment.space_count.should == 2
34
+ expect(fragment.space_count).to eq(2)
35
35
  end
36
36
  end
37
37
 
38
38
  describe "Text::Formatted::Fragment#text" do
39
39
  it "should return the fragment text" do
40
40
  create_pdf
41
- format_state = { }
41
+ format_state = {}
42
42
  fragment = Prawn::Text::Formatted::Fragment.new("hello world ",
43
- format_state,
44
- @pdf)
45
- fragment.text.should == "hello world "
43
+ format_state,
44
+ @pdf)
45
+ expect(fragment.text).to eq("hello world ")
46
46
  end
47
- it "should return the fragment text without trailing spaces when " +
47
+ it "should return the fragment text without trailing spaces when " \
48
48
  ":exclude_trailing_white_space => true" do
49
49
  create_pdf
50
50
  format_state = { :exclude_trailing_white_space => true }
51
51
  fragment = Prawn::Text::Formatted::Fragment.new("hello world ",
52
- format_state,
53
- @pdf)
54
- fragment.text.should == "hello world"
52
+ format_state,
53
+ @pdf)
54
+ expect(fragment.text).to eq("hello world")
55
55
  end
56
56
  end
57
57
 
@@ -77,11 +77,11 @@ describe "Text::Formatted::Fragment#word_spacing=" do
77
77
  end
78
78
 
79
79
  it "should account for word_spacing in #width" do
80
- @fragment.width.should == 110
80
+ expect(@fragment.width).to eq(110)
81
81
  end
82
82
  it "should account for word_spacing in #bounding_box" do
83
83
  target_box = [50, 193, 160, 217]
84
- @fragment.bounding_box.should == target_box
84
+ expect(@fragment.bounding_box).to eq(target_box)
85
85
  end
86
86
  it "should account for word_spacing in #absolute_bounding_box" do
87
87
  target_box = [50, 193, 160, 217]
@@ -89,17 +89,17 @@ describe "Text::Formatted::Fragment#word_spacing=" do
89
89
  target_box[1] += @pdf.bounds.absolute_bottom
90
90
  target_box[2] += @pdf.bounds.absolute_left
91
91
  target_box[3] += @pdf.bounds.absolute_bottom
92
- @fragment.absolute_bounding_box.should == target_box
92
+ expect(@fragment.absolute_bounding_box).to eq(target_box)
93
93
  end
94
94
  it "should account for word_spacing in #underline_points" do
95
95
  y = 198.75
96
96
  target_points = [[50, y], [160, y]]
97
- @fragment.underline_points.should == target_points
97
+ expect(@fragment.underline_points).to eq(target_points)
98
98
  end
99
99
  it "should account for word_spacing in #strikethrough_points" do
100
100
  y = 200 + @fragment.ascender * 0.3
101
101
  target_points = [[50, y], [160, y]]
102
- @fragment.strikethrough_points.should == target_points
102
+ expect(@fragment.strikethrough_points).to eq(target_points)
103
103
  end
104
104
  end
105
105
 
@@ -125,13 +125,13 @@ describe "Text::Formatted::Fragment" do
125
125
 
126
126
  describe "#width" do
127
127
  it "should return the width" do
128
- @fragment.width.should == 100
128
+ expect(@fragment.width).to eq(100)
129
129
  end
130
130
  end
131
131
 
132
132
  describe "#styles" do
133
133
  it "should return the styles array" do
134
- @fragment.styles.should == [:bold, :italic]
134
+ expect(@fragment.styles).to eq([:bold, :italic])
135
135
  end
136
136
  it "should never return nil" do
137
137
  format_state = { :styles => nil,
@@ -143,50 +143,51 @@ describe "Text::Formatted::Fragment" do
143
143
  fragment = Prawn::Text::Formatted::Fragment.new("hello world",
144
144
  format_state,
145
145
  @pdf)
146
- fragment.styles.should == []
146
+ expect(fragment.styles).to eq([])
147
147
  end
148
148
  end
149
149
 
150
150
  describe "#line_height" do
151
151
  it "should return the line_height" do
152
- @fragment.line_height.should == 27
152
+ expect(@fragment.line_height).to eq(27)
153
153
  end
154
154
  end
155
155
 
156
156
  describe "#ascender" do
157
157
  it "should return the ascender" do
158
- @fragment.ascender.should == 17
158
+ expect(@fragment.ascender).to eq(17)
159
159
  end
160
160
  end
161
161
 
162
162
  describe "#descender" do
163
163
  it "should return the descender" do
164
- @fragment.descender.should == 7
164
+ expect(@fragment.descender).to eq(7)
165
165
  end
166
166
  end
167
167
 
168
168
  describe "#y_offset" do
169
169
  it "should be zero" do
170
- @fragment.y_offset.should == 0
170
+ expect(@fragment.y_offset).to eq(0)
171
171
  end
172
172
  end
173
173
 
174
174
  describe "#bounding_box" do
175
175
  it "should return the bounding box surrounding the fragment" do
176
176
  target_box = [50, 193, 150, 217]
177
- @fragment.bounding_box.should == target_box
177
+ expect(@fragment.bounding_box).to eq(target_box)
178
178
  end
179
179
  end
180
180
 
181
181
  describe "#absolute_bounding_box" do
182
- it "should return the bounding box surrounding the fragment" +
182
+ it "should return the bounding box surrounding the fragment" \
183
183
  " in absolute coordinates" do
184
184
  target_box = [50, 193, 150, 217]
185
- target_box[0] += @pdf.bounds.absolute_left
186
- target_box[1] += @pdf.bounds.absolute_bottom
187
- target_box[2] += @pdf.bounds.absolute_left
188
- target_box[3] += @pdf.bounds.absolute_bottom
189
- @fragment.absolute_bounding_box.should == target_box
185
+ target_box[0] += @pdf.bounds.absolute_left
186
+ target_box[1] += @pdf.bounds.absolute_bottom
187
+ target_box[2] += @pdf.bounds.absolute_left
188
+ target_box[3] += @pdf.bounds.absolute_bottom
189
+
190
+ expect(@fragment.absolute_bounding_box).to eq(target_box)
190
191
  end
191
192
  end
192
193
 
@@ -194,7 +195,7 @@ describe "Text::Formatted::Fragment" do
194
195
  it "should define a line under the fragment" do
195
196
  y = 198.75
196
197
  target_points = [[50, y], [150, y]]
197
- @fragment.underline_points.should == target_points
198
+ expect(@fragment.underline_points).to eq(target_points)
198
199
  end
199
200
  end
200
201
 
@@ -202,7 +203,7 @@ describe "Text::Formatted::Fragment" do
202
203
  it "should define a line through the fragment" do
203
204
  y = 200 + @fragment.ascender * 0.3
204
205
  target_points = [[50, y], [150, y]]
205
- @fragment.strikethrough_points.should == target_points
206
+ expect(@fragment.strikethrough_points).to eq(target_points)
206
207
  end
207
208
  end
208
209
  end
@@ -225,12 +226,12 @@ describe "Text::Formatted::Fragment that is a subscript" do
225
226
  end
226
227
  describe "#subscript?" do
227
228
  it "should be_true" do
228
- @fragment.should be_subscript
229
+ expect(@fragment).to be_subscript
229
230
  end
230
231
  end
231
232
  describe "#y_offset" do
232
233
  it "should return a negative value" do
233
- @fragment.y_offset.should be < 0
234
+ expect(@fragment.y_offset).to be < 0
234
235
  end
235
236
  end
236
237
  end
@@ -253,12 +254,12 @@ describe "Text::Formatted::Fragment that is a superscript" do
253
254
  end
254
255
  describe "#superscript?" do
255
256
  it "should be_true" do
256
- @fragment.should be_superscript
257
+ expect(@fragment).to be_superscript
257
258
  end
258
259
  end
259
260
  describe "#y_offset" do
260
261
  it "should return a positive value" do
261
- @fragment.y_offset.should be > 0
262
+ expect(@fragment.y_offset).to be > 0
262
263
  end
263
264
  end
264
265
  end
@@ -268,31 +269,31 @@ describe "Text::Formatted::Fragment with :direction => :rtl" do
268
269
  create_pdf
269
270
  format_state = { :direction => :rtl }
270
271
  fragment = Prawn::Text::Formatted::Fragment.new("hello world",
271
- format_state,
272
- @pdf)
273
- fragment.text.should == "dlrow olleh"
272
+ format_state,
273
+ @pdf)
274
+ expect(fragment.text).to eq("dlrow olleh")
274
275
  end
275
276
  end
276
277
 
277
278
  describe "Text::Formatted::Fragment default_direction=" do
278
- it "should set the direction if there is no fragment level direction " +
279
+ it "should set the direction if there is no fragment level direction " \
279
280
  "specification" do
280
281
  create_pdf
281
- format_state = { }
282
+ format_state = {}
282
283
  fragment = Prawn::Text::Formatted::Fragment.new("hello world",
283
- format_state,
284
- @pdf)
284
+ format_state,
285
+ @pdf)
285
286
  fragment.default_direction = :rtl
286
- fragment.direction.should == :rtl
287
+ expect(fragment.direction).to eq(:rtl)
287
288
  end
288
- it "should not set the direction if there is a fragment level direction " +
289
+ it "should not set the direction if there is a fragment level direction " \
289
290
  "specification" do
290
291
  create_pdf
291
292
  format_state = { :direction => :rtl }
292
293
  fragment = Prawn::Text::Formatted::Fragment.new("hello world",
293
- format_state,
294
+ format_state,
294
295
  @pdf)
295
296
  fragment.default_direction = :ltr
296
- fragment.direction.should == :rtl
297
+ expect(fragment.direction).to eq(:rtl)
297
298
  end
298
299
  end
@@ -3,126 +3,116 @@
3
3
  require File.join(File.expand_path(File.dirname(__FILE__)), "spec_helper")
4
4
 
5
5
  describe "When drawing a line" do
6
-
7
6
  before(:each) { create_pdf }
8
7
 
9
8
  it "should draw a line from (100,600) to (100,500)" do
10
- @pdf.line([100,600],[100,500])
9
+ @pdf.line([100, 600], [100, 500])
11
10
 
12
11
  line_drawing = PDF::Inspector::Graphics::Line.analyze(@pdf.render)
13
12
 
14
- line_drawing.points.should == [[100,600],[100,500]]
13
+ expect(line_drawing.points).to eq([[100, 600], [100, 500]])
15
14
  end
16
15
 
17
- it "should draw two lines at (100,600) to (100,500) " +
16
+ it "should draw two lines at (100,600) to (100,500) " \
18
17
  "and (75,100) to (50,125)" do
19
- @pdf.line(100,600,100,500)
20
- @pdf.line(75,100,50,125)
18
+ @pdf.line(100, 600, 100, 500)
19
+ @pdf.line(75, 100, 50, 125)
21
20
 
22
21
  line_drawing = PDF::Inspector::Graphics::Line.analyze(@pdf.render)
23
22
 
24
- line_drawing.points.should ==
23
+ expect(line_drawing.points).to eq(
25
24
  [[100.0, 600.0], [100.0, 500.0], [75.0, 100.0], [50.0, 125.0]]
25
+ )
26
26
  end
27
27
 
28
28
  it "should properly set line width via line_width=" do
29
- @pdf.line_width = 10
30
- line = PDF::Inspector::Graphics::Line.analyze(@pdf.render)
31
- line.widths.first.should == 10
29
+ @pdf.line_width = 10
30
+ line = PDF::Inspector::Graphics::Line.analyze(@pdf.render)
31
+ expect(line.widths.first).to eq(10)
32
32
  end
33
33
 
34
34
  it "should properly set line width via line_width(width)" do
35
- @pdf.line_width(10)
36
- line = PDF::Inspector::Graphics::Line.analyze(@pdf.render)
37
- line.widths.first.should == 10
35
+ @pdf.line_width(10)
36
+ line = PDF::Inspector::Graphics::Line.analyze(@pdf.render)
37
+ expect(line.widths.first).to eq(10)
38
38
  end
39
39
 
40
40
  it "should carry the current line width settings over to new pages" do
41
41
  @pdf.line_width(10)
42
42
  @pdf.start_new_page
43
43
  line = PDF::Inspector::Graphics::Line.analyze(@pdf.render)
44
- line.widths.length.should == 2
45
- line.widths[1].should == 10
44
+ expect(line.widths.length).to eq(2)
45
+ expect(line.widths[1]).to eq(10)
46
46
  end
47
47
 
48
48
  describe "(Horizontally)" do
49
49
  it "should draw from [x1,pdf.y],[x2,pdf.y]" do
50
- @pdf.horizontal_line(100,150)
50
+ @pdf.horizontal_line(100, 150)
51
51
  @line = PDF::Inspector::Graphics::Line.analyze(@pdf.render)
52
- @line.points.should == [[100.0 + @pdf.bounds.absolute_left, @pdf.y],
53
- [150.0 + @pdf.bounds.absolute_left, @pdf.y]]
52
+ expect(@line.points).to eq([[100.0 + @pdf.bounds.absolute_left, @pdf.y],
53
+ [150.0 + @pdf.bounds.absolute_left, @pdf.y]])
54
54
  end
55
55
 
56
56
  it "should draw a line from (200, 250) to (300, 250)" do
57
- @pdf.horizontal_line(200,300,:at => 250)
57
+ @pdf.horizontal_line(200, 300, :at => 250)
58
58
  line_drawing = PDF::Inspector::Graphics::Line.analyze(@pdf.render)
59
- line_drawing.points.should == [[200,250],[300,250]]
59
+ expect(line_drawing.points).to eq([[200, 250], [300, 250]])
60
60
  end
61
61
  end
62
62
 
63
63
  describe "(Vertically)" do
64
64
  it "should draw a line from (350, 300) to (350, 400)" do
65
- @pdf.vertical_line(300,400,:at => 350)
65
+ @pdf.vertical_line(300, 400, :at => 350)
66
66
  line_drawing = PDF::Inspector::Graphics::Line.analyze(@pdf.render)
67
- line_drawing.points.should == [[350,300],[350,400]]
67
+ expect(line_drawing.points).to eq([[350, 300], [350, 400]])
68
68
  end
69
69
  it "should require a y coordinate" do
70
- lambda { @pdf.vertical_line(400,500) }.
71
- should raise_error(ArgumentError)
70
+ expect { @pdf.vertical_line(400, 500) }.
71
+ to raise_error(ArgumentError)
72
72
  end
73
73
  end
74
-
75
74
  end
76
75
 
77
76
  describe "When drawing a polygon" do
78
-
79
77
  before(:each) { create_pdf }
80
78
 
81
79
  it "should draw each line passed to polygon()" do
82
- @pdf.polygon([100,500],[100,400],[200,400])
80
+ @pdf.polygon([100, 500], [100, 400], [200, 400])
83
81
 
84
82
  line_drawing = PDF::Inspector::Graphics::Line.analyze(@pdf.render)
85
- line_drawing.points.should == [[100,500],[100,400],[200,400],[100,500]]
83
+ expect(line_drawing.points).to eq([[100, 500], [100, 400], [200, 400], [100, 500]])
86
84
  end
87
-
88
85
  end
89
86
 
90
87
  describe "When drawing a rectangle" do
91
-
92
88
  before(:each) { create_pdf }
93
89
 
94
90
  it "should use a point, width, and height for coords" do
95
- @pdf.rectangle [200,200], 50, 100
91
+ @pdf.rectangle [200, 200], 50, 100
96
92
 
97
- rectangles = PDF::Inspector::Graphics::Rectangle.
98
- analyze(@pdf.render).rectangles
93
+ rectangles = PDF::Inspector::Graphics::Rectangle.analyze(@pdf.render).rectangles
99
94
  # PDF uses bottom left corner
100
- rectangles[0][:point].should == [200,100]
101
- rectangles[0][:width].should == 50
102
- rectangles[0][:height].should == 100
103
-
95
+ expect(rectangles[0][:point]).to eq([200, 100])
96
+ expect(rectangles[0][:width]).to eq(50)
97
+ expect(rectangles[0][:height]).to eq(100)
104
98
  end
105
-
106
99
  end
107
100
 
108
101
  describe "When drawing a curve" do
109
-
110
102
  before(:each) { create_pdf }
111
103
 
112
104
  it "should draw a bezier curve from 50,50 to 100,100" do
113
- @pdf.move_to [50,50]
114
- @pdf.curve_to [100,100],:bounds => [[20,90], [90,70]]
105
+ @pdf.move_to [50, 50]
106
+ @pdf.curve_to [100, 100], :bounds => [[20, 90], [90, 70]]
115
107
  curve = PDF::Inspector::Graphics::Curve.analyze(@pdf.render)
116
- curve.coords.should == [50.0, 50.0, 20.0, 90.0, 90.0, 70.0, 100.0, 100.0]
108
+ expect(curve.coords).to eq([50.0, 50.0, 20.0, 90.0, 90.0, 70.0, 100.0, 100.0])
117
109
  end
118
110
 
119
111
  it "should draw a bezier curve from 100,100 to 50,50" do
120
- @pdf.curve [100,100], [50,50], :bounds => [[20,90], [90,75]]
112
+ @pdf.curve [100, 100], [50, 50], :bounds => [[20, 90], [90, 75]]
121
113
  curve = PDF::Inspector::Graphics::Curve.analyze(@pdf.render)
122
- curve.coords.should == [100.0, 100.0, 20.0, 90.0, 90.0, 75.0, 50.0, 50.0]
114
+ expect(curve.coords).to eq([100.0, 100.0, 20.0, 90.0, 90.0, 75.0, 50.0, 50.0])
123
115
  end
124
-
125
-
126
116
  end
127
117
 
128
118
  describe "When drawing a rounded rectangle" do
@@ -131,42 +121,40 @@ describe "When drawing a rounded rectangle" do
131
121
  @pdf.rounded_rectangle([50, 550], 50, 100, 10)
132
122
  curve = PDF::Inspector::Graphics::Curve.analyze(@pdf.render)
133
123
  curve_points = []
134
- curve.coords.each_slice(2) {|p| curve_points << p}
124
+ curve.coords.each_slice(2) { |p| curve_points << p }
135
125
  @original_point = curve_points.shift
136
126
  curves = []
137
- curve_points.each_slice(3) {|c| curves << c}
127
+ curve_points.each_slice(3) { |c| curves << c }
138
128
  line_points = PDF::Inspector::Graphics::Line.analyze(@pdf.render).points
139
129
  line_points.shift
140
130
  @all_coords = []
141
- line_points.zip(curves).flatten.each_slice(2) {|p| @all_coords << p }
131
+ line_points.zip(curves).flatten.each_slice(2) { |p| @all_coords << p }
142
132
  @all_coords.unshift @original_point
143
133
  end
144
134
 
145
135
  it "should draw a rectangle by connecting lines with rounded bezier curves" do
146
- @all_coords.should == [[60.0, 550.0],[90.0, 550.0], [95.5228, 550.0],
147
- [100.0, 545.5228], [100.0, 540.0], [100.0, 460.0],
148
- [100.0, 454.4772], [95.5228, 450.0], [90.0, 450.0],
149
- [60.0, 450.0], [54.4772, 450.0], [50.0, 454.4772],
150
- [50.0, 460.0], [50.0, 540.0], [50.0, 545.5228],
151
- [54.4772, 550.0], [60.0, 550.0]]
136
+ expect(@all_coords).to eq([[60.0, 550.0], [90.0, 550.0], [95.5228, 550.0],
137
+ [100.0, 545.5228], [100.0, 540.0], [100.0, 460.0],
138
+ [100.0, 454.4772], [95.5228, 450.0], [90.0, 450.0],
139
+ [60.0, 450.0], [54.4772, 450.0], [50.0, 454.4772],
140
+ [50.0, 460.0], [50.0, 540.0], [50.0, 545.5228],
141
+ [54.4772, 550.0], [60.0, 550.0]])
152
142
  end
153
143
 
154
144
  it "should start and end with the same point" do
155
- @original_point.should == @all_coords.last
145
+ expect(@original_point).to eq(@all_coords.last)
156
146
  end
157
-
158
-
159
147
  end
160
148
 
161
149
  describe "When drawing an ellipse" do
162
150
  before(:each) do
163
151
  create_pdf
164
- @pdf.ellipse [100,100], 25, 50
152
+ @pdf.ellipse [100, 100], 25, 50
165
153
  @curve = PDF::Inspector::Graphics::Curve.analyze(@pdf.render)
166
154
  end
167
155
 
168
156
  it "should use a Bézier approximation" do
169
- @curve.coords.should ==
157
+ expect(@curve.coords).to eq(
170
158
  [125.0, 100.0,
171
159
 
172
160
  125.0, 127.6142,
@@ -186,25 +174,25 @@ describe "When drawing an ellipse" do
186
174
  125.0, 100.0,
187
175
 
188
176
  100.0, 100.0]
177
+ )
189
178
  end
190
179
 
191
180
  it "should move the pointer to the center of the ellipse after drawing" do
192
- @curve.coords[-2..-1].should == [100,100]
181
+ expect(@curve.coords[-2..-1]).to eq([100, 100])
193
182
  end
194
-
195
183
  end
196
184
 
197
185
  describe "When drawing a circle" do
198
186
  before(:each) do
199
187
  create_pdf
200
- @pdf.circle [100,100], 25
201
- @pdf.ellipse [100,100], 25, 25
188
+ @pdf.circle [100, 100], 25
189
+ @pdf.ellipse [100, 100], 25, 25
202
190
  @curve = PDF::Inspector::Graphics::Curve.analyze(@pdf.render)
203
191
  end
204
192
 
205
193
  it "should stroke the same path as the equivalent ellipse" do
206
194
  middle = @curve.coords.length / 2
207
- @curve.coords[0...middle].should == @curve.coords[middle..-1]
195
+ expect(@curve.coords[0...middle]).to eq(@curve.coords[middle..-1])
208
196
  end
209
197
  end
210
198
 
@@ -233,42 +221,35 @@ describe "When filling" do
233
221
  end
234
222
 
235
223
  describe "When setting colors" do
236
-
237
224
  before(:each) { create_pdf }
238
225
 
239
226
  it "should set stroke colors" do
240
227
  @pdf.stroke_color "ffcccc"
241
228
  colors = PDF::Inspector::Graphics::Color.analyze(@pdf.render)
242
229
  # 100% red, 80% green, 80% blue
243
- colors.stroke_color.should == [1.0, 0.8, 0.8]
230
+ expect(colors.stroke_color).to eq([1.0, 0.8, 0.8])
244
231
  end
245
232
 
246
233
  it "should set fill colors" do
247
234
  @pdf.fill_color "ccff00"
248
235
  colors = PDF::Inspector::Graphics::Color.analyze(@pdf.render)
249
236
  # 80% red, 100% green, 0% blue
250
- colors.fill_color.should == [0.8,1.0,0]
237
+ expect(colors.fill_color).to eq([0.8, 1.0, 0])
251
238
  end
252
239
 
253
240
  it "should reset the colors on each new page if they have been defined" do
254
241
  @pdf.fill_color "ccff00"
255
- #colors = PDF::Inspector::Graphics::Color.analyze(@pdf.render)
256
242
 
257
- # colors.fill_color_count.should == 2
258
- # colors.stroke_color_count.should == 1
259
243
  @pdf.start_new_page
260
244
  @pdf.stroke_color "ff00cc"
261
245
 
262
- #colors = PDF::Inspector::Graphics::Color.analyze(@pdf.render)
263
- # colors.fill_color_count.should == 3
264
-
265
246
  @pdf.start_new_page
266
247
  colors = PDF::Inspector::Graphics::Color.analyze(@pdf.render)
267
- colors.fill_color_count.should == 3
268
- colors.stroke_color_count.should == 2
248
+ expect(colors.fill_color_count).to eq(3)
249
+ expect(colors.stroke_color_count).to eq(2)
269
250
 
270
- colors.fill_color.should == [0.8,1.0,0.0]
271
- colors.stroke_color.should == [1.0,0.0,0.8]
251
+ expect(colors.fill_color).to eq([0.8, 1.0, 0.0])
252
+ expect(colors.stroke_color).to eq([1.0, 0.0, 0.8])
272
253
  end
273
254
 
274
255
  it "should set the color space when setting colors on new pages to please fussy readers" do
@@ -278,7 +259,7 @@ describe "When setting colors" do
278
259
  @pdf.stroke_color "000000"
279
260
  @pdf.stroke { @pdf.rectangle([10, 10], 10, 10) }
280
261
  colors = PDF::Inspector::Graphics::Color.analyze(@pdf.render)
281
- colors.stroke_color_space_count[:DeviceRGB].should == 2
262
+ expect(colors.stroke_color_space_count[:DeviceRGB]).to eq(2)
282
263
  end
283
264
  end
284
265
 
@@ -288,72 +269,78 @@ describe "Patterns" do
288
269
  describe 'linear gradients' do
289
270
  it "should create a /Pattern resource" do
290
271
  @pdf.fill_gradient [0, @pdf.bounds.height],
291
- [@pdf.bounds.width, @pdf.bounds.height], 'FF0000', '0000FF'
272
+ [@pdf.bounds.width, @pdf.bounds.height],
273
+ 'FF0000', '0000FF'
292
274
 
293
275
  grad = PDF::Inspector::Graphics::Pattern.analyze(@pdf.render)
294
276
  pattern = grad.patterns.values.first
295
277
 
296
- pattern.should_not be_nil
297
- pattern[:Shading][:ShadingType].should == 2
298
- pattern[:Shading][:Coords].should == [0, 0, @pdf.bounds.width, 0]
299
- pattern[:Shading][:Function][:C0].zip([1, 0, 0]).all?{ |x1, x2|
300
- (x1-x2).abs < 0.01
301
- }.should be_true
302
- pattern[:Shading][:Function][:C1].zip([0, 0, 1]).all?{ |x1, x2|
303
- (x1-x2).abs < 0.01
304
- }.should be_true
278
+ expect(pattern).not_to be_nil
279
+ expect(pattern[:Shading][:ShadingType]).to eq(2)
280
+ expect(pattern[:Shading][:Coords]).to eq([0, 0, @pdf.bounds.width, 0])
281
+ expect(pattern[:Shading][:Function][:C0].zip([1, 0, 0]).all?{ |x1, x2|
282
+ (x1 - x2).abs < 0.01
283
+ }).to be_true
284
+ expect(pattern[:Shading][:Function][:C1].zip([0, 0, 1]).all?{ |x1, x2|
285
+ (x1 - x2).abs < 0.01
286
+ }).to be_true
305
287
  end
306
288
 
307
289
  it "fill_gradient should set fill color to the pattern" do
308
290
  @pdf.fill_gradient [0, @pdf.bounds.height],
309
- [@pdf.bounds.width, @pdf.bounds.height], 'FF0000', '0000FF'
291
+ [@pdf.bounds.width, @pdf.bounds.height],
292
+ 'FF0000', '0000FF'
310
293
 
311
294
  str = @pdf.render
312
- str.should =~ %r{/Pattern\s+cs\s*/SP-?\d+\s+scn}
295
+ expect(str).to match(%r{/Pattern\s+cs\s*/SP-?\d+\s+scn})
313
296
  end
314
297
 
315
298
  it "stroke_gradient should set stroke color to the pattern" do
316
299
  @pdf.stroke_gradient [0, @pdf.bounds.height],
317
- [@pdf.bounds.width, @pdf.bounds.height], 'FF0000', '0000FF'
300
+ [@pdf.bounds.width, @pdf.bounds.height],
301
+ 'FF0000', '0000FF'
318
302
 
319
303
  str = @pdf.render
320
- str.should =~ %r{/Pattern\s+CS\s*/SP-?\d+\s+SCN}
304
+ expect(str).to match(%r{/Pattern\s+CS\s*/SP-?\d+\s+SCN})
321
305
  end
322
306
  end
323
307
 
324
308
  describe 'radial gradients' do
325
309
  it "should create a /Pattern resource" do
326
310
  @pdf.fill_gradient [0, @pdf.bounds.height], 10,
327
- [@pdf.bounds.width, @pdf.bounds.height], 20, 'FF0000', '0000FF'
311
+ [@pdf.bounds.width, @pdf.bounds.height], 20,
312
+ 'FF0000', '0000FF'
328
313
 
329
314
  grad = PDF::Inspector::Graphics::Pattern.analyze(@pdf.render)
330
315
  pattern = grad.patterns.values.first
331
316
 
332
- pattern.should_not be_nil
333
- pattern[:Shading][:ShadingType].should == 3
334
- pattern[:Shading][:Coords].should == [0, 0, 10, @pdf.bounds.width, 0, 20]
335
- pattern[:Shading][:Function][:C0].zip([1, 0, 0]).all?{ |x1, x2|
336
- (x1-x2).abs < 0.01
337
- }.should be_true
338
- pattern[:Shading][:Function][:C1].zip([0, 0, 1]).all?{ |x1, x2|
339
- (x1-x2).abs < 0.01
340
- }.should be_true
317
+ expect(pattern).not_to be_nil
318
+ expect(pattern[:Shading][:ShadingType]).to eq(3)
319
+ expect(pattern[:Shading][:Coords]).to eq([0, 0, 10, @pdf.bounds.width, 0, 20])
320
+ expect(pattern[:Shading][:Function][:C0].zip([1, 0, 0]).all?{ |x1, x2|
321
+ (x1 - x2).abs < 0.01
322
+ }).to be_true
323
+ expect(pattern[:Shading][:Function][:C1].zip([0, 0, 1]).all?{ |x1, x2|
324
+ (x1 - x2).abs < 0.01
325
+ }).to be_true
341
326
  end
342
327
 
343
328
  it "fill_gradient should set fill color to the pattern" do
344
329
  @pdf.fill_gradient [0, @pdf.bounds.height], 10,
345
- [@pdf.bounds.width, @pdf.bounds.height], 20, 'FF0000', '0000FF'
330
+ [@pdf.bounds.width, @pdf.bounds.height], 20,
331
+ 'FF0000', '0000FF'
346
332
 
347
333
  str = @pdf.render
348
- str.should =~ %r{/Pattern\s+cs\s*/SP-?\d+\s+scn}
334
+ expect(str).to match(%r{/Pattern\s+cs\s*/SP-?\d+\s+scn})
349
335
  end
350
336
 
351
337
  it "stroke_gradient should set stroke color to the pattern" do
352
338
  @pdf.stroke_gradient [0, @pdf.bounds.height], 10,
353
- [@pdf.bounds.width, @pdf.bounds.height], 20, 'FF0000', '0000FF'
339
+ [@pdf.bounds.width, @pdf.bounds.height], 20,
340
+ 'FF0000', '0000FF'
354
341
 
355
342
  str = @pdf.render
356
- str.should =~ %r{/Pattern\s+CS\s*/SP-?\d+\s+SCN}
343
+ expect(str).to match(%r{/Pattern\s+CS\s*/SP-?\d+\s+SCN})
357
344
  end
358
345
  end
359
346
  end
@@ -362,22 +349,22 @@ describe "When using painting shortcuts" do
362
349
  before(:each) { create_pdf }
363
350
 
364
351
  it "should convert stroke_some_method(args) into some_method(args); stroke" do
365
- @pdf.expects(:line_to).with([100,100])
352
+ @pdf.expects(:line_to).with([100, 100])
366
353
  @pdf.expects(:stroke)
367
354
 
368
- @pdf.stroke_line_to [100,100]
355
+ @pdf.stroke_line_to [100, 100]
369
356
  end
370
357
 
371
358
  it "should convert fill_some_method(args) into some_method(args); fill" do
372
- @pdf.expects(:line_to).with([100,100])
359
+ @pdf.expects(:line_to).with([100, 100])
373
360
  @pdf.expects(:fill)
374
361
 
375
- @pdf.fill_line_to [100,100]
362
+ @pdf.fill_line_to [100, 100]
376
363
  end
377
364
 
378
365
  it "should not break method_missing" do
379
- lambda { @pdf.i_have_a_pretty_girlfriend_named_jia }.
380
- should raise_error(NoMethodError)
366
+ expect { @pdf.i_have_a_pretty_girlfriend_named_jia }.
367
+ to raise_error(NoMethodError)
381
368
  end
382
369
  end
383
370
 
@@ -413,32 +400,32 @@ describe "When using graphics states" do
413
400
  @pdf.stroke_color 0, 0, 0, 0
414
401
  @pdf.restore_graphics_state
415
402
  @pdf.stroke_color 0, 0, 100, 0
416
- @pdf.graphic_state.color_space.should == {:stroke=>:DeviceCMYK}
403
+ expect(@pdf.graphic_state.color_space).to eq(:stroke => :DeviceCMYK)
417
404
  colors = PDF::Inspector::Graphics::Color.analyze(@pdf.render)
418
- colors.color_space.should == :DeviceCMYK
419
- colors.stroke_color_space_count[:DeviceCMYK].should == 2
405
+ expect(colors.color_space).to eq(:DeviceCMYK)
406
+ expect(colors.stroke_color_space_count[:DeviceCMYK]).to eq(2)
420
407
  end
421
408
 
422
409
  it "should use the correct dash setting after restoring and starting new page" do
423
410
  @pdf.dash 5
424
411
  @pdf.save_graphics_state
425
412
  @pdf.dash 10
426
- @pdf.graphic_state.dash[:dash].should == 10
413
+ expect(@pdf.graphic_state.dash[:dash]).to eq(10)
427
414
  @pdf.restore_graphics_state
428
415
  @pdf.start_new_page
429
- @pdf.graphic_state.dash[:dash].should == 5
416
+ expect(@pdf.graphic_state.dash[:dash]).to eq(5)
430
417
  end
431
418
 
432
419
  it "should round dash values to four decimal places" do
433
420
  @pdf.dash 5.12345
434
- @pdf.graphic_state.dash_setting.should == "[5.1235 5.1235] 0.0 d"
421
+ expect(@pdf.graphic_state.dash_setting).to eq("[5.1235 5.1235] 0.0 d")
435
422
  end
436
423
 
437
424
  it "should raise an error when dash is called w. a zero length or space" do
438
425
  expect { @pdf.dash(0) }.to raise_error(ArgumentError)
439
426
  expect { @pdf.dash([0]) }.to raise_error(ArgumentError)
440
- expect { @pdf.dash([0,0]) }.to raise_error(ArgumentError)
441
- expect { @pdf.dash([0,0,0,1]) }.to raise_error(ArgumentError)
427
+ expect { @pdf.dash([0, 0]) }.to raise_error(ArgumentError)
428
+ expect { @pdf.dash([0, 0, 0, 1]) }.to raise_error(ArgumentError)
442
429
  end
443
430
 
444
431
  it "the current graphic state should keep track of previous unchanged settings" do
@@ -451,54 +438,51 @@ describe "When using graphics states" do
451
438
  @pdf.fill_color 0, 0, 100, 0
452
439
  @pdf.save_graphics_state
453
440
 
454
- @pdf.graphic_state.stroke_color.should == "000000"
455
- @pdf.graphic_state.join_style.should == :miter
456
- @pdf.graphic_state.fill_color.should == [0, 0, 100, 0]
457
- @pdf.graphic_state.cap_style.should == :round
458
- @pdf.graphic_state.color_space.should == {:fill=>:DeviceCMYK, :stroke=>:DeviceRGB}
459
- @pdf.graphic_state.dash.should == {:space=>5, :phase=>0, :dash=>5}
460
- @pdf.graphic_state.line_width.should == 1
441
+ expect(@pdf.graphic_state.stroke_color).to eq("000000")
442
+ expect(@pdf.graphic_state.join_style).to eq(:miter)
443
+ expect(@pdf.graphic_state.fill_color).to eq([0, 0, 100, 0])
444
+ expect(@pdf.graphic_state.cap_style).to eq(:round)
445
+ expect(@pdf.graphic_state.color_space).to eq(:fill => :DeviceCMYK, :stroke => :DeviceRGB)
446
+ expect(@pdf.graphic_state.dash).to eq(:space => 5, :phase => 0, :dash => 5)
447
+ expect(@pdf.graphic_state.line_width).to eq(1)
461
448
  end
462
449
 
463
-
464
-
465
450
  it "should not add extra graphic space closings when rendering multiple times" do
466
451
  @pdf.render
467
452
  state = PDF::Inspector::Graphics::State.analyze(@pdf.render)
468
- state.save_graphics_state_count.should == 1
469
- state.restore_graphics_state_count.should == 1
453
+ expect(state.save_graphics_state_count).to eq(1)
454
+ expect(state.restore_graphics_state_count).to eq(1)
470
455
  end
471
456
 
472
457
  it "should add extra graphic state enclosings when content is added on multiple renderings" do
473
458
  @pdf.render
474
459
  @pdf.text "Adding a bit more content"
475
460
  state = PDF::Inspector::Graphics::State.analyze(@pdf.render)
476
- state.save_graphics_state_count.should == 2
477
- state.restore_graphics_state_count.should == 2
461
+ expect(state.save_graphics_state_count).to eq(2)
462
+ expect(state.restore_graphics_state_count).to eq(2)
478
463
  end
479
464
 
480
465
  it "adds extra graphic state enclosings when new settings are applied on multiple renderings" do
481
466
  @pdf.render
482
467
  @pdf.stroke_color 0, 0, 0, 0
483
468
  state = PDF::Inspector::Graphics::State.analyze(@pdf.render)
484
- state.save_graphics_state_count.should == 2
485
- state.restore_graphics_state_count.should == 2
469
+ expect(state.save_graphics_state_count).to eq(2)
470
+ expect(state.restore_graphics_state_count).to eq(2)
486
471
  end
487
472
 
488
-
489
473
  it "should raise_error error if closing an empty graphic stack" do
490
- lambda {
474
+ expect {
491
475
  @pdf.render
492
476
  @pdf.restore_graphics_state
493
- }.should raise_error(PDF::Core::Errors::EmptyGraphicStateStack)
477
+ }.to raise_error(PDF::Core::Errors::EmptyGraphicStateStack)
494
478
  end
495
479
 
496
480
  it "should copy mutable attributes when passing a previous_state to the initializer" do
497
481
  new_state = PDF::Core::GraphicState.new(@pdf.graphic_state)
498
482
 
499
483
  [:color_space, :dash, :fill_color, :stroke_color].each do |attr|
500
- new_state.send(attr).should == @pdf.graphic_state.send(attr)
501
- new_state.send(attr).should_not equal(@pdf.graphic_state.send(attr))
484
+ expect(new_state.send(attr)).to eq(@pdf.graphic_state.send(attr))
485
+ expect(new_state.send(attr)).not_to equal(@pdf.graphic_state.send(attr))
502
486
  end
503
487
  end
504
488
 
@@ -506,8 +490,8 @@ describe "When using graphics states" do
506
490
  new_state = @pdf.graphic_state.dup
507
491
 
508
492
  [:color_space, :dash, :fill_color, :stroke_color].each do |attr|
509
- new_state.send(attr).should == @pdf.graphic_state.send(attr)
510
- new_state.send(attr).should_not equal(@pdf.graphic_state.send(attr))
493
+ expect(new_state.send(attr)).to eq(@pdf.graphic_state.send(attr))
494
+ expect(new_state.send(attr)).not_to equal(@pdf.graphic_state.send(attr))
511
495
  end
512
496
  end
513
497
  end
@@ -527,13 +511,13 @@ describe "When using transformation matrix" do
527
511
  values = Array.new(6, 0.000000000001)
528
512
  string = Array.new(6, "0.00000").join " "
529
513
  @pdf.renderer.expects(:add_content).with("#{string} cm")
530
- @pdf.transformation_matrix *values
514
+ @pdf.transformation_matrix(*values)
531
515
  end
532
516
 
533
517
  it "should be received by the inspector" do
534
518
  @pdf.transformation_matrix 1, 0, 0, -1, 5.5, 20
535
519
  matrices = PDF::Inspector::Graphics::Matrix.analyze(@pdf.render)
536
- matrices.matrices.should == [[1, 0, 0, -1, 5.5, 20]]
520
+ expect(matrices.matrices).to eq([[1, 0, 0, -1, 5.5, 20]])
537
521
  end
538
522
 
539
523
  it "should save the graphics state inside the given block" do
@@ -541,15 +525,14 @@ describe "When using transformation matrix" do
541
525
  string = Array.new(6, "0.00000").join " "
542
526
  process = sequence "process"
543
527
 
544
- @pdf.expects(:save_graphics_state).with().in_sequence(process)
528
+ @pdf.expects(:save_graphics_state).with.in_sequence(process)
545
529
  @pdf.renderer.expects(:add_content).with("#{string} cm").in_sequence(process)
546
- @pdf.expects(:do_something).with().in_sequence(process)
547
- @pdf.expects(:restore_graphics_state).with().in_sequence(process)
530
+ @pdf.expects(:do_something).with.in_sequence(process)
531
+ @pdf.expects(:restore_graphics_state).with.in_sequence(process)
548
532
  @pdf.transformation_matrix(*values) do
549
533
  @pdf.do_something
550
534
  end
551
535
  end
552
-
553
536
  end
554
537
 
555
538
  describe "When using transformations shortcuts" do
@@ -577,13 +560,13 @@ describe "When using transformations shortcuts" do
577
560
  @pdf.rotate(@angle, :origin => [@x, @y]) { @pdf.text('hello world') }
578
561
 
579
562
  matrices = PDF::Inspector::Graphics::Matrix.analyze(@pdf.render)
580
- matrices.matrices[0].should == [1, 0, 0, 1,
581
- reduce_precision(@x - x_prime),
582
- reduce_precision(@y - y_prime)]
583
- matrices.matrices[1].should == [reduce_precision(@cos),
584
- reduce_precision(@sin),
585
- reduce_precision(-@sin),
586
- reduce_precision(@cos), 0, 0]
563
+ expect(matrices.matrices[0]).to eq([1, 0, 0, 1,
564
+ reduce_precision(@x - x_prime),
565
+ reduce_precision(@y - y_prime)])
566
+ expect(matrices.matrices[1]).to eq([reduce_precision(@cos),
567
+ reduce_precision(@sin),
568
+ reduce_precision(-@sin),
569
+ reduce_precision(@cos), 0, 0])
587
570
  end
588
571
 
589
572
  it "should rotate around the origin in a document with a margin" do
@@ -597,19 +580,19 @@ describe "When using transformations shortcuts" do
597
580
  y_prime = x * @sin + y * @cos
598
581
 
599
582
  matrices = PDF::Inspector::Graphics::Matrix.analyze(@pdf.render)
600
- matrices.matrices[0].should == [1, 0, 0, 1,
601
- reduce_precision(x - x_prime),
602
- reduce_precision(y - y_prime)]
603
- matrices.matrices[1].should == [reduce_precision(@cos),
604
- reduce_precision(@sin),
605
- reduce_precision(-@sin),
606
- reduce_precision(@cos), 0, 0]
583
+ expect(matrices.matrices[0]).to eq([1, 0, 0, 1,
584
+ reduce_precision(x - x_prime),
585
+ reduce_precision(y - y_prime)])
586
+ expect(matrices.matrices[1]).to eq([reduce_precision(@cos),
587
+ reduce_precision(@sin),
588
+ reduce_precision(-@sin),
589
+ reduce_precision(@cos), 0, 0])
607
590
  end
608
591
 
609
592
  it "should raise_error BlockRequired if no block is given" do
610
- lambda {
593
+ expect {
611
594
  @pdf.rotate(@angle, :origin => [@x, @y])
612
- }.should raise_error(Prawn::Errors::BlockRequired)
595
+ }.to raise_error(Prawn::Errors::BlockRequired)
613
596
  end
614
597
 
615
598
  def reduce_precision(float)
@@ -640,10 +623,10 @@ describe "When using transformations shortcuts" do
640
623
  @pdf.scale(@factor, :origin => [@x, @y]) { @pdf.text('hello world') }
641
624
 
642
625
  matrices = PDF::Inspector::Graphics::Matrix.analyze(@pdf.render)
643
- matrices.matrices[0].should == [1, 0, 0, 1,
644
- reduce_precision(@x - x_prime),
645
- reduce_precision(@y - y_prime)]
646
- matrices.matrices[1].should == [@factor, 0, 0, @factor, 0, 0]
626
+ expect(matrices.matrices[0]).to eq([1, 0, 0, 1,
627
+ reduce_precision(@x - x_prime),
628
+ reduce_precision(@y - y_prime)])
629
+ expect(matrices.matrices[1]).to eq([@factor, 0, 0, @factor, 0, 0])
647
630
  end
648
631
 
649
632
  it "should scale from the origin in a document with a margin" do
@@ -656,16 +639,16 @@ describe "When using transformations shortcuts" do
656
639
  @pdf.scale(@factor, :origin => [@x, @y]) { @pdf.text('hello world') }
657
640
 
658
641
  matrices = PDF::Inspector::Graphics::Matrix.analyze(@pdf.render)
659
- matrices.matrices[0].should == [1, 0, 0, 1,
660
- reduce_precision(x - x_prime),
661
- reduce_precision(y - y_prime)]
662
- matrices.matrices[1].should == [@factor, 0, 0, @factor, 0, 0]
642
+ expect(matrices.matrices[0]).to eq([1, 0, 0, 1,
643
+ reduce_precision(x - x_prime),
644
+ reduce_precision(y - y_prime)])
645
+ expect(matrices.matrices[1]).to eq([@factor, 0, 0, @factor, 0, 0])
663
646
  end
664
647
 
665
648
  it "should raise_error BlockRequired if no block is given" do
666
- lambda {
649
+ expect {
667
650
  @pdf.scale(@factor, :origin => [@x, @y])
668
- }.should raise_error(Prawn::Errors::BlockRequired)
651
+ }.to raise_error(Prawn::Errors::BlockRequired)
669
652
  end
670
653
 
671
654
  def reduce_precision(float)