test/hexapdf/content/test_canvas.rb in hexapdf-0.33.0 vs test/hexapdf/content/test_canvas.rb in hexapdf-0.34.0

- old
+ new

@@ -69,10 +69,17 @@ it "returns the resources of the context object" do assert_equal(@page.resources, @canvas.resources) end end + describe "pos" do + it "returns the transformed position" do + @canvas.translate(9, 4) + assert_equal([10, 5], @canvas.pos(1, 1)) + end + end + describe "save_graphics_state" do it "invokes the operator implementation" do assert_operator_invoked(:q) { @canvas.save_graphics_state } end @@ -1275,9 +1282,51 @@ 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 + + describe "optional_content" do + it "invokes the marked-sequence operator implementation" do + assert_operator_invoked(:BDC, :OC, :P1) { @canvas.optional_content('Test') } + end + + it "is serialized correctly when no block is used" do + @canvas.optional_content('Test') + assert_operators(@canvas.contents, [[:begin_marked_content_with_property_list, [:OC, :P1]]]) + end + + it "is serialized correctly when a block is used" do + @canvas.optional_content('Test') {} + assert_operators(@canvas.contents, [[:begin_marked_content_with_property_list, [:OC, :P1]], + [:end_marked_content]]) + end + + it "uses the provided OCG dictionary" do + ocg = @doc.optional_content.add_ocg('Test') + @canvas.optional_content(ocg) + assert_equal(ocg, @page.resources.property_list(:P1)) + end + + it "uses an existing OCG specified by name" do + ocg = @doc.optional_content.add_ocg('Test') + @canvas.optional_content('Test') + assert_equal(ocg, @page.resources.property_list(:P1)) + end + + it "creates an OCG if the named one doesn't yet exist" do + @canvas.optional_content('Test') + assert_equal(@doc.optional_content.ocg('Test'), @page.resources.property_list(:P1)) + end + + it "always creates a new OCG if use_existing_ocg is false" do + ocg = @doc.optional_content.add_ocg('Test') + @canvas.optional_content('Test', use_existing_ocg: false) + pl_item = @page.resources.property_list(:P1) + refute_equal(ocg, pl_item) + assert_equal(@doc.optional_content.ocgs.last, pl_item) end end describe "color_from_specification "do it "accepts a color string" do