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
         |