Sha256: ba5433ef95fb26d90a8369409e9b47eb428524fe4fcba301c8cae7014198d80b

Contents?: true

Size: 1.49 KB

Versions: 83

Compression:

Stored size: 1.49 KB

Contents

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

require 'test_helper'
require 'hexapdf/document'
require 'hexapdf/task/dereference'

describe HexaPDF::Task::Dereference do
  before do
    @doc = HexaPDF::Document.new(io: StringIO.new(MINIMAL_PDF))
  end

  it "dereferences all references to objects" do
    obj = @doc.add(:test)
    len = @doc.add(5)
    str = @doc.add(@doc.wrap({Length: len}, stream: ''))
    @doc.trailer[:Test] = str
    pages = @doc.wrap({Type: :Pages})
    pages.add_page(@doc.wrap({Type: :Page}))
    @doc.trailer[:Test2] = pages
    @doc.trailer[:InvalidRef] = HexaPDF::Reference.new(5000, 2)

    checker = lambda do |val, done = {}|
      case val
      when Array then val.all? {|v| checker.call(v, done) }
      when Hash then val.all? {|_, v| checker.call(v, done) }
      when HexaPDF::Reference
        false
      when HexaPDF::Object
        if done.key?(val)
          true
        else
          done[val] = true
          checker.call(val.value, done)
        end
      else
        true
      end
    end
    refute(checker.call(@doc.trailer))
    assert_equal([obj, len], @doc.task(:dereference))
    assert(checker.call(@doc.trailer))
    assert_equal([obj, len], @doc.task(:dereference))
    assert(checker.call(@doc.trailer))
  end

  it "dereferences only a single object" do
    assert(@doc.object(5).value[:Font][:F1].kind_of?(HexaPDF::Reference))
    assert_nil(@doc.task(:dereference, object: @doc.object(5)))
    refute(@doc.object(5).value[:Font][:F1].kind_of?(HexaPDF::Reference))
  end
end

Version data entries

83 entries across 83 versions & 1 rubygems

Version Path
hexapdf-0.33.0 test/hexapdf/task/test_dereference.rb
hexapdf-0.32.2 test/hexapdf/task/test_dereference.rb
hexapdf-0.32.1 test/hexapdf/task/test_dereference.rb
hexapdf-0.32.0 test/hexapdf/task/test_dereference.rb
hexapdf-0.31.0 test/hexapdf/task/test_dereference.rb
hexapdf-0.30.0 test/hexapdf/task/test_dereference.rb
hexapdf-0.29.0 test/hexapdf/task/test_dereference.rb
hexapdf-0.28.0 test/hexapdf/task/test_dereference.rb
hexapdf-0.27.0 test/hexapdf/task/test_dereference.rb
hexapdf-0.26.2 test/hexapdf/task/test_dereference.rb
hexapdf-0.26.1 test/hexapdf/task/test_dereference.rb
hexapdf-0.26.0 test/hexapdf/task/test_dereference.rb
hexapdf-0.25.0 test/hexapdf/task/test_dereference.rb
hexapdf-0.24.2 test/hexapdf/task/test_dereference.rb
hexapdf-0.24.1 test/hexapdf/task/test_dereference.rb
hexapdf-0.24.0 test/hexapdf/task/test_dereference.rb
hexapdf-0.23.0 test/hexapdf/task/test_dereference.rb
hexapdf-0.22.0 test/hexapdf/task/test_dereference.rb
hexapdf-0.21.1 test/hexapdf/task/test_dereference.rb
hexapdf-0.21.0 test/hexapdf/task/test_dereference.rb