test/hexapdf/content/test_canvas.rb in hexapdf-0.3.0 vs test/hexapdf/content/test_canvas.rb in hexapdf-0.4.0

- old
+ new

@@ -1078,10 +1078,25 @@ [:show_text_with_positioning, [["Hal"]]], ]) end end + describe "show_glyphs_only" do + it "serializes correctly" do + @canvas.font("Times", size: 20) + font = @canvas.font + @canvas.show_glyphs_only(font.decode_utf8("Hal lo").insert(2, -35)) + assert_equal(0, @canvas.text_cursor[0]) + assert_equal(0, @canvas.text_cursor[1]) + assert_operators(@canvas.contents, [[:set_font_and_size, [:F1, 20]], + [:set_leading, [24]], + [:begin_text], + [:show_text_with_positioning, [["Ha", -35, "l lo"]]], + ]) + end + end + describe "text" do it "sets the text cursor position if instructed" do @canvas.font("Times", size: 10) @canvas.text("Hallo", at: [100, 100]) assert_operators(@canvas.contents, [[:set_font_and_size, [:F1, 10]], @@ -1106,8 +1121,69 @@ [:show_text_with_positioning, [["H"]]], [:move_text_next_line], [:show_text_with_positioning, [["H"]]], [:move_text_next_line], [:show_text_with_positioning, [["H"]]], [:move_text_next_line], [:show_text_with_positioning, [["H"]]], ]) + end + end + + describe "marked_content_point" do + it "invokes the operator implementation" do + assert_operator_invoked(:MP, :tag) { @canvas.marked_content_point(:tag) } + assert_operator_invoked(:DP, :tag, :P1) do + @canvas.marked_content_point(:tag, property_list: {key: 5}) + end + end + + it "is serialized correctly" do + @canvas.marked_content_point(:tag) + assert_operators(@canvas.contents, [[:designate_marked_content_point, [:tag]]]) + end + + it "fails if invoked while in an unsupported graphics objects" do + assert_raises_in_graphics_object(:path, :clipping_path) { @canvas.marked_content_point(:tag) } + end + end + + describe "marked_content_sequence" do + it "invokes the operator implementation" do + assert_operator_invoked(:BMC, :tag) { @canvas.marked_content_sequence(:tag) } + assert_operator_invoked(:BDC, :tag, :P1) do + @canvas.marked_content_sequence(:tag, property_list: {key: 5}) + end + end + + it "is serialized correctly when no block is used" do + @canvas.marked_content_sequence(:tag) + assert_operators(@canvas.contents, [[:begin_marked_content, [:tag]]]) + end + + it "is serialized correctly when a block is used" do + @canvas.marked_content_sequence(:tag, property_list: {key: 5}) { } + assert_operators(@canvas.contents, [[:begin_marked_content_with_property_list, [:tag, :P1]], + [:end_marked_content]]) + end + + it "fails if invoked while in an unsupported graphics objects" do + assert_raises_in_graphics_object(:path, :clipping_path) do + @canvas.marked_content_sequence(:tag) + end + end + end + + describe "end_marked_content_sequence" do + it "invokes the operator implementation" do + assert_operator_invoked(:EMC) { @canvas.end_marked_content_sequence } + end + + it "is serialized correctly" do + @canvas.end_marked_content_sequence + assert_operators(@page.contents, [[:end_marked_content]]) + end + + it "fails if invoked while in an unsupported graphics objects" do + assert_raises_in_graphics_object(:path, :clipping_path) do + @canvas.end_marked_content_sequence + end end end end