test/test_helper.rb in gir_ffi-0.0.8 vs test/test_helper.rb in gir_ffi-0.0.9

- old
+ new

@@ -1,28 +1,34 @@ -require 'shoulda' +require 'minitest/spec' +require 'minitest/autorun' require 'rr' require 'ffi' +Thread.abort_on_exception = true + $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib')) require 'gir_ffi' if RUBY_PLATFORM == 'java' require 'java' JRuby.objectspace = true end # Since the tests will call Gtk+ functions, Gtk+ must be initialized. -GirFFI.setup :Gtk +GirFFI.setup :Gtk, '2.0' Gtk.init GirFFI::IRepository.prepend_search_path File.join(File.dirname(__FILE__), 'lib') module GirFFI class IRepository def shared_library_with_regress namespace - if namespace == "Regress" + case namespace + when "Regress" return File.join(File.dirname(__FILE__), 'lib', 'libregress.so') + when "GIMarshallingTests" + return File.join(File.dirname(__FILE__), 'lib', 'libgimarshallingtests.so') else return shared_library_without_regress namespace end end @@ -33,11 +39,11 @@ # Need a dummy module for some tests. module Lib end -class Test::Unit::TestCase +class MiniTest::Unit::TestCase include RR::Adapters::TestUnit def cws code code.gsub(/(^\s*|\s*$)/, "") end @@ -51,19 +57,96 @@ gir = GirFFI::IRepository.default gir.require namespace, nil gir.find_by_name(namespace, klass).find_method function end - def cleanup_module name + SAVED_MODULES = {} + + def save_module name if Object.const_defined? name + puts "Saving #{name} over existing" if SAVED_MODULES.has_key? name + SAVED_MODULES[name] = Object.const_get name Object.send(:remove_const, name) end end + def restore_module name + if SAVED_MODULES.has_key? name + if Object.const_defined? name + Object.send(:remove_const, name) + end + Object.const_set name, SAVED_MODULES[name] + SAVED_MODULES.delete name + end + end + def ref_count object GObject::Object::Struct.new(object.to_ptr)[:ref_count] end def is_floating? object (GObject::Object::Struct.new(object.to_ptr)[:qdata].address & 2) == 2 + end + + def assert_nothing_raised + yield + assert true + end + + def assert_not_nil it + refute_nil it + 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 + +class MiniTest::Spec + class << self + alias :setup :before + alias :teardown :after + alias :should :it + alias :context :describe end end