Sha256: 75368494743170f4218e42cde18d18301750e2bc96f0f42587d667f29d9dffcf

Contents?: true

Size: 1.53 KB

Versions: 7

Compression:

Stored size: 1.53 KB

Contents

# frozen_string_literal: true
require 'introspection_test_helper'

require 'gir_ffi'

# Global sequence provider. Needed to make unique class names.
class Sequence
  def self.next
    @seq ||= 0
    @seq += + 1
  end
end

module GirFFITestExtensions
  SAVED_MODULES = {}

  def save_module(name)
    return unless Object.const_defined? name
    puts "Saving #{name} over existing" if SAVED_MODULES.key? name
    SAVED_MODULES[name] = Object.const_get name
    Object.send(:remove_const, name)
  end

  def restore_module(name)
    if Object.const_defined? name
      Object.send(:remove_const, name)
    end
    return unless SAVED_MODULES.key? name
    Object.const_set name, SAVED_MODULES[name]
    SAVED_MODULES.delete name
  end

  def ref_count(ptr)
    GObject::Object::Struct.new(ptr)[:ref_count]
  end

  def max_for_unsigned_type(type)
    (1 << (FFI.type_size(type) * 8)) - 1
  end

  def max_for_type(type)
    (1 << (FFI.type_size(type) * 8 - 1)) - 1
  end

  def min_for_type(type)
    ~max_for_type(type)
  end

  def max_long
    max_for_type :long
  end

  def min_long
    min_for_type :long
  end

  def max_size_t
    max_for_unsigned_type :size_t
  end

  def max_ssize_t
    # FFI has no :ssize_t, but it's the same number of bits as :size_t
    max_for_type :size_t
  end

  def min_ssize_t
    min_for_type :size_t
  end

  def max_ushort
    max_for_unsigned_type :ushort
  end

  def max_uint
    max_for_unsigned_type :uint
  end

  def max_ulong
    max_for_unsigned_type :ulong
  end
end

Minitest::Test.send :include, GirFFITestExtensions

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
gir_ffi-0.11.1 test/gir_ffi_test_helper.rb
gir_ffi-0.11.0 test/gir_ffi_test_helper.rb
gir_ffi-0.10.2 test/gir_ffi_test_helper.rb
gir_ffi-0.10.1 test/gir_ffi_test_helper.rb
gir_ffi-0.10.0 test/gir_ffi_test_helper.rb
gir_ffi-0.10.0.pre1 test/gir_ffi_test_helper.rb
gir_ffi-0.9.5 test/gir_ffi_test_helper.rb