gir_ffi 0.8.6 → 0.9.0
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 +18 -0
- data/README.md +3 -4
- data/lib/ffi-glib.rb +1 -0
- data/lib/ffi-glib/container_class_methods.rb +12 -0
- data/lib/ffi-glib/destroy_notify.rb +15 -0
- data/lib/ffi-glib/main_loop.rb +23 -4
- data/lib/ffi-gobject.rb +4 -2
- data/lib/ffi-gobject/object.rb +31 -16
- data/lib/ffi-gobject/object_class.rb +4 -0
- data/lib/ffi-gobject/value.rb +3 -3
- data/lib/ffi-gobject_introspection/i_flags_info.rb +0 -1
- data/lib/gir_ffi-base/gobject/lib.rb +10 -0
- data/lib/gir_ffi/arg_helper.rb +1 -22
- data/lib/gir_ffi/boxed_base.rb +1 -0
- data/lib/gir_ffi/builder.rb +7 -1
- data/lib/gir_ffi/builders/argument_builder.rb +21 -9
- data/lib/gir_ffi/builders/argument_builder_collection.rb +28 -9
- data/lib/gir_ffi/builders/base_argument_builder.rb +36 -12
- data/lib/gir_ffi/builders/base_method_builder.rb +1 -1
- data/lib/gir_ffi/builders/callback_argument_builder.rb +4 -0
- data/lib/gir_ffi/builders/closure_to_pointer_convertor.rb +3 -2
- data/lib/gir_ffi/builders/constructor_builder.rb +1 -1
- data/lib/gir_ffi/builders/enum_builder.rb +4 -4
- data/lib/gir_ffi/builders/error_argument_builder.rb +4 -0
- data/lib/gir_ffi/builders/field_builder.rb +23 -9
- data/lib/gir_ffi/builders/flags_builder.rb +28 -0
- data/lib/gir_ffi/builders/full_c_to_ruby_convertor.rb +18 -0
- data/lib/gir_ffi/builders/module_builder.rb +1 -0
- data/lib/gir_ffi/builders/null_argument_builder.rb +9 -1
- data/lib/gir_ffi/builders/object_builder.rb +7 -4
- data/lib/gir_ffi/builders/property_builder.rb +2 -2
- data/lib/gir_ffi/builders/return_value_builder.rb +4 -4
- data/lib/gir_ffi/builders/struct_builder.rb +10 -2
- data/lib/gir_ffi/builders/type_builder.rb +12 -9
- data/lib/gir_ffi/builders/unintrospectable_boxed_builder.rb +26 -0
- data/lib/gir_ffi/builders/user_defined_builder.rb +2 -2
- data/lib/gir_ffi/builders/with_layout.rb +1 -1
- data/lib/gir_ffi/callback_base.rb +13 -5
- data/lib/gir_ffi/core.rb +1 -0
- data/lib/gir_ffi/error_argument_info.rb +4 -0
- data/lib/gir_ffi/flags_base.rb +63 -0
- data/lib/gir_ffi/in_pointer.rb +1 -3
- data/lib/gir_ffi/info_ext/i_type_info.rb +6 -0
- data/lib/gir_ffi/object_base.rb +9 -1
- data/lib/gir_ffi/object_store.rb +26 -0
- data/lib/gir_ffi/unintrospectable_boxed_info.rb +31 -0
- data/lib/gir_ffi/unintrospectable_type_info.rb +5 -0
- data/lib/gir_ffi/user_defined_type_info.rb +19 -0
- data/lib/gir_ffi/version.rb +1 -1
- data/test/ffi-glib/destroy_notify_test.rb +13 -0
- data/test/ffi-glib/main_loop_test.rb +3 -3
- data/test/ffi-gobject/object_class_test.rb +8 -0
- data/test/ffi-gobject/object_test.rb +23 -5
- data/test/ffi-gobject/value_test.rb +19 -5
- data/test/ffi-gobject_test.rb +2 -2
- data/test/gir_ffi/builders/argument_builder_test.rb +12 -2
- data/test/gir_ffi/builders/constructor_builder_test.rb +4 -4
- data/test/gir_ffi/builders/function_builder_test.rb +46 -3
- data/test/gir_ffi/builders/object_builder_test.rb +25 -0
- data/test/gir_ffi/builders/property_builder_test.rb +4 -4
- data/test/gir_ffi/builders/struct_builder_test.rb +15 -13
- data/test/gir_ffi/builders/unintrospectable_boxed_builder_test.rb +33 -0
- data/test/gir_ffi/builders/unintrospectable_builder_test.rb +6 -0
- data/test/gir_ffi/builders/user_defined_builder_test.rb +7 -1
- data/test/gir_ffi/callback_base_test.rb +12 -2
- data/test/gir_ffi/object_base_test.rb +14 -0
- data/test/integration/callback_exceptions_test.rb +61 -0
- data/test/integration/generated_gimarshallingtests_test.rb +70 -70
- data/test/integration/generated_gio_test.rb +1 -1
- data/test/integration/generated_gobject_test.rb +1 -1
- data/test/integration/generated_gtop_test.rb +5 -1
- data/test/integration/generated_regress_test.rb +83 -102
- data/test/integration/generated_warnlib_test.rb +2 -2
- metadata +42 -4
@@ -101,7 +101,7 @@ describe 'The generated Gio module' do
|
|
101
101
|
let(:simple_action) { Gio::SimpleAction.new('test', 'd') }
|
102
102
|
|
103
103
|
it 'can read the property "state-type" with #get_property' do
|
104
|
-
simple_action.get_property('state-type').
|
104
|
+
simple_action.get_property('state-type').must_be_nil
|
105
105
|
end
|
106
106
|
|
107
107
|
it 'can read the property "state-type" with #state_type' do
|
@@ -89,7 +89,7 @@ describe GObject do
|
|
89
89
|
let(:binding) { source.bind_property 'double', target, 'double', :default }
|
90
90
|
|
91
91
|
it 'can read the property "target-property" with #get_property' do
|
92
|
-
binding.get_property('target-property').
|
92
|
+
binding.get_property('target-property').must_equal 'double'
|
93
93
|
end
|
94
94
|
|
95
95
|
it 'can read the property "target-property" with #target_property' do
|
@@ -4,7 +4,11 @@ require 'gir_ffi_test_helper'
|
|
4
4
|
# contains types with bad names, like 'glibtop_cpu'.
|
5
5
|
describe 'The generated GTop module' do
|
6
6
|
before do
|
7
|
-
|
7
|
+
begin
|
8
|
+
GirFFI.setup :GTop
|
9
|
+
rescue
|
10
|
+
skip 'No GIR data for GTop available'
|
11
|
+
end
|
8
12
|
end
|
9
13
|
|
10
14
|
describe 'Glibtop' do
|
@@ -5,9 +5,6 @@ GirFFI.setup :Regress
|
|
5
5
|
|
6
6
|
if IntrospectionTestExtensions.get_introspection_data 'Regress', 'TestInheritDrawable'
|
7
7
|
class ConcreteDrawable < Regress::TestInheritDrawable
|
8
|
-
def initialize
|
9
|
-
super(self.class.gtype, [])
|
10
|
-
end
|
11
8
|
end
|
12
9
|
|
13
10
|
GirFFI.define_type ConcreteDrawable
|
@@ -1149,7 +1146,7 @@ describe Regress do
|
|
1149
1146
|
|
1150
1147
|
it 'creates an instance using #new_callback' do
|
1151
1148
|
a = 1
|
1152
|
-
o = Regress::TestObj.new_callback
|
1149
|
+
o = Regress::TestObj.new_callback { a = 2 }
|
1153
1150
|
assert_instance_of Regress::TestObj, o
|
1154
1151
|
a.must_equal 2
|
1155
1152
|
|
@@ -1177,7 +1174,7 @@ describe Regress do
|
|
1177
1174
|
|
1178
1175
|
it 'has a working function #static_method_callback' do
|
1179
1176
|
a = 1
|
1180
|
-
Regress::TestObj.static_method_callback
|
1177
|
+
Regress::TestObj.static_method_callback { a = 2 }
|
1181
1178
|
assert_equal 2, a
|
1182
1179
|
end
|
1183
1180
|
|
@@ -1257,7 +1254,7 @@ describe Regress do
|
|
1257
1254
|
|
1258
1255
|
it 'has a working method #instance_method_callback' do
|
1259
1256
|
a = 1
|
1260
|
-
instance.instance_method_callback
|
1257
|
+
instance.instance_method_callback { a = 2 }
|
1261
1258
|
assert_equal 2, a
|
1262
1259
|
end
|
1263
1260
|
|
@@ -1344,7 +1341,7 @@ describe Regress do
|
|
1344
1341
|
|
1345
1342
|
describe "its 'bare' property" do
|
1346
1343
|
it 'can be retrieved with #get_property' do
|
1347
|
-
instance.get_property('bare').
|
1344
|
+
instance.get_property('bare').must_be_nil
|
1348
1345
|
end
|
1349
1346
|
|
1350
1347
|
it 'can be retrieved with #bare' do
|
@@ -1354,7 +1351,7 @@ describe Regress do
|
|
1354
1351
|
it 'can be set with #set_property' do
|
1355
1352
|
obj = Regress::TestObj.new_from_file('bar')
|
1356
1353
|
instance.set_property 'bare', obj
|
1357
|
-
instance.get_property('bare').
|
1354
|
+
instance.get_property('bare').must_equal obj
|
1358
1355
|
end
|
1359
1356
|
|
1360
1357
|
it 'can be set with #bare=' do
|
@@ -1362,13 +1359,13 @@ describe Regress do
|
|
1362
1359
|
instance.bare = obj
|
1363
1360
|
|
1364
1361
|
instance.bare.must_equal obj
|
1365
|
-
instance.get_property('bare').
|
1362
|
+
instance.get_property('bare').must_equal obj
|
1366
1363
|
end
|
1367
1364
|
end
|
1368
1365
|
|
1369
1366
|
describe "its 'boxed' property" do
|
1370
1367
|
it 'can be retrieved with #get_property' do
|
1371
|
-
instance.get_property('boxed').
|
1368
|
+
instance.get_property('boxed').must_be_nil
|
1372
1369
|
end
|
1373
1370
|
|
1374
1371
|
it 'can be retrieved with #boxed' do
|
@@ -1378,20 +1375,20 @@ describe Regress do
|
|
1378
1375
|
it 'can be set with #set_property' do
|
1379
1376
|
tb = Regress::TestBoxed.new_alternative_constructor1 75
|
1380
1377
|
instance.set_property 'boxed', tb
|
1381
|
-
instance.get_property('boxed').
|
1378
|
+
instance.get_property('boxed').some_int8.must_equal 75
|
1382
1379
|
end
|
1383
1380
|
|
1384
1381
|
it 'can be set with #boxed=' do
|
1385
1382
|
tb = Regress::TestBoxed.new_alternative_constructor1 75
|
1386
1383
|
instance.boxed = tb
|
1387
1384
|
instance.boxed.some_int8.must_equal tb.some_int8
|
1388
|
-
instance.get_property('boxed').
|
1385
|
+
instance.get_property('boxed').some_int8.must_equal tb.some_int8
|
1389
1386
|
end
|
1390
1387
|
end
|
1391
1388
|
|
1392
1389
|
describe "its 'double' property" do
|
1393
1390
|
it 'can be retrieved with #get_property' do
|
1394
|
-
instance.get_property('double').
|
1391
|
+
instance.get_property('double').must_equal 0.0
|
1395
1392
|
end
|
1396
1393
|
|
1397
1394
|
it 'can be retrieved with #double' do
|
@@ -1400,19 +1397,19 @@ describe Regress do
|
|
1400
1397
|
|
1401
1398
|
it 'can be set with #set_property' do
|
1402
1399
|
instance.set_property 'double', 3.14
|
1403
|
-
instance.get_property('double').
|
1400
|
+
instance.get_property('double').must_equal 3.14
|
1404
1401
|
end
|
1405
1402
|
|
1406
1403
|
it 'can be set with #double=' do
|
1407
1404
|
instance.double = 3.14
|
1408
1405
|
instance.double.must_equal 3.14
|
1409
|
-
instance.get_property('double').
|
1406
|
+
instance.get_property('double').must_equal 3.14
|
1410
1407
|
end
|
1411
1408
|
end
|
1412
1409
|
|
1413
1410
|
describe "its 'float' property" do
|
1414
1411
|
it 'can be retrieved with #get_property' do
|
1415
|
-
instance.get_property('float').
|
1412
|
+
instance.get_property('float').must_equal 0.0
|
1416
1413
|
end
|
1417
1414
|
|
1418
1415
|
it 'can be retrieved with #float' do
|
@@ -1421,13 +1418,13 @@ describe Regress do
|
|
1421
1418
|
|
1422
1419
|
it 'can be set with #set_property' do
|
1423
1420
|
instance.set_property 'float', 3.14
|
1424
|
-
instance.get_property('float').
|
1421
|
+
instance.get_property('float').must_be_close_to 3.14
|
1425
1422
|
end
|
1426
1423
|
|
1427
1424
|
it 'can be set with #float=' do
|
1428
1425
|
instance.float = 3.14
|
1429
1426
|
instance.float.must_be_close_to 3.14
|
1430
|
-
instance.get_property('float').
|
1427
|
+
instance.get_property('float').must_be_close_to 3.14
|
1431
1428
|
end
|
1432
1429
|
end
|
1433
1430
|
|
@@ -1437,7 +1434,7 @@ describe Regress do
|
|
1437
1434
|
end
|
1438
1435
|
|
1439
1436
|
it 'can be retrieved with #get_property' do
|
1440
|
-
instance.get_property('gtype').
|
1437
|
+
instance.get_property('gtype').must_equal 0
|
1441
1438
|
end
|
1442
1439
|
|
1443
1440
|
it 'can be retrieved with #gtype' do
|
@@ -1446,19 +1443,19 @@ describe Regress do
|
|
1446
1443
|
|
1447
1444
|
it 'can be set with #set_property' do
|
1448
1445
|
instance.set_property 'gtype', GObject::TYPE_INT64
|
1449
|
-
instance.get_property('gtype').
|
1446
|
+
instance.get_property('gtype').must_equal GObject::TYPE_INT64
|
1450
1447
|
end
|
1451
1448
|
|
1452
1449
|
it 'can be set with #gtype=' do
|
1453
1450
|
instance.gtype = GObject::TYPE_STRING
|
1454
1451
|
instance.gtype.must_equal GObject::TYPE_STRING
|
1455
|
-
instance.get_property('gtype').
|
1452
|
+
instance.get_property('gtype').must_equal GObject::TYPE_STRING
|
1456
1453
|
end
|
1457
1454
|
end
|
1458
1455
|
|
1459
1456
|
describe "its 'hash-table' property" do
|
1460
1457
|
it 'can be retrieved with #get_property' do
|
1461
|
-
instance.get_property('hash-table').
|
1458
|
+
instance.get_property('hash-table').must_be_nil
|
1462
1459
|
end
|
1463
1460
|
|
1464
1461
|
it 'can be retrieved with #hash_table' do
|
@@ -1480,7 +1477,7 @@ describe Regress do
|
|
1480
1477
|
|
1481
1478
|
describe "its 'hash-table-old' property" do
|
1482
1479
|
it 'can be retrieved with #get_property' do
|
1483
|
-
instance.get_property('hash-table-old').
|
1480
|
+
instance.get_property('hash-table-old').must_be_nil
|
1484
1481
|
end
|
1485
1482
|
|
1486
1483
|
it 'can be retrieved with #hash_table_old' do
|
@@ -1502,7 +1499,7 @@ describe Regress do
|
|
1502
1499
|
|
1503
1500
|
describe "its 'int' property" do
|
1504
1501
|
it 'can be retrieved with #get_property' do
|
1505
|
-
assert_equal 0, instance.get_property('int')
|
1502
|
+
assert_equal 0, instance.get_property('int')
|
1506
1503
|
end
|
1507
1504
|
|
1508
1505
|
it 'can be retrieved with #int' do
|
@@ -1511,12 +1508,12 @@ describe Regress do
|
|
1511
1508
|
|
1512
1509
|
it 'can be set with #set_property' do
|
1513
1510
|
instance.set_property 'int', 42
|
1514
|
-
assert_equal 42, instance.get_property('int')
|
1511
|
+
assert_equal 42, instance.get_property('int')
|
1515
1512
|
end
|
1516
1513
|
|
1517
1514
|
it 'can be set with #int=' do
|
1518
1515
|
instance.int = 41
|
1519
|
-
assert_equal 41, instance.get_property('int')
|
1516
|
+
assert_equal 41, instance.get_property('int')
|
1520
1517
|
assert_equal 41, instance.int
|
1521
1518
|
end
|
1522
1519
|
end
|
@@ -1591,7 +1588,7 @@ describe Regress do
|
|
1591
1588
|
end
|
1592
1589
|
describe "its 'string' property" do
|
1593
1590
|
it 'can be retrieved with #get_property' do
|
1594
|
-
assert_nil instance.get_property('string')
|
1591
|
+
assert_nil instance.get_property('string')
|
1595
1592
|
end
|
1596
1593
|
|
1597
1594
|
it 'can be retrieved with #string' do
|
@@ -1600,13 +1597,13 @@ describe Regress do
|
|
1600
1597
|
|
1601
1598
|
it 'can be set with #set_property' do
|
1602
1599
|
instance.set_property 'string', 'foobar'
|
1603
|
-
assert_equal 'foobar', instance.get_property('string')
|
1600
|
+
assert_equal 'foobar', instance.get_property('string')
|
1604
1601
|
end
|
1605
1602
|
|
1606
1603
|
it 'can be set with #string=' do
|
1607
1604
|
instance.string = 'foobar'
|
1608
1605
|
assert_equal 'foobar', instance.string
|
1609
|
-
assert_equal 'foobar', instance.get_property('string')
|
1606
|
+
assert_equal 'foobar', instance.get_property('string')
|
1610
1607
|
end
|
1611
1608
|
end
|
1612
1609
|
|
@@ -1698,7 +1695,7 @@ describe Regress do
|
|
1698
1695
|
result = GObject.signal_emit instance, 'sig-with-int64-prop', 0x7fff_ffff_ffff_ffff
|
1699
1696
|
|
1700
1697
|
a.must_equal 0x7fff_ffff_ffff_ffff
|
1701
|
-
result.
|
1698
|
+
result.must_equal 0x7fff_ffff_ffff_ffff
|
1702
1699
|
end
|
1703
1700
|
|
1704
1701
|
it "handles the 'sig-with-intarray-ret' signal" do
|
@@ -1715,8 +1712,7 @@ describe Regress do
|
|
1715
1712
|
|
1716
1713
|
a.must_equal 3
|
1717
1714
|
|
1718
|
-
|
1719
|
-
GLib::Array.wrap(:gint32, result.get_value_plain).to_a.must_equal [3, 2, 1]
|
1715
|
+
result.to_a.must_equal [3, 2, 1]
|
1720
1716
|
end
|
1721
1717
|
|
1722
1718
|
it "handles the 'sig-with-obj' signal" do
|
@@ -1756,7 +1752,7 @@ describe Regress do
|
|
1756
1752
|
result = GObject.signal_emit instance, 'sig-with-uint64-prop', 0xffff_ffff_ffff_ffff
|
1757
1753
|
|
1758
1754
|
a.must_equal 0xffff_ffff_ffff_ffff
|
1759
|
-
result.
|
1755
|
+
result.must_equal 0xffff_ffff_ffff_ffff
|
1760
1756
|
end
|
1761
1757
|
|
1762
1758
|
it "handles the 'test' signal" do
|
@@ -2276,7 +2272,7 @@ describe Regress do
|
|
2276
2272
|
|
2277
2273
|
describe "its 'testbool' property" do
|
2278
2274
|
it 'can be retrieved with #get_property' do
|
2279
|
-
instance.get_property('testbool').
|
2275
|
+
instance.get_property('testbool').must_equal true
|
2280
2276
|
end
|
2281
2277
|
|
2282
2278
|
it 'can be retrieved with #testbool' do
|
@@ -2286,23 +2282,23 @@ describe Regress do
|
|
2286
2282
|
it 'can be set with #set_property' do
|
2287
2283
|
instance.set_property 'testbool', true
|
2288
2284
|
instance.get_testbool.must_equal true
|
2289
|
-
instance.get_property('testbool').
|
2285
|
+
instance.get_property('testbool').must_equal true
|
2290
2286
|
|
2291
2287
|
instance.set_property 'testbool', false
|
2292
2288
|
instance.get_testbool.must_equal false
|
2293
|
-
instance.get_property('testbool').
|
2289
|
+
instance.get_property('testbool').must_equal false
|
2294
2290
|
end
|
2295
2291
|
|
2296
2292
|
it 'can be set with #testbool=' do
|
2297
2293
|
instance.testbool = true
|
2298
2294
|
instance.testbool.must_equal true
|
2299
2295
|
instance.get_testbool.must_equal true
|
2300
|
-
instance.get_property('testbool').
|
2296
|
+
instance.get_property('testbool').must_equal true
|
2301
2297
|
|
2302
2298
|
instance.testbool = false
|
2303
2299
|
instance.testbool.must_equal false
|
2304
2300
|
instance.get_testbool.must_equal false
|
2305
|
-
instance.get_property('testbool').
|
2301
|
+
instance.get_property('testbool').must_equal false
|
2306
2302
|
end
|
2307
2303
|
end
|
2308
2304
|
end
|
@@ -2438,7 +2434,7 @@ describe Regress do
|
|
2438
2434
|
|
2439
2435
|
it 'has a working function #global_get_flags_out' do
|
2440
2436
|
result = Regress.global_get_flags_out
|
2441
|
-
result.must_equal
|
2437
|
+
result.must_equal(flag1: true, flag3: true)
|
2442
2438
|
end
|
2443
2439
|
|
2444
2440
|
it 'has a working function #has_parameter_named_attrs' do
|
@@ -2470,14 +2466,12 @@ describe Regress do
|
|
2470
2466
|
b = nil
|
2471
2467
|
c = 95
|
2472
2468
|
|
2473
|
-
|
2469
|
+
result = Regress.test_array_callback do |one, two|
|
2474
2470
|
a = one
|
2475
2471
|
b = two
|
2476
2472
|
c
|
2477
2473
|
end
|
2478
2474
|
|
2479
|
-
result = Regress.test_array_callback callback
|
2480
|
-
|
2481
2475
|
result.must_equal 2 * c
|
2482
2476
|
a.to_a.must_equal [-1, 0, 1, 2]
|
2483
2477
|
b.to_a.must_equal %w(one two three)
|
@@ -2539,11 +2533,11 @@ describe Regress do
|
|
2539
2533
|
|
2540
2534
|
it 'has a working function #test_array_inout_callback' do
|
2541
2535
|
skip unless get_introspection_data 'Regress', 'test_array_inout_callback'
|
2542
|
-
Regress.test_array_inout_callback
|
2536
|
+
Regress.test_array_inout_callback do |ints|
|
2543
2537
|
arr = ints.to_a
|
2544
2538
|
arr.shift
|
2545
2539
|
arr
|
2546
|
-
|
2540
|
+
end
|
2547
2541
|
pass
|
2548
2542
|
end
|
2549
2543
|
|
@@ -2580,10 +2574,10 @@ describe Regress do
|
|
2580
2574
|
main_loop = GLib::MainLoop.new nil, false
|
2581
2575
|
|
2582
2576
|
a = 1
|
2583
|
-
Regress.test_async_ready_callback
|
2577
|
+
Regress.test_async_ready_callback do
|
2584
2578
|
main_loop.quit
|
2585
2579
|
a = 2
|
2586
|
-
|
2580
|
+
end
|
2587
2581
|
|
2588
2582
|
main_loop.run
|
2589
2583
|
|
@@ -2647,57 +2641,55 @@ describe Regress do
|
|
2647
2641
|
end
|
2648
2642
|
|
2649
2643
|
it 'has a working function #test_callback' do
|
2650
|
-
result = Regress.test_callback
|
2644
|
+
result = Regress.test_callback { 5 }
|
2651
2645
|
assert_equal 5, result
|
2652
2646
|
end
|
2653
2647
|
|
2654
2648
|
it 'has a working function #test_callback_async' do
|
2655
2649
|
a = 1
|
2656
|
-
|
2657
|
-
|
2658
|
-
|
2659
|
-
|
2660
|
-
|
2650
|
+
stored_id = nil
|
2651
|
+
Regress.test_callback_async { |user_data| stored_id = user_data; a = 2 }
|
2652
|
+
result = Regress.test_callback_thaw_async
|
2653
|
+
a.must_equal 2
|
2654
|
+
stored_id.wont_be_nil
|
2655
|
+
result.must_equal 2
|
2656
|
+
# TODO: See when we can clean up the stored callback for async callbacks.
|
2657
|
+
GirFFI::CallbackBase::CALLBACKS[stored_id].wont_be_nil
|
2661
2658
|
end
|
2662
2659
|
|
2663
2660
|
it 'has a working function #test_callback_destroy_notify' do
|
2664
2661
|
a = 1
|
2665
|
-
|
2666
|
-
|
2667
|
-
|
2668
|
-
|
2669
|
-
|
2662
|
+
stored_id = nil
|
2663
|
+
r1 = Regress.test_callback_destroy_notify { |user_data| stored_id = user_data; a = 2 }
|
2664
|
+
a.must_equal 2
|
2665
|
+
GirFFI::CallbackBase::CALLBACKS[stored_id].wont_be_nil
|
2666
|
+
|
2667
|
+
a = 3
|
2670
2668
|
r2 = Regress.test_callback_thaw_notifications
|
2671
|
-
|
2672
|
-
|
2669
|
+
a.must_equal 2
|
2670
|
+
r1.must_equal r2
|
2671
|
+
GirFFI::CallbackBase::CALLBACKS[stored_id].must_be_nil
|
2673
2672
|
end
|
2674
2673
|
|
2675
2674
|
it 'has a working function #test_callback_destroy_notify_no_user_data' do
|
2676
2675
|
skip unless get_introspection_data 'Regress', 'test_callback_destroy_notify_no_user_data'
|
2677
2676
|
|
2678
2677
|
callback_times_called = 0
|
2679
|
-
notify_times_called = 0
|
2680
2678
|
b = :not_nil
|
2681
2679
|
|
2682
|
-
|
2680
|
+
result = Regress.test_callback_destroy_notify_no_user_data do |user_data|
|
2683
2681
|
callback_times_called += 1
|
2684
2682
|
b = user_data
|
2685
2683
|
callback_times_called * 5
|
2686
2684
|
end
|
2687
2685
|
|
2688
|
-
notify = proc { notify_times_called += 1 }
|
2689
|
-
|
2690
|
-
result = Regress.test_callback_destroy_notify_no_user_data callback, notify
|
2691
|
-
|
2692
2686
|
callback_times_called.must_equal 1
|
2693
|
-
notify_times_called.must_equal 0
|
2694
2687
|
result.must_equal 5
|
2695
2688
|
b.must_be_nil
|
2696
2689
|
|
2697
2690
|
result = Regress.test_callback_thaw_notifications
|
2698
2691
|
|
2699
2692
|
callback_times_called.must_equal 2
|
2700
|
-
notify_times_called.must_equal 1
|
2701
2693
|
result.must_equal 10
|
2702
2694
|
b.must_be_nil
|
2703
2695
|
end
|
@@ -2705,44 +2697,35 @@ describe Regress do
|
|
2705
2697
|
it 'has a working function #test_callback_return_full' do
|
2706
2698
|
skip unless get_introspection_data 'Regress', 'test_callback_return_full'
|
2707
2699
|
obj = Regress::TestObj.constructor
|
2708
|
-
Regress.test_callback_return_full
|
2700
|
+
Regress.test_callback_return_full { obj }
|
2709
2701
|
ref_count(obj).must_equal 1
|
2710
2702
|
end
|
2711
2703
|
|
2712
2704
|
it 'has a working function #test_callback_thaw_async' do
|
2713
2705
|
invoked = []
|
2714
|
-
Regress.test_callback_async
|
2715
|
-
Regress.test_callback_async
|
2716
|
-
Regress.test_callback_async
|
2706
|
+
Regress.test_callback_async { invoked << 1; 1 }
|
2707
|
+
Regress.test_callback_async { invoked << 2; 2 }
|
2708
|
+
Regress.test_callback_async { invoked << 3; 3 }
|
2717
2709
|
result = Regress.test_callback_thaw_async
|
2718
2710
|
invoked.must_equal [3, 2, 1]
|
2719
2711
|
result.must_equal 1
|
2720
2712
|
end
|
2721
2713
|
|
2722
2714
|
it 'has a working function #test_callback_thaw_notifications' do
|
2723
|
-
|
2724
|
-
Regress.test_callback_destroy_notify
|
2725
|
-
Regress.test_callback_destroy_notify proc { 24 }, nil, proc { invoked = true }
|
2715
|
+
Regress.test_callback_destroy_notify { 42 }
|
2716
|
+
Regress.test_callback_destroy_notify { 24 }
|
2726
2717
|
result = Regress.test_callback_thaw_notifications
|
2727
2718
|
result.must_equal 66
|
2728
|
-
invoked.must_equal true
|
2729
2719
|
end
|
2730
2720
|
|
2731
2721
|
it 'has a working function #test_callback_user_data' do
|
2732
|
-
|
2733
|
-
result = Regress.test_callback_user_data
|
2734
|
-
|
2722
|
+
stored_id = nil
|
2723
|
+
result = Regress.test_callback_user_data { |u| stored_id = u; 5 }
|
2724
|
+
# TODO: Ensure that the key stored_id is no longer in the callback store
|
2725
|
+
stored_id.wont_be_nil
|
2735
2726
|
result.must_equal 5
|
2736
2727
|
end
|
2737
2728
|
|
2738
|
-
describe 'the #test_callback_user_data function' do
|
2739
|
-
it 'handles boolean user_data' do
|
2740
|
-
a = false
|
2741
|
-
Regress.test_callback_user_data proc { |u| a = u; 5 }, true
|
2742
|
-
assert_equal true, a
|
2743
|
-
end
|
2744
|
-
end
|
2745
|
-
|
2746
2729
|
it 'has a working function #test_closure' do
|
2747
2730
|
c = GObject::RubyClosure.new { 5235 }
|
2748
2731
|
r = Regress.test_closure c
|
@@ -2774,8 +2757,7 @@ describe Regress do
|
|
2774
2757
|
end
|
2775
2758
|
|
2776
2759
|
it 'has a working function #test_date_in_gvalue' do
|
2777
|
-
|
2778
|
-
date = r.get_value
|
2760
|
+
date = Regress.test_date_in_gvalue
|
2779
2761
|
skip unless date.respond_to? :get_year
|
2780
2762
|
assert_equal [1984, :december, 5],
|
2781
2763
|
[date.get_year, date.get_month, date.get_day]
|
@@ -2830,7 +2812,7 @@ describe Regress do
|
|
2830
2812
|
|
2831
2813
|
it 'has a working function #test_gerror_callback' do
|
2832
2814
|
result = nil
|
2833
|
-
Regress.test_gerror_callback
|
2815
|
+
Regress.test_gerror_callback { |err| result = err.message }
|
2834
2816
|
result.must_equal 'regression test error'
|
2835
2817
|
end
|
2836
2818
|
|
@@ -3059,7 +3041,7 @@ describe Regress do
|
|
3059
3041
|
|
3060
3042
|
it 'has a working function #test_hash_table_callback' do
|
3061
3043
|
value = nil
|
3062
|
-
Regress.test_hash_table_callback(
|
3044
|
+
Regress.test_hash_table_callback('foo' => 42) { |hash| value = hash }
|
3063
3045
|
value.to_hash.must_equal('foo' => 42)
|
3064
3046
|
end
|
3065
3047
|
|
@@ -3109,10 +3091,10 @@ describe Regress do
|
|
3109
3091
|
|
3110
3092
|
it 'has a working function #test_multi_callback' do
|
3111
3093
|
a = 1
|
3112
|
-
result = Regress.test_multi_callback
|
3094
|
+
result = Regress.test_multi_callback do
|
3113
3095
|
a += 1
|
3114
3096
|
23
|
3115
|
-
|
3097
|
+
end
|
3116
3098
|
assert_equal 2 * 23, result
|
3117
3099
|
assert_equal 3, a
|
3118
3100
|
end
|
@@ -3133,13 +3115,13 @@ describe Regress do
|
|
3133
3115
|
|
3134
3116
|
it 'has a working function #test_null_gerror_callback' do
|
3135
3117
|
value = nil
|
3136
|
-
Regress.test_owned_gerror_callback
|
3118
|
+
Regress.test_owned_gerror_callback { |err| value = err }
|
3137
3119
|
value.message.must_equal 'regression test owned error'
|
3138
3120
|
end
|
3139
3121
|
|
3140
3122
|
it 'has a working function #test_owned_gerror_callback' do
|
3141
3123
|
value = nil
|
3142
|
-
Regress.test_owned_gerror_callback
|
3124
|
+
Regress.test_owned_gerror_callback { |err| value = err }
|
3143
3125
|
value.message.must_equal 'regression test owned error'
|
3144
3126
|
end
|
3145
3127
|
|
@@ -3155,7 +3137,7 @@ describe Regress do
|
|
3155
3137
|
|
3156
3138
|
it 'has a working function #test_simple_callback' do
|
3157
3139
|
a = 0
|
3158
|
-
Regress.test_simple_callback
|
3140
|
+
Regress.test_simple_callback { a = 1 }
|
3159
3141
|
assert_equal 1, a
|
3160
3142
|
end
|
3161
3143
|
|
@@ -3179,8 +3161,8 @@ describe Regress do
|
|
3179
3161
|
end
|
3180
3162
|
|
3181
3163
|
it 'has a working function #test_strv_in_gvalue' do
|
3182
|
-
|
3183
|
-
|
3164
|
+
arr = Regress.test_strv_in_gvalue
|
3165
|
+
arr.must_be :==, %w(one two three)
|
3184
3166
|
end
|
3185
3167
|
|
3186
3168
|
it 'has a working function #test_strv_out' do
|
@@ -3225,11 +3207,10 @@ describe Regress do
|
|
3225
3207
|
|
3226
3208
|
it 'has a working function #test_torture_signature_2' do
|
3227
3209
|
a = 1
|
3228
|
-
y, z, q = Regress.test_torture_signature_2 244,
|
3229
|
-
|
3230
|
-
|
3210
|
+
y, z, q = Regress.test_torture_signature_2 244, 'foofoo', 31 do |u|
|
3211
|
+
a = u
|
3212
|
+
end
|
3231
3213
|
assert_equal [244, 2 * 244, 6 + 31], [y, z, q]
|
3232
|
-
assert_equal 3, a
|
3233
3214
|
end
|
3234
3215
|
|
3235
3216
|
it 'has a working function #test_uint' do
|
@@ -3322,7 +3303,7 @@ describe Regress do
|
|
3322
3303
|
|
3323
3304
|
it 'has a working function #test_value_return' do
|
3324
3305
|
result = Regress.test_value_return 3423
|
3325
|
-
|
3306
|
+
result.must_equal 3423
|
3326
3307
|
end
|
3327
3308
|
|
3328
3309
|
it 'has a working function #test_versioning' do
|