gir_ffi 0.7.7 → 0.7.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/Changelog.md +9 -0
- data/lib/ffi-glib/array.rb +1 -1
- data/lib/ffi-glib/error.rb +1 -2
- data/lib/ffi-glib/hash_table.rb +2 -2
- data/lib/ffi-glib/variant.rb +1 -1
- data/lib/ffi-gobject/base.rb +23 -23
- data/lib/ffi-gobject/object.rb +7 -3
- data/lib/ffi-gobject/value.rb +6 -1
- data/lib/ffi-gobject.rb +9 -6
- data/lib/ffi-gobject_introspection/i_base_info.rb +3 -3
- data/lib/ffi-gobject_introspection/i_constant_info.rb +1 -1
- data/lib/ffi-gobject_introspection/i_repository.rb +4 -1
- data/lib/ffi-gobject_introspection/i_type_info.rb +1 -1
- data/lib/ffi-gobject_introspection/i_unresolved_info.rb +7 -0
- data/lib/ffi-gobject_introspection/lib.rb +1 -1
- data/lib/gir_ffi/builders/argument_builder.rb +1 -1
- data/lib/gir_ffi/builders/c_to_ruby_convertor.rb +37 -29
- data/lib/gir_ffi/builders/callback_argument_builder.rb +57 -27
- data/lib/gir_ffi/builders/closure_convertor.rb +12 -8
- data/lib/gir_ffi/builders/closure_to_pointer_convertor.rb +12 -8
- data/lib/gir_ffi/builders/constructor_result_convertor.rb +11 -7
- data/lib/gir_ffi/builders/field_builder.rb +1 -1
- data/lib/gir_ffi/builders/function_builder.rb +1 -1
- data/lib/gir_ffi/builders/mapping_method_builder.rb +1 -1
- data/lib/gir_ffi/builders/marshalling_method_builder.rb +2 -2
- data/lib/gir_ffi/builders/method_template.rb +1 -1
- data/lib/gir_ffi/builders/null_convertor.rb +11 -7
- data/lib/gir_ffi/builders/property_builder.rb +1 -1
- data/lib/gir_ffi/builders/ruby_to_c_convertor.rb +17 -13
- data/lib/gir_ffi/error_argument_info.rb +1 -1
- data/lib/gir_ffi/ffi_ext/pointer.rb +1 -1
- data/lib/gir_ffi/info_ext/i_unresolved_info.rb +12 -0
- data/lib/gir_ffi/info_ext/safe_constant_name.rb +2 -2
- data/lib/gir_ffi/info_ext/safe_function_name.rb +1 -1
- data/lib/gir_ffi/info_ext.rb +1 -0
- data/lib/gir_ffi/module_base.rb +1 -1
- data/lib/gir_ffi/receiver_argument_info.rb +15 -12
- data/lib/gir_ffi/user_data_argument_info.rb +17 -15
- data/lib/gir_ffi/user_data_type_info.rb +14 -12
- data/lib/gir_ffi/version.rb +1 -1
- data/lib/gir_ffi-base/gobject/lib.rb +1 -1
- data/test/base_test_helper.rb +15 -15
- data/test/ffi-glib/array_test.rb +38 -38
- data/test/ffi-glib/byte_array_test.rb +6 -7
- data/test/ffi-glib/bytes_test.rb +9 -9
- data/test/ffi-glib/hash_table_test.rb +26 -23
- data/test/ffi-glib/iconv_test.rb +5 -5
- data/test/ffi-glib/list_test.rb +16 -16
- data/test/ffi-glib/main_loop_test.rb +6 -6
- data/test/ffi-glib/ptr_array_test.rb +45 -45
- data/test/ffi-glib/ruby_closure_test.rb +6 -6
- data/test/ffi-glib/s_list_test.rb +15 -15
- data/test/ffi-glib/strv_test.rb +21 -21
- data/test/ffi-glib/variant_test.rb +4 -4
- data/test/ffi-gobject/gobject_test.rb +35 -35
- data/test/ffi-gobject/object_class_test.rb +1 -1
- data/test/ffi-gobject/object_test.rb +29 -6
- data/test/ffi-gobject/value_test.rb +66 -52
- data/test/ffi-gobject_introspection/i_base_info_test.rb +10 -11
- data/test/ffi-gobject_introspection/i_constant_info_test.rb +6 -6
- data/test/ffi-gobject_introspection/i_enum_info_test.rb +4 -5
- data/test/ffi-gobject_introspection/i_function_info_test.rb +0 -2
- data/test/ffi-gobject_introspection/i_object_info_test.rb +5 -5
- data/test/ffi-gobject_introspection/i_registered_type_info_test.rb +9 -8
- data/test/ffi-gobject_introspection/i_repository_test.rb +16 -16
- data/test/ffi-gobject_introspection/i_type_info_test.rb +16 -2
- data/test/ffi-gobject_introspection/lib_test.rb +2 -2
- data/test/ffi-gobject_test.rb +50 -40
- data/test/gir_ffi/arg_helper_test.rb +5 -5
- data/test/gir_ffi/builder_test.rb +41 -41
- data/test/gir_ffi/builders/argument_builder_test.rb +240 -207
- data/test/gir_ffi/builders/base_argument_builder_test.rb +0 -1
- data/test/gir_ffi/builders/callback_argument_builder_test.rb +81 -15
- data/test/gir_ffi/builders/callback_builder_test.rb +39 -14
- data/test/gir_ffi/builders/callback_return_value_builder_test.rb +41 -33
- data/test/gir_ffi/builders/enum_builder_test.rb +3 -3
- data/test/gir_ffi/builders/field_builder_test.rb +17 -17
- data/test/gir_ffi/builders/function_builder_test.rb +16 -16
- data/test/gir_ffi/builders/interface_builder_test.rb +9 -7
- data/test/gir_ffi/builders/module_builder_test.rb +5 -6
- data/test/gir_ffi/builders/object_builder_test.rb +24 -19
- data/test/gir_ffi/builders/property_builder_test.rb +25 -23
- data/test/gir_ffi/builders/registered_type_builder_test.rb +11 -11
- data/test/gir_ffi/builders/return_value_builder_test.rb +237 -197
- data/test/gir_ffi/builders/signal_closure_builder_test.rb +29 -22
- data/test/gir_ffi/builders/struct_builder_test.rb +10 -10
- data/test/gir_ffi/builders/unintrospectable_builder_test.rb +8 -8
- data/test/gir_ffi/builders/union_builder_test.rb +5 -6
- data/test/gir_ffi/builders/user_defined_builder_test.rb +42 -33
- data/test/gir_ffi/builders/vfunc_builder_test.rb +37 -30
- data/test/gir_ffi/callback_base_test.rb +4 -5
- data/test/gir_ffi/class_base_test.rb +35 -28
- data/test/gir_ffi/error_type_info_test.rb +14 -14
- data/test/gir_ffi/ffi_ext/pointer_test.rb +4 -4
- data/test/gir_ffi/g_type_test.rb +6 -6
- data/test/gir_ffi/in_out_pointer_test.rb +27 -27
- data/test/gir_ffi/in_pointer_test.rb +54 -50
- data/test/gir_ffi/info_ext/i_callable_info_test.rb +8 -7
- data/test/gir_ffi/info_ext/i_callback_info_test.rb +7 -7
- data/test/gir_ffi/info_ext/i_field_info_test.rb +10 -8
- data/test/gir_ffi/info_ext/i_function_info_test.rb +17 -15
- data/test/gir_ffi/info_ext/i_signal_info_test.rb +10 -8
- data/test/gir_ffi/info_ext/i_type_info_test.rb +158 -155
- data/test/gir_ffi/info_ext/i_unresolved_info_test.rb +17 -0
- data/test/gir_ffi/info_ext/safe_constant_name_test.rb +12 -10
- data/test/gir_ffi/info_ext/safe_function_name_test.rb +12 -10
- data/test/gir_ffi/interface_base_test.rb +6 -6
- data/test/gir_ffi/method_stubber_test.rb +16 -13
- data/test/gir_ffi/object_base_test.rb +6 -6
- data/test/gir_ffi/sized_array_test.rb +23 -23
- data/test/gir_ffi/type_map_test.rb +3 -3
- data/test/gir_ffi/unintrospectable_type_info_test.rb +18 -18
- data/test/gir_ffi/user_defined_property_info_test.rb +4 -4
- data/test/gir_ffi/user_defined_type_info_test.rb +16 -16
- data/test/gir_ffi/variable_name_generator_test.rb +6 -6
- data/test/gir_ffi/version_test.rb +1 -1
- data/test/gir_ffi/zero_terminated_test.rb +16 -17
- data/test/gir_ffi-base/glib/boolean_test.rb +13 -13
- data/test/gir_ffi-base/glib/strv_test.rb +11 -11
- data/test/gir_ffi_test.rb +18 -18
- data/test/gir_ffi_test_helper.rb +13 -18
- data/test/integration/derived_classes_test.rb +8 -8
- data/test/integration/generated_gimarshallingtests_test.rb +794 -792
- data/test/integration/generated_gio_test.rb +25 -26
- data/test/integration/generated_glib_test.rb +8 -2
- data/test/integration/generated_gobject_test.rb +16 -9
- data/test/integration/generated_pango_ft2_test.rb +1 -2
- data/test/integration/generated_pango_test.rb +2 -2
- data/test/integration/generated_regress_test.rb +785 -705
- data/test/integration/generated_secret_test.rb +5 -5
- data/test/integration/method_lookup_test.rb +5 -5
- data/test/introspection_test_helper.rb +3 -1
- data/test/minitest/stats_plugin.rb +3 -3
- metadata +6 -3
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'gir_ffi_test_helper'
|
2
|
+
|
3
|
+
describe GirFFI::InfoExt::IUnresolvedInfo do
|
4
|
+
let(:klass) {
|
5
|
+
Class.new do
|
6
|
+
include GirFFI::InfoExt::IUnresolvedInfo
|
7
|
+
end
|
8
|
+
}
|
9
|
+
|
10
|
+
let(:unresolved_info) { klass.new }
|
11
|
+
|
12
|
+
describe '#to_ffitype' do
|
13
|
+
it 'returns the most generic type' do
|
14
|
+
unresolved_info.to_ffitype.must_equal :pointer
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -1,22 +1,24 @@
|
|
1
1
|
require 'gir_ffi_test_helper'
|
2
2
|
|
3
3
|
describe GirFFI::InfoExt::SafeConstantName do
|
4
|
-
let(:klass) {
|
5
|
-
|
6
|
-
|
4
|
+
let(:klass) {
|
5
|
+
Class.new do
|
6
|
+
include GirFFI::InfoExt::SafeConstantName
|
7
|
+
end
|
8
|
+
}
|
7
9
|
let(:info) { klass.new }
|
8
10
|
|
9
|
-
describe
|
10
|
-
it
|
11
|
-
mock(info).name {
|
11
|
+
describe '#safe_name' do
|
12
|
+
it 'makes names starting with an underscore safe' do
|
13
|
+
mock(info).name { '_foo' }
|
12
14
|
|
13
|
-
assert_equal
|
15
|
+
assert_equal 'Private___foo', info.safe_name
|
14
16
|
end
|
15
17
|
|
16
|
-
it
|
17
|
-
mock(info).name {
|
18
|
+
it 'makes names with dashes safe' do
|
19
|
+
mock(info).name { 'this-could-be-a-signal-name' }
|
18
20
|
|
19
|
-
info.safe_name.must_equal
|
21
|
+
info.safe_name.must_equal 'This_could_be_a_signal_name'
|
20
22
|
end
|
21
23
|
end
|
22
24
|
end
|
@@ -1,22 +1,24 @@
|
|
1
1
|
require 'gir_ffi_test_helper'
|
2
2
|
|
3
3
|
describe GirFFI::InfoExt::SafeFunctionName do
|
4
|
-
let(:klass) {
|
5
|
-
|
6
|
-
|
4
|
+
let(:klass) {
|
5
|
+
Class.new do
|
6
|
+
include GirFFI::InfoExt::SafeFunctionName
|
7
|
+
end
|
8
|
+
}
|
7
9
|
let(:info) { klass.new }
|
8
10
|
|
9
|
-
describe
|
10
|
-
it
|
11
|
-
mock(info).name {
|
11
|
+
describe '#safe_name' do
|
12
|
+
it 'keeps lower case names lower case' do
|
13
|
+
mock(info).name { 'foo' }
|
12
14
|
|
13
|
-
assert_equal
|
15
|
+
assert_equal 'foo', info.safe_name
|
14
16
|
end
|
15
17
|
|
16
|
-
it
|
17
|
-
mock(info).name {
|
18
|
+
it 'returns a non-empty string if name is empty' do
|
19
|
+
mock(info).name { '' }
|
18
20
|
|
19
|
-
assert_equal
|
21
|
+
assert_equal '_', info.safe_name
|
20
22
|
end
|
21
23
|
end
|
22
24
|
end
|
@@ -3,15 +3,15 @@ require 'gir_ffi_test_helper'
|
|
3
3
|
describe GirFFI::InterfaceBase do
|
4
4
|
let(:interface) { Module.new { extend GirFFI::InterfaceBase } }
|
5
5
|
|
6
|
-
describe
|
7
|
-
it
|
8
|
-
mock(ptr = Object.new).to_object {
|
9
|
-
interface.wrap(ptr).must_equal
|
6
|
+
describe '#wrap' do
|
7
|
+
it 'delegates conversion to the wrapped pointer' do
|
8
|
+
mock(ptr = Object.new).to_object { 'good-result' }
|
9
|
+
interface.wrap(ptr).must_equal 'good-result'
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
|
-
describe
|
14
|
-
it
|
13
|
+
describe '.to_ffitype' do
|
14
|
+
it 'returns :pointer' do
|
15
15
|
interface.to_ffitype.must_equal :pointer
|
16
16
|
end
|
17
17
|
end
|
@@ -1,15 +1,16 @@
|
|
1
1
|
require 'gir_ffi_test_helper'
|
2
2
|
|
3
3
|
describe GirFFI::MethodStubber do
|
4
|
-
describe
|
4
|
+
describe '#method_stub' do
|
5
5
|
let(:stubber) { GirFFI::MethodStubber.new(method_info) }
|
6
6
|
let(:result) { stubber.method_stub }
|
7
7
|
|
8
|
-
describe
|
8
|
+
describe 'for a regular method' do
|
9
9
|
let(:method_info) {
|
10
|
-
get_method_introspection_data(
|
10
|
+
get_method_introspection_data('Regress', 'TestObj', 'instance_method')
|
11
|
+
}
|
11
12
|
|
12
|
-
it
|
13
|
+
it 'creates a method stub' do
|
13
14
|
result.must_equal <<-STUB.reset_indentation
|
14
15
|
def instance_method *args, &block
|
15
16
|
setup_and_call "instance_method", args, &block
|
@@ -18,11 +19,12 @@ describe GirFFI::MethodStubber do
|
|
18
19
|
end
|
19
20
|
end
|
20
21
|
|
21
|
-
describe
|
22
|
+
describe 'for a static method' do
|
22
23
|
let(:method_info) {
|
23
|
-
get_method_introspection_data(
|
24
|
+
get_method_introspection_data('Regress', 'TestObj', 'static_method')
|
25
|
+
}
|
24
26
|
|
25
|
-
it
|
27
|
+
it 'creates a class method stub' do
|
26
28
|
result.must_equal <<-STUB.reset_indentation
|
27
29
|
def self.static_method *args, &block
|
28
30
|
setup_and_call "static_method", args, &block
|
@@ -31,11 +33,12 @@ describe GirFFI::MethodStubber do
|
|
31
33
|
end
|
32
34
|
end
|
33
35
|
|
34
|
-
describe
|
36
|
+
describe 'for a module function' do
|
35
37
|
let(:method_info) {
|
36
|
-
get_introspection_data(
|
38
|
+
get_introspection_data('Regress', 'test_int')
|
39
|
+
}
|
37
40
|
|
38
|
-
it
|
41
|
+
it 'creates a module method stub' do
|
39
42
|
result.must_equal <<-STUB.reset_indentation
|
40
43
|
def self.test_int *args, &block
|
41
44
|
setup_and_call "test_int", args, &block
|
@@ -44,10 +47,10 @@ describe GirFFI::MethodStubber do
|
|
44
47
|
end
|
45
48
|
end
|
46
49
|
|
47
|
-
describe
|
48
|
-
let(:method_info) { get_method_introspection_data(
|
50
|
+
describe 'for a method with an empty name' do
|
51
|
+
let(:method_info) { get_method_introspection_data('GLib', 'IConv', '') }
|
49
52
|
|
50
|
-
it
|
53
|
+
it 'creates a method stub with a safe name that sets up the unsafe method' do
|
51
54
|
result.must_equal <<-STUB.reset_indentation
|
52
55
|
def _ *args, &block
|
53
56
|
setup_and_call "", args, &block
|
@@ -3,15 +3,15 @@ require 'gir_ffi_test_helper'
|
|
3
3
|
describe GirFFI::ObjectBase do
|
4
4
|
let(:derived_class) { Class.new GirFFI::ObjectBase }
|
5
5
|
|
6
|
-
describe
|
7
|
-
it
|
8
|
-
mock(ptr = Object.new).to_object {
|
9
|
-
derived_class.wrap(ptr).must_equal
|
6
|
+
describe '.wrap' do
|
7
|
+
it 'delegates conversion to the wrapped pointer' do
|
8
|
+
mock(ptr = Object.new).to_object { 'good-result' }
|
9
|
+
derived_class.wrap(ptr).must_equal 'good-result'
|
10
10
|
end
|
11
11
|
end
|
12
12
|
|
13
|
-
describe
|
14
|
-
it
|
13
|
+
describe '.to_ffitype' do
|
14
|
+
it 'returns :pointer' do
|
15
15
|
derived_class.to_ffitype.must_equal :pointer
|
16
16
|
end
|
17
17
|
end
|
@@ -1,8 +1,8 @@
|
|
1
1
|
require 'gir_ffi_test_helper'
|
2
2
|
|
3
3
|
describe GirFFI::SizedArray do
|
4
|
-
describe
|
5
|
-
it
|
4
|
+
describe '::wrap' do
|
5
|
+
it 'takes a type, size and pointer and returns a GirFFI::SizedArray wrapping them' do
|
6
6
|
mock(ptr = Object.new).null? { false }
|
7
7
|
sarr = GirFFI::SizedArray.wrap :gint32, 3, ptr
|
8
8
|
assert_instance_of GirFFI::SizedArray, sarr
|
@@ -11,17 +11,17 @@ describe GirFFI::SizedArray do
|
|
11
11
|
assert_equal :gint32, sarr.element_type
|
12
12
|
end
|
13
13
|
|
14
|
-
it
|
14
|
+
it 'returns nil if the wrapped pointer is null' do
|
15
15
|
mock(ptr = Object.new).null? { true }
|
16
16
|
sarr = GirFFI::SizedArray.wrap :gint32, 3, ptr
|
17
17
|
sarr.must_be_nil
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
|
-
describe
|
22
|
-
it
|
23
|
-
ary =
|
24
|
-
ptrs = ary.map {|a| FFI::MemoryPointer.from_string(a)}
|
21
|
+
describe '#each' do
|
22
|
+
it 'yields each element' do
|
23
|
+
ary = %w(one two three)
|
24
|
+
ptrs = ary.map { |a| FFI::MemoryPointer.from_string(a) }
|
25
25
|
ptrs << nil
|
26
26
|
block = FFI::MemoryPointer.new(:pointer, ptrs.length)
|
27
27
|
block.write_array_of_pointer ptrs
|
@@ -31,19 +31,19 @@ describe GirFFI::SizedArray do
|
|
31
31
|
sarr.each do |str|
|
32
32
|
arr << str
|
33
33
|
end
|
34
|
-
assert_equal
|
34
|
+
assert_equal %w(one two three), arr
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
|
-
describe
|
39
|
-
describe
|
40
|
-
it
|
38
|
+
describe '::from' do
|
39
|
+
describe 'from a Ruby array' do
|
40
|
+
it 'creates a GirFFI::SizedArray with the same elements' do
|
41
41
|
arr = GirFFI::SizedArray.from :gint32, 3, [3, 2, 1]
|
42
42
|
arr.must_be_instance_of GirFFI::SizedArray
|
43
43
|
assert_equal [3, 2, 1], arr.to_a
|
44
44
|
end
|
45
45
|
|
46
|
-
it
|
46
|
+
it 'raises an error if the array has the wrong number of elements' do
|
47
47
|
proc { GirFFI::SizedArray.from :gint32, 4, [3, 2, 1] }.must_raise ArgumentError
|
48
48
|
end
|
49
49
|
|
@@ -53,25 +53,25 @@ describe GirFFI::SizedArray do
|
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
|
-
describe
|
57
|
-
it
|
56
|
+
describe 'from a GirFFI::SizedArray' do
|
57
|
+
it 'return its argument' do
|
58
58
|
arr = GirFFI::SizedArray.from :gint32, 3, [3, 2, 1]
|
59
59
|
arr2 = GirFFI::SizedArray.from :gint32, 3, arr
|
60
60
|
assert_equal arr, arr2
|
61
61
|
end
|
62
62
|
|
63
|
-
it
|
63
|
+
it 'raises an error if the argument has the wrong number of elements' do
|
64
64
|
arr = GirFFI::SizedArray.from :gint32, 3, [3, 2, 1]
|
65
65
|
proc { GirFFI::SizedArray.from :gint32, 4, arr }.must_raise ArgumentError
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
69
|
-
it
|
69
|
+
it 'returns nil when passed nil' do
|
70
70
|
arr = GirFFI::SizedArray.from :gint32, 0, nil
|
71
71
|
arr.must_be_nil
|
72
72
|
end
|
73
73
|
|
74
|
-
it
|
74
|
+
it 'wraps its argument if given a pointer' do
|
75
75
|
arr = GirFFI::SizedArray.from :gint32, 3, [3, 2, 1]
|
76
76
|
arr2 = GirFFI::SizedArray.from :gint32, 3, arr.to_ptr
|
77
77
|
assert_instance_of GirFFI::SizedArray, arr2
|
@@ -80,27 +80,27 @@ describe GirFFI::SizedArray do
|
|
80
80
|
end
|
81
81
|
end
|
82
82
|
|
83
|
-
describe
|
84
|
-
it
|
83
|
+
describe '#==' do
|
84
|
+
it 'returns true when comparing to an array with the same elements' do
|
85
85
|
sized = GirFFI::SizedArray.from :int32, 3, [1, 2, 3]
|
86
86
|
|
87
87
|
sized.must_be :==, [1, 2, 3]
|
88
88
|
end
|
89
89
|
|
90
|
-
it
|
90
|
+
it 'returns false when comparing to an array with different elements' do
|
91
91
|
sized = GirFFI::SizedArray.from :int32, 3, [1, 2, 3]
|
92
92
|
|
93
93
|
sized.wont_be :==, [1, 2]
|
94
94
|
end
|
95
95
|
|
96
|
-
it
|
96
|
+
it 'returns true when comparing to a sized array with the same elements' do
|
97
97
|
sized = GirFFI::SizedArray.from :int32, 3, [1, 2, 3]
|
98
98
|
other = GirFFI::SizedArray.from :int32, 3, [1, 2, 3]
|
99
99
|
|
100
100
|
sized.must_be :==, other
|
101
101
|
end
|
102
102
|
|
103
|
-
it
|
103
|
+
it 'returns false when comparing to a sized array with different elements' do
|
104
104
|
sized = GirFFI::SizedArray.from :int32, 3, [1, 2, 3]
|
105
105
|
other = GirFFI::SizedArray.from :int32, 2, [1, 2]
|
106
106
|
|
@@ -108,7 +108,7 @@ describe GirFFI::SizedArray do
|
|
108
108
|
end
|
109
109
|
end
|
110
110
|
|
111
|
-
it
|
111
|
+
it 'includes Enumerable' do
|
112
112
|
GirFFI::SizedArray.must_include Enumerable
|
113
113
|
end
|
114
114
|
end
|
@@ -1,13 +1,13 @@
|
|
1
1
|
require 'gir_ffi_test_helper'
|
2
2
|
|
3
3
|
describe GirFFI::TypeMap do
|
4
|
-
describe
|
5
|
-
it
|
4
|
+
describe '.type_specification_to_ffitype' do
|
5
|
+
it 'returns the nested FFI::Enum for an Enum module' do
|
6
6
|
GirFFI::TypeMap.type_specification_to_ffitype(GLib::DateMonth).
|
7
7
|
must_equal GLib::DateMonth
|
8
8
|
end
|
9
9
|
|
10
|
-
it
|
10
|
+
it 'returns the class itself for a Struct class' do
|
11
11
|
GirFFI::TypeMap.type_specification_to_ffitype(GObject::EnumValue).
|
12
12
|
must_equal GObject::EnumValue
|
13
13
|
end
|
@@ -2,15 +2,15 @@ require 'gir_ffi_test_helper'
|
|
2
2
|
require 'gir_ffi/unintrospectable_type_info'
|
3
3
|
|
4
4
|
describe GirFFI::UnintrospectableTypeInfo do
|
5
|
-
describe
|
6
|
-
it
|
5
|
+
describe '#info_type' do
|
6
|
+
it 'returns :unintrospectable' do
|
7
7
|
info = GirFFI::UnintrospectableTypeInfo.new :some_type
|
8
8
|
info.info_type.must_equal :unintrospectable
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
|
-
describe
|
13
|
-
describe
|
12
|
+
describe '#parent' do
|
13
|
+
describe 'when the GIR knows about the parent gtype' do
|
14
14
|
it "finds the parent's info by gtype" do
|
15
15
|
gobject = Object.new
|
16
16
|
gir = Object.new
|
@@ -24,8 +24,8 @@ describe GirFFI::UnintrospectableTypeInfo do
|
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
27
|
-
describe
|
28
|
-
it
|
27
|
+
describe 'when the GIR does not know about the parent gtype' do
|
28
|
+
it 'creates a new UnintrospectableTypeInfo from the parent gtype' do
|
29
29
|
gobject = Object.new
|
30
30
|
gir = Object.new
|
31
31
|
|
@@ -39,12 +39,12 @@ describe GirFFI::UnintrospectableTypeInfo do
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
-
describe
|
43
|
-
it
|
42
|
+
describe '#interfaces' do
|
43
|
+
it 'finds interface infos by gtype' do
|
44
44
|
gobject = Object.new
|
45
45
|
gir = Object.new
|
46
46
|
|
47
|
-
mock(gobject).type_interfaces(:some_type) { [:foo, :bar
|
47
|
+
mock(gobject).type_interfaces(:some_type) { [:foo, :bar] }
|
48
48
|
mock(gir).find_by_gtype(:foo) { :foo_info }
|
49
49
|
mock(gir).find_by_gtype(:bar) { :bar_info }
|
50
50
|
|
@@ -53,11 +53,11 @@ describe GirFFI::UnintrospectableTypeInfo do
|
|
53
53
|
info.interfaces.must_equal [:foo_info, :bar_info]
|
54
54
|
end
|
55
55
|
|
56
|
-
it
|
56
|
+
it 'skips interfaces that have no introspection data' do
|
57
57
|
gobject = Object.new
|
58
58
|
gir = Object.new
|
59
59
|
|
60
|
-
mock(gobject).type_interfaces(:some_type) { [:foo, :bar
|
60
|
+
mock(gobject).type_interfaces(:some_type) { [:foo, :bar] }
|
61
61
|
mock(gir).find_by_gtype(:foo) { :foo_info }
|
62
62
|
mock(gir).find_by_gtype(:bar) { nil }
|
63
63
|
|
@@ -67,21 +67,21 @@ describe GirFFI::UnintrospectableTypeInfo do
|
|
67
67
|
end
|
68
68
|
end
|
69
69
|
|
70
|
-
describe
|
71
|
-
it
|
70
|
+
describe '#g_type' do
|
71
|
+
it 'returns the passed-in gtype' do
|
72
72
|
info = GirFFI::UnintrospectableTypeInfo.new(:some_type)
|
73
73
|
info.g_type.must_equal :some_type
|
74
74
|
end
|
75
75
|
end
|
76
76
|
|
77
|
-
describe
|
78
|
-
it
|
77
|
+
describe '#fields' do
|
78
|
+
it 'returns an empty array' do
|
79
79
|
info = GirFFI::UnintrospectableTypeInfo.new(:some_type)
|
80
80
|
info.fields.must_equal []
|
81
81
|
end
|
82
82
|
end
|
83
83
|
|
84
|
-
describe
|
84
|
+
describe '#namespace' do
|
85
85
|
it "returns the parent class' namespace" do
|
86
86
|
gobject = Object.new
|
87
87
|
gir = Object.new
|
@@ -97,8 +97,8 @@ describe GirFFI::UnintrospectableTypeInfo do
|
|
97
97
|
end
|
98
98
|
end
|
99
99
|
|
100
|
-
describe
|
101
|
-
it
|
100
|
+
describe '#safe_name' do
|
101
|
+
it 'finds the class name by gtype' do
|
102
102
|
gobject = Object.new
|
103
103
|
|
104
104
|
mock(gobject).type_name(:some_type) { 'GSomeType' }
|
@@ -2,15 +2,15 @@ require 'gir_ffi_test_helper'
|
|
2
2
|
require 'gir_ffi/user_defined_property_info'
|
3
3
|
|
4
4
|
describe GirFFI::UserDefinedPropertyInfo do
|
5
|
-
describe
|
6
|
-
it
|
5
|
+
describe '#param_spec' do
|
6
|
+
it 'returns the passed in parameter specification' do
|
7
7
|
info = GirFFI::UserDefinedPropertyInfo.new :some_param_spec
|
8
8
|
info.param_spec.must_equal :some_param_spec
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
|
-
describe
|
13
|
-
it
|
12
|
+
describe '#name' do
|
13
|
+
it 'returns the name retrieved from the parameter specification' do
|
14
14
|
mock(param_spec = Object.new).get_name { :property_name }
|
15
15
|
info = GirFFI::UserDefinedPropertyInfo.new param_spec
|
16
16
|
info.name.must_equal :property_name
|
@@ -2,15 +2,15 @@ require 'gir_ffi_test_helper'
|
|
2
2
|
require 'gir_ffi/user_defined_type_info'
|
3
3
|
|
4
4
|
describe GirFFI::UserDefinedTypeInfo do
|
5
|
-
describe
|
6
|
-
it
|
5
|
+
describe '#described_class' do
|
6
|
+
it 'returns the class passed to #initialize' do
|
7
7
|
info = GirFFI::UserDefinedTypeInfo.new :some_class
|
8
8
|
info.described_class.must_equal :some_class
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
|
-
describe
|
13
|
-
it
|
12
|
+
describe '#install_property' do
|
13
|
+
it 'adds the passed in property to the list of properties' do
|
14
14
|
mock(foo_spec = Object.new).get_name { :foo }
|
15
15
|
|
16
16
|
info = GirFFI::UserDefinedTypeInfo.new :some_class
|
@@ -19,25 +19,25 @@ describe GirFFI::UserDefinedTypeInfo do
|
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
|
-
describe
|
22
|
+
describe '#install_vfunc_implementation' do
|
23
23
|
let(:info) { GirFFI::UserDefinedTypeInfo.new :some_class }
|
24
24
|
let(:implementation) { Object.new }
|
25
25
|
|
26
|
-
it
|
26
|
+
it 'adds to the list of vfunc implementations' do
|
27
27
|
info.vfunc_implementations.must_equal []
|
28
28
|
info.install_vfunc_implementation :foo, implementation
|
29
29
|
info.vfunc_implementations.map(&:name).must_equal [:foo]
|
30
30
|
end
|
31
31
|
|
32
|
-
it
|
32
|
+
it 'stores the passed-in implementation in the implementation object' do
|
33
33
|
info.install_vfunc_implementation :foo, implementation
|
34
34
|
impl = info.vfunc_implementations.first
|
35
35
|
impl.implementation.must_equal implementation
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
|
-
describe
|
40
|
-
it
|
39
|
+
describe '#initialize' do
|
40
|
+
it 'yields the new object to the block passed' do
|
41
41
|
mock(foo_spec = Object.new).get_name { :foo }
|
42
42
|
mock(bar_spec = Object.new).get_name { :bar }
|
43
43
|
|
@@ -49,18 +49,18 @@ describe GirFFI::UserDefinedTypeInfo do
|
|
49
49
|
end
|
50
50
|
end
|
51
51
|
|
52
|
-
describe
|
52
|
+
describe '#g_name' do
|
53
53
|
it "returns the described class' name by default" do
|
54
|
-
mock(klass = Object.new).name {
|
54
|
+
mock(klass = Object.new).name { 'foo' }
|
55
55
|
info = GirFFI::UserDefinedTypeInfo.new klass
|
56
|
-
info.g_name.must_equal
|
56
|
+
info.g_name.must_equal 'foo'
|
57
57
|
end
|
58
58
|
|
59
|
-
it
|
60
|
-
stub(klass = Object.new).name {
|
59
|
+
it 'returns the the name set by #g_name= if present' do
|
60
|
+
stub(klass = Object.new).name { 'foo' }
|
61
61
|
info = GirFFI::UserDefinedTypeInfo.new klass
|
62
|
-
info.g_name =
|
63
|
-
info.g_name.must_equal
|
62
|
+
info.g_name = 'bar'
|
63
|
+
info.g_name.must_equal 'bar'
|
64
64
|
end
|
65
65
|
end
|
66
66
|
end
|
@@ -3,14 +3,14 @@ require 'gir_ffi_test_helper'
|
|
3
3
|
require 'gir_ffi/variable_name_generator'
|
4
4
|
|
5
5
|
describe GirFFI::VariableNameGenerator do
|
6
|
-
describe
|
7
|
-
it
|
6
|
+
describe '#new_var' do
|
7
|
+
it 'generates a sequence of predictable variable names' do
|
8
8
|
gen = GirFFI::VariableNameGenerator.new
|
9
9
|
|
10
|
-
assert_equal
|
11
|
-
assert_equal
|
12
|
-
assert_equal
|
13
|
-
assert_equal
|
10
|
+
assert_equal '_v1', gen.new_var
|
11
|
+
assert_equal '_v2', gen.new_var
|
12
|
+
assert_equal '_v3', gen.new_var
|
13
|
+
assert_equal '_v4', gen.new_var
|
14
14
|
end
|
15
15
|
end
|
16
16
|
end
|