Sha256: 8c6f9fe113dea1ead2cd06ce57d31163846809b464bfec2a9a8317b0d02ed348

Contents?: true

Size: 1.6 KB

Versions: 10

Compression:

Stored size: 1.6 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 comparison to arrays" do
    rect = HexaPDF::Rectangle.new([0, 1, 2, 5])
    assert(rect == [0, 1, 2, 5])
    rect.oid = 5
    refute(rect == [0, 1, 2, 5])
  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

10 entries across 10 versions & 1 rubygems

Version Path
hexapdf-0.11.9 test/hexapdf/test_rectangle.rb
hexapdf-0.11.8 test/hexapdf/test_rectangle.rb
hexapdf-0.11.7 test/hexapdf/test_rectangle.rb
hexapdf-0.11.6 test/hexapdf/test_rectangle.rb
hexapdf-0.11.5 test/hexapdf/test_rectangle.rb
hexapdf-0.11.4 test/hexapdf/test_rectangle.rb
hexapdf-0.11.3 test/hexapdf/test_rectangle.rb
hexapdf-0.11.2 test/hexapdf/test_rectangle.rb
hexapdf-0.11.1 test/hexapdf/test_rectangle.rb
hexapdf-0.11.0 test/hexapdf/test_rectangle.rb