Sha256: 25129d1888fc351825a44cefbec7e9c38c8ca88ac281b79afdd7f045f841bada

Contents?: true

Size: 1.47 KB

Versions: 34

Compression:

Stored size: 1.47 KB

Contents

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

require 'test_helper'
require 'stringio'
require 'hexapdf/font/true_type/table'
require_relative 'common'

describe HexaPDF::Font::TrueType::Table do
  before do
    io = StringIO.new('some string')
    @file = Object.new
    @file.define_singleton_method(:io) { io }
    @entry = HexaPDF::Font::TrueType::Table::Directory::Entry.new('tagg', 0, 0, @file.io.string.length)
  end

  describe "initialize" do
    it "reads the data from the associated file" do
      table = TrueTypeTestTable.new(@file, @entry)
      assert_equal(@file.io.string, table.data)
    end
  end

  describe "checksum_valid?" do
    it "checks whether an entry's checksum is valid" do
      @file.io.string = 254.chr * 17 + 0.chr * 3
      @entry.checksum = (0xfefefefe * 4 + 0xfe000000) % 2**32
      @entry.length = @file.io.string.length
      table = TrueTypeTestTable.new(@file, @entry)
      assert(table.checksum_valid?)
    end
  end

  describe "read_fixed" do
    it "works for unsigned values" do
      @file.io.string = [1, 20480].pack('nn')
      @entry.length = @file.io.string.length
      table = TrueTypeTestTable.new(@file, @entry)
      assert_equal(1 + Rational(20480, 65536), table.send(:read_fixed))
    end

    it "works for signed values" do
      @file.io.string = [-1, 20480].pack('nn')
      @entry.length = @file.io.string.length
      table = TrueTypeTestTable.new(@file, @entry)
      assert_equal(-1 + Rational(20480, 65536), table.send(:read_fixed))
    end
  end
end

Version data entries

34 entries across 34 versions & 1 rubygems

Version Path
hexapdf-1.0.1 test/hexapdf/font/true_type/test_table.rb
hexapdf-1.0.0 test/hexapdf/font/true_type/test_table.rb
hexapdf-0.47.0 test/hexapdf/font/true_type/test_table.rb
hexapdf-0.46.0 test/hexapdf/font/true_type/test_table.rb
hexapdf-0.45.0 test/hexapdf/font/true_type/test_table.rb
hexapdf-0.44.0 test/hexapdf/font/true_type/test_table.rb
hexapdf-0.41.0 test/hexapdf/font/true_type/test_table.rb
hexapdf-0.40.0 test/hexapdf/font/true_type/test_table.rb
hexapdf-0.39.1 test/hexapdf/font/true_type/test_table.rb
hexapdf-0.39.0 test/hexapdf/font/true_type/test_table.rb
hexapdf-0.38.0 test/hexapdf/font/true_type/test_table.rb
hexapdf-0.37.2 test/hexapdf/font/true_type/test_table.rb
hexapdf-0.37.1 test/hexapdf/font/true_type/test_table.rb
hexapdf-0.37.0 test/hexapdf/font/true_type/test_table.rb
hexapdf-0.36.0 test/hexapdf/font/true_type/test_table.rb
hexapdf-0.35.1 test/hexapdf/font/true_type/test_table.rb
hexapdf-0.35.0 test/hexapdf/font/true_type/test_table.rb
hexapdf-0.34.1 test/hexapdf/font/true_type/test_table.rb
hexapdf-0.34.0 test/hexapdf/font/true_type/test_table.rb
hexapdf-0.33.0 test/hexapdf/font/true_type/test_table.rb