Sha256: 579978e5f961f7837e705fa47b80e0b3e0cd98bc329ce74bd666ba5b2687917f

Contents?: true

Size: 1.76 KB

Versions: 13

Compression:

Stored size: 1.76 KB

Contents

# -*- encoding: utf-8 -*-

require 'test_helper'
require 'hexapdf/rectangle'
require 'hexapdf/document'

describe HexaPDF::Rectangle do
  describe "after_data_change" do
    it "fails if the rectangle doesn't contain four numbers" do
      assert_raises(ArgumentError) { HexaPDF::Rectangle.new([1, 2, 3]) }
      assert_raises(ArgumentError) { HexaPDF::Rectangle.new([1, 2, 3, :a]) }
    end

    it "normalizes the array values" do
      rect = HexaPDF::Rectangle.new([0, 1, 2, 3])
      assert_equal([0, 1, 2, 3], rect.value)

      rect = HexaPDF::Rectangle.new([2, 3, 0, 1])
      assert_equal([0, 1, 2, 3], rect.value)

      rect = HexaPDF::Rectangle.new([0, 3, 2, 1])
      assert_equal([0, 1, 2, 3], rect.value)

      rect = HexaPDF::Rectangle.new([2, 1, 0, 3])
      assert_equal([0, 1, 2, 3], rect.value)
    end
  end

  it "returns individual fields of the rectangle" do
    rect = HexaPDF::Rectangle.new([2, 1, 0, 5])
    assert_equal(0, rect.left)
    assert_equal(2, rect.right)
    assert_equal(1, rect.bottom)
    assert_equal(5, rect.top)
    assert_equal(2, rect.width)
    assert_equal(4, rect.height)
  end

  it "allows setting all fields of the rectangle" do
    rect = HexaPDF::Rectangle.new([2, 1, 0, 5])
    rect.left = 5
    rect.right = 1
    rect.bottom = 2
    rect.top = 3
    assert_equal([5, 2, 1, 3], rect.value)

    rect.width = 10
    assert_equal(15, rect.right)
    rect.height = 10
    assert_equal(12, rect.top)
  end

  describe "validation" do
    it "ensures that it is a correct PDF rectangle" do
      doc = HexaPDF::Document.new
      rect = HexaPDF::Rectangle.new([0, 1, 2, 3], document: doc)
      assert(rect.validate)

      rect.value.shift
      refute(rect.validate)

      rect.value.unshift(:A)
      refute(rect.validate)
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
hexapdf-0.25.0 test/hexapdf/test_rectangle.rb
hexapdf-0.24.2 test/hexapdf/test_rectangle.rb
hexapdf-0.24.1 test/hexapdf/test_rectangle.rb
hexapdf-0.24.0 test/hexapdf/test_rectangle.rb
hexapdf-0.23.0 test/hexapdf/test_rectangle.rb
hexapdf-0.22.0 test/hexapdf/test_rectangle.rb
hexapdf-0.21.1 test/hexapdf/test_rectangle.rb
hexapdf-0.21.0 test/hexapdf/test_rectangle.rb
hexapdf-0.20.4 test/hexapdf/test_rectangle.rb
hexapdf-0.20.3 test/hexapdf/test_rectangle.rb
hexapdf-0.20.2 test/hexapdf/test_rectangle.rb
hexapdf-0.20.1 test/hexapdf/test_rectangle.rb
hexapdf-0.20.0 test/hexapdf/test_rectangle.rb