glib2 3.3.9 → 3.4.4

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.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -5
  3. data/Rakefile +6 -4
  4. data/ext/glib2/extconf.rb +1 -5
  5. data/ext/glib2/rbglib-bytes.c +1 -5
  6. data/ext/glib2/rbglib-gc.c +98 -52
  7. data/ext/glib2/rbglib-variant-type.c +1 -5
  8. data/ext/glib2/rbglib-variant.c +3 -5
  9. data/ext/glib2/rbglib.c +4 -0
  10. data/ext/glib2/rbglib.h +7 -4
  11. data/ext/glib2/rbglib_bookmarkfile.c +4 -4
  12. data/ext/glib2/rbglib_datetime.c +1 -5
  13. data/ext/glib2/rbglib_fileutils.c +1 -17
  14. data/ext/glib2/rbglib_iochannel.c +4 -4
  15. data/ext/glib2/rbglib_keyfile.c +16 -41
  16. data/ext/glib2/rbglib_maincontext.c +6 -32
  17. data/ext/glib2/rbglib_mainloop.c +2 -17
  18. data/ext/glib2/rbglib_matchinfo.c +1 -5
  19. data/ext/glib2/rbglib_pollfd.c +1 -25
  20. data/ext/glib2/rbglib_regex.c +1 -13
  21. data/ext/glib2/rbglib_source.c +1 -39
  22. data/ext/glib2/rbglib_spawn.c +5 -10
  23. data/ext/glib2/rbglib_spawnerror.c +2 -2
  24. data/ext/glib2/rbglib_threads.c +2 -15
  25. data/ext/glib2/rbglib_timezone.c +1 -5
  26. data/ext/glib2/rbglib_unichar.c +46 -5
  27. data/ext/glib2/rbglib_unicode.c +1 -18
  28. data/ext/glib2/rbglib_utils.c +1 -14
  29. data/ext/glib2/rbglib_win32.c +3 -7
  30. data/ext/glib2/rbgobj_binding.c +1 -7
  31. data/ext/glib2/rbgobj_closure.c +22 -9
  32. data/ext/glib2/rbgobj_object.c +113 -104
  33. data/ext/glib2/rbgobj_param.c +2 -8
  34. data/ext/glib2/rbgobj_paramspecs.c +6 -24
  35. data/ext/glib2/rbgobj_signal.c +81 -48
  36. data/ext/glib2/rbgobj_strv.c +2 -2
  37. data/ext/glib2/rbgobj_type.c +58 -68
  38. data/ext/glib2/rbgobj_value.c +3 -7
  39. data/ext/glib2/rbgobj_valuetypes.c +14 -62
  40. data/ext/glib2/rbgobject.c +4 -6
  41. data/ext/glib2/rbgobject.h +2 -27
  42. data/ext/glib2/rbgprivate.h +6 -6
  43. data/ext/glib2/rbgutil_callback.c +23 -26
  44. data/lib/glib2/deprecated.rb +22 -1
  45. data/lib/mkmf-gnome.rb +5 -5
  46. data/test/glib-test-utils.rb +18 -3
  47. data/test/run-test.rb +49 -14
  48. data/test/test-binding.rb +1 -11
  49. data/test/test-bytes.rb +1 -5
  50. data/test/test-date-time.rb +1 -3
  51. data/test/test-file-utils.rb +1 -32
  52. data/test/test-iochannel.rb +3 -5
  53. data/test/test-key-file.rb +5 -6
  54. data/test/test-match-info.rb +1 -5
  55. data/test/test-regex.rb +1 -5
  56. data/test/test-source.rb +1 -14
  57. data/test/test-spawn.rb +2 -1
  58. data/test/test-time-zone.rb +1 -5
  59. data/test/test-timeout.rb +2 -3
  60. data/test/test-unicode.rb +16 -12
  61. data/test/test-utils.rb +2 -8
  62. data/test/test-variant-type.rb +1 -3
  63. data/test/test-win32.rb +6 -6
  64. metadata +3 -8
  65. data/ext/glib2/glib-enum-types.c +0 -1233
  66. data/ext/glib2/glib-enum-types.h +0 -154
  67. data/ext/glib2/rbgobj_valuearray.c +0 -100
  68. data/test/glib-test-init.rb +0 -21
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2015 Ruby-GNOME2 Project Team
1
+ # Copyright (C) 2015-2021 Ruby-GNOME Project Team
2
2
  #
3
3
  # This library is free software; you can redistribute it and/or
4
4
  # modify it under the terms of the GNU Lesser General Public
@@ -14,6 +14,12 @@
14
14
  # License along with this library; if not, write to the Free Software
15
15
  # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
16
 
17
+ require "pathname"
18
+
19
+ require "test-unit"
20
+
21
+ require "glib2"
22
+
17
23
  module GLibTestUtils
18
24
  private
19
25
  def only_glib_version(major, minor, micro)
@@ -22,7 +28,16 @@ module GLibTestUtils
22
28
  end
23
29
  end
24
30
 
25
- def only_win32
26
- omit("Only for Win32 platform") unless GLib.os_win32?
31
+ def only_windows
32
+ omit("Only for Windows platform") unless GLib.os_win32?
33
+ end
34
+
35
+ def only_not_windows
36
+ omit("Not for for Windows platform") if GLib.os_win32?
37
+ end
38
+
39
+ def normalize_path(path)
40
+ return path unless File::ALT_SEPARATOR
41
+ path.gsub(File::ALT_SEPARATOR, File::SEPARATOR)
27
42
  end
28
43
  end
data/test/run-test.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  #!/usr/bin/env ruby
2
- # Copyright (C) 2015 Ruby-GNOME2 Project Team
2
+ #
3
+ # Copyright (C) 2015-2021 Ruby-GNOME Project Team
3
4
  #
4
5
  # This library is free software; you can redistribute it and/or
5
6
  # modify it under the terms of the GNU Lesser General Public
@@ -15,23 +16,57 @@
15
16
  # License along with this library; if not, write to the Free Software
16
17
  # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17
18
 
19
+ require "fileutils"
18
20
 
19
- base = File.expand_path(File.join(File.dirname(__FILE__)))
20
- top = File.expand_path(File.join(base, ".."))
21
+ def run_test(test_dir, dependencies)
22
+ $VERBOSE = true
21
23
 
22
- $LOAD_PATH.unshift(top)
23
- require 'test/glib-test-init'
24
+ ruby_gnome_build_dir = ENV["RUBY_GNOME_BUILD_DIR"]
25
+ ruby_gnome_build_dir ||= File.expand_path("..")
26
+ ruby_gnome_source_dir = File.expand_path("../..", test_dir)
24
27
 
25
- if File.exist?("#{top}/Makefile") and system("which make > /dev/null")
26
- system("cd #{top.dump} && make > /dev/null") or exit(1)
27
- end
28
+ dependencies.each do |dependency|
29
+ source_dir = File.join(ruby_gnome_source_dir, dependency)
30
+ build_dir = File.join(ruby_gnome_build_dir, dependency)
31
+ makefile = File.join(build_dir, "Makefile")
32
+ if File.exist?(makefile)
33
+ system("make", "-C", build_dir, "-j", out: IO::NULL) or exit(false)
34
+ $LOAD_PATH.unshift(File.join(build_dir, "ext", dependency))
35
+ end
36
+ $LOAD_PATH.unshift(File.join(source_dir, "lib"))
37
+ end
28
38
 
29
- $LOAD_PATH.unshift(File.join(top, "ext", "glib2"))
30
- $LOAD_PATH.unshift(File.join(top, "lib"))
39
+ source_fixture_dir = File.join(test_dir, "fixture")
40
+ if File.exist?(source_fixture_dir)
41
+ target_name = File.basename(File.expand_path("..", test_dir))
42
+ build_fixture_dir = File.join(ruby_gnome_build_dir,
43
+ target_name,
44
+ "test",
45
+ "fixture")
46
+ unless source_fixture_dir == build_fixture_dir
47
+ FileUtils.rm_rf(build_fixture_dir)
48
+ FileUtils.mkdir_p(File.dirname(build_fixture_dir))
49
+ FileUtils.cp_r(source_fixture_dir, build_fixture_dir)
50
+ end
51
+ Dir.chdir(build_fixture_dir) do
52
+ if File.exist?("Rakefile")
53
+ system("rake") or exit(false)
54
+ end
55
+ end
56
+ end
31
57
 
32
- $LOAD_PATH.unshift(base)
33
- require 'glib-test-utils'
58
+ require_relative "glib-test-utils"
34
59
 
35
- require 'glib2'
60
+ if block_given?
61
+ context = {
62
+ build_fixture_dir: build_fixture_dir,
63
+ }
64
+ yield(context)
65
+ end
36
66
 
37
- exit Test::Unit::AutoRunner.run(true, base)
67
+ exit(Test::Unit::AutoRunner.run(true, test_dir))
68
+ end
69
+
70
+ if $PROGRAM_NAME == __FILE__
71
+ run_test(__dir__, ["glib2"])
72
+ end
data/test/test-binding.rb CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2015 Ruby-GNOME2 Project Team
1
+ # Copyright (C) 2015-2021 Ruby-GNOME Project Team
2
2
  #
3
3
  # This library is free software; you can redistribute it and/or
4
4
  # modify it under the terms of the GNU Lesser General Public
@@ -55,10 +55,6 @@ class TestGLibBinding < Test::Unit::TestCase
55
55
  end
56
56
  end
57
57
 
58
- setup do
59
- only_glib_version(2, 26, 0)
60
- end
61
-
62
58
  setup do
63
59
  @source = DataObjectDefault.new
64
60
  @target = DataObjectDefault.new
@@ -86,7 +82,6 @@ class TestGLibBinding < Test::Unit::TestCase
86
82
  end
87
83
 
88
84
  test "#unbind" do
89
- only_glib_version(2, 38, 0)
90
85
  assert_equal(0, @target.target)
91
86
  @source.source = 10
92
87
  assert_equal(10, @target.target)
@@ -132,10 +127,6 @@ class TestGLibBinding < Test::Unit::TestCase
132
127
  end
133
128
  end
134
129
 
135
- setup do
136
- only_glib_version(2, 26, 0)
137
- end
138
-
139
130
  setup do
140
131
  @source = DataObjectBidir.new
141
132
  @target = DataObjectBidir.new
@@ -174,7 +165,6 @@ class TestGLibBinding < Test::Unit::TestCase
174
165
  end
175
166
 
176
167
  test "#unbind" do
177
- only_glib_version(2, 38, 0)
178
168
  assert_equal("nan", @target.target)
179
169
  @source.source = 10
180
170
  assert_equal("10", @target.target)
data/test/test-bytes.rb CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2017-2019 Ruby-GNOME Project Team
1
+ # Copyright (C) 2017-2021 Ruby-GNOME Project Team
2
2
  #
3
3
  # This library is free software; you can redistribute it and/or
4
4
  # modify it under the terms of the GNU Lesser General Public
@@ -17,10 +17,6 @@
17
17
  class TestGLibBytes < Test::Unit::TestCase
18
18
  include GLibTestUtils
19
19
 
20
- setup do
21
- only_glib_version(2, 32, 0)
22
- end
23
-
24
20
  sub_test_case ".try_convert" do
25
21
  def test_nil
26
22
  assert_nil(GLib::Bytes.try_convert(nil))
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2016-2017 Ruby-GNOME2 Project Team
1
+ # Copyright (C) 2016-2021 Ruby-GNOME Project Team
2
2
  #
3
3
  # This library is free software; you can redistribute it and/or
4
4
  # modify it under the terms of the GNU Lesser General Public
@@ -76,7 +76,6 @@ class TestDateTime < Test::Unit::TestCase
76
76
  end
77
77
 
78
78
  test "timezone: local time zone" do
79
- only_glib_version(2, 34, 0)
80
79
  time = Time.now
81
80
  tz = GLib::TimeZone.local
82
81
  datetime = GLib::DateTime.new(:timezone => tz,
@@ -95,7 +94,6 @@ class TestDateTime < Test::Unit::TestCase
95
94
  end
96
95
 
97
96
  test "timezone: UTC time zone" do
98
- only_glib_version(2, 34, 0)
99
97
  time = Time.now.utc
100
98
  tz = GLib::TimeZone.utc
101
99
  datetime = GLib::DateTime.new(:timezone => tz,
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2015-2019 Ruby-GNOME2 Project Team
1
+ # Copyright (C) 2015-2021 Ruby-GNOME Project Team
2
2
  #
3
3
  # This library is free software; you can redistribute it and/or
4
4
  # modify it under the terms of the GNU Lesser General Public
@@ -21,38 +21,7 @@ class TestGLibFileUtils < Test::Unit::TestCase
21
21
  string.gsub("\u{00A0}", " ")
22
22
  end
23
23
 
24
- sub_test_case "#format_size_for_display" do
25
- def setup
26
- only_glib_version(2, 16, 0)
27
- end
28
-
29
- def test_kb
30
- assert_equal("1.0 KB", GLib.format_size_for_display(1024))
31
- end
32
-
33
- def test_10kb
34
- assert_equal("10.0 KB", GLib.format_size_for_display(1024 * 10))
35
- end
36
-
37
- def test_mb
38
- assert_equal("1.0 MB", GLib.format_size_for_display(1024 * 1024))
39
- end
40
-
41
- def test_gb
42
- assert_equal("1.0 GB", GLib.format_size_for_display(1024 * 1024 * 1024))
43
- end
44
-
45
- def test_over_guint32_value
46
- guint32_max = 2 ** 32 - 1
47
- assert_equal("4.0 GB", GLib.format_size_for_display(guint32_max + 1))
48
- end
49
- end
50
-
51
24
  sub_test_case "#format_size" do
52
- def setup
53
- only_glib_version(2, 30, 0)
54
- end
55
-
56
25
  def test_kb
57
26
  assert_equal("1.0 kB",
58
27
  normalize_space(GLib.format_size(1000)))
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2015-2017 Ruby-GNOME2 Project Team
1
+ # Copyright (C) 2015-2021 Ruby-GNOME Project Team
2
2
  #
3
3
  # This library is free software; you can redistribute it and/or
4
4
  # modify it under the terms of the GNU Lesser General Public
@@ -26,11 +26,13 @@ class TestGIOChannel < Test::Unit::TestCase
26
26
 
27
27
  @file = Tempfile.new("glib2-content")
28
28
  @file.open
29
+ @file.binmode
29
30
  @file.print(@content)
30
31
  @file.close
31
32
 
32
33
  @sjis_file = Tempfile.new("glib2-sjis-content")
33
34
  @sjis_file.open
35
+ @sjis_file.binmode
34
36
  @sjis_file.print(@sjis_content)
35
37
  @sjis_file.close
36
38
  end
@@ -66,10 +68,6 @@ class TestGIOChannel < Test::Unit::TestCase
66
68
  end
67
69
  end
68
70
 
69
- assert_raises(GLib::IOChannelError) do
70
- io.close
71
- end
72
-
73
71
  assert_raises(GLib::FileError) do
74
72
  GLib::IOChannel.new("foo")
75
73
  end
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2015 Ruby-GNOME2 Project Team
1
+ # Copyright (C) 2015-2021 Ruby-GNOME Project Team
2
2
  #
3
3
  # This library is free software; you can redistribute it and/or
4
4
  # modify it under the terms of the GNU Lesser General Public
@@ -20,8 +20,6 @@ class TestGLibKeyFile < Test::Unit::TestCase
20
20
  include GLibTestUtils
21
21
 
22
22
  def test_load_from_dirs
23
- only_glib_version(2, 14, 0)
24
-
25
23
  key_file = GLib::KeyFile.new
26
24
  assert_raise(GLib::KeyFileError::NotFound) do
27
25
  key_file.load_from_dirs("non-existent")
@@ -34,7 +32,8 @@ class TestGLibKeyFile < Test::Unit::TestCase
34
32
  key_file.load_from_dirs("non-existent", search_dirs)
35
33
  end
36
34
  if GLib.check_version?(2, 31, 2)
37
- assert_equal(temp.path, key_file.load_from_dirs(base_name, search_dirs))
35
+ loaded_path = key_file.load_from_dirs(base_name, search_dirs)
36
+ assert_equal(temp.path, normalize_path(loaded_path))
38
37
  elsif GLib.check_version?(2, 30, 0)
39
38
  assert_raise(GLib::KeyFileError::NotFound) do
40
39
  key_file.load_from_dirs(base_name, search_dirs)
@@ -49,11 +48,11 @@ class TestGLibKeyFile < Test::Unit::TestCase
49
48
  key = value
50
49
  EOK
51
50
  temp.close
52
- assert_equal(temp.path, key_file.load_from_dirs(base_name, search_dirs))
51
+ loaded_path = key_file.load_from_dirs(base_name, search_dirs)
52
+ assert_equal(temp.path, normalize_path(loaded_path))
53
53
  end
54
54
 
55
55
  def test_desktop_constants
56
- only_glib_version(2, 14, 0)
57
56
  assert_equal("Desktop Entry", GLib::KeyFile::DESKTOP_GROUP)
58
57
  assert_equal("URL", GLib::KeyFile::DESKTOP_KEY_URL)
59
58
  end
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2015-2017 Ruby-GNOME2 Project Team
1
+ # Copyright (C) 2015-2021 Ruby-GNOME Project Team
2
2
  #
3
3
  # This library is free software; you can redistribute it and/or
4
4
  # modify it under the terms of the GNU Lesser General Public
@@ -17,10 +17,6 @@
17
17
  class TestMatchInfo < Test::Unit::TestCase
18
18
  include GLibTestUtils
19
19
 
20
- setup do
21
- only_glib_version(2, 30, 0)
22
- end
23
-
24
20
  def test_string
25
21
  regex = GLib::Regex.new("[A-Z]+")
26
22
  match_info = regex.match("abc def")
data/test/test-regex.rb CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2015-2017 Ruby-GNOME2 Project Team
1
+ # Copyright (C) 2015-2021 Ruby-GNOME Project Team
2
2
  #
3
3
  # This library is free software; you can redistribute it and/or
4
4
  # modify it under the terms of the GNU Lesser General Public
@@ -17,10 +17,6 @@
17
17
  class TestRegex < Test::Unit::TestCase
18
18
  include GLibTestUtils
19
19
 
20
- setup do
21
- only_glib_version(2, 30, 0)
22
- end
23
-
24
20
  def test_enum_match_flags
25
21
  assert_const_defined(GLib, :RegexMatchFlags)
26
22
  assert_kind_of(GLib::RegexMatchFlags, GLib::RegexMatchFlags::PARTIAL_HARD)
data/test/test-source.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  # -*- coding: utf-8 -*-
2
2
  #
3
- # Copyright (C) 2013-2015 Ruby-GNOME2 Project Team
3
+ # Copyright (C) 2013-2021 Ruby-GNOME Project Team
4
4
  #
5
5
  # This library is free software; you can redistribute it and/or
6
6
  # modify it under the terms of the GNU Lesser General Public
@@ -32,15 +32,6 @@ class TestGLibSource < Test::Unit::TestCase
32
32
  end
33
33
 
34
34
  def test_destroy
35
- # only_glib_version(2, 35, 4)
36
- # GMainContext may be freed before GSource by Ruby's GC.
37
- # If GMainContext is freed before GSource, GLib 2.35.3 or earlier is
38
- # crashed.
39
- #
40
- # See also:
41
- # * https://bugzilla.gnome.org/show_bug.cgi?id=661767
42
- # * https://git.gnome.org/browse/glib/commit/?id=26056558be4656ee6e891a4fae5d4198de7519cf
43
-
44
35
  context = GLib::MainContext.new
45
36
  source = GLib::Idle.source_new
46
37
  id = source.attach(context)
@@ -52,8 +43,6 @@ class TestGLibSource < Test::Unit::TestCase
52
43
  end
53
44
 
54
45
  def test_name
55
- only_glib_version(2, 26, 0)
56
-
57
46
  source = GLib::Idle.source_new
58
47
 
59
48
  source_name = "glib source"
@@ -62,8 +51,6 @@ class TestGLibSource < Test::Unit::TestCase
62
51
  end
63
52
 
64
53
  def test_ready_time
65
- only_glib_version(2, 36, 0)
66
-
67
54
  source = GLib::Idle.source_new
68
55
 
69
56
  ready_time = 5
data/test/test-spawn.rb CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2015-2019 Ruby-GNOME2 Project Team
1
+ # Copyright (C) 2015-2021 Ruby-GNOME Project Team
2
2
  #
3
3
  # This library is free software; you can redistribute it and/or
4
4
  # modify it under the terms of the GNU Lesser General Public
@@ -34,6 +34,7 @@ class TestGLibSpawn < Test::Unit::TestCase
34
34
  end
35
35
 
36
36
  def test_async_clear_environment
37
+ only_not_windows
37
38
  if RbConfig.respond_to?(:ruby)
38
39
  ruby = RbConfig.ruby
39
40
  else
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2016-2017 Ruby-GNOME2 Project Team
1
+ # Copyright (C) 2016-2021 Ruby-GNOME Project Team
2
2
  #
3
3
  # This library is free software; you can redistribute it and/or
4
4
  # modify it under the terms of the GNU Lesser General Public
@@ -17,10 +17,6 @@
17
17
  class TestTimeZone < Test::Unit::TestCase
18
18
  include GLibTestUtils
19
19
 
20
- setup do
21
- only_glib_version(2, 34, 0)
22
- end
23
-
24
20
  sub_test_case "new" do
25
21
  test "local" do
26
22
  local_1 = GLib::TimeZone.local
data/test/test-timeout.rb CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2015 Ruby-GNOME2 Project Team
1
+ # Copyright (C) 2015-2021 Ruby-GNOME Project Team
2
2
  #
3
3
  # This library is free software; you can redistribute it and/or
4
4
  # modify it under the terms of the GNU Lesser General Public
@@ -13,7 +13,7 @@
13
13
  # You should have received a copy of the GNU Lesser General Public
14
14
  # License along with this library; if not, write to the Free Software
15
15
  # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
-
16
+
17
17
  class TestGLibTimeout < Test::Unit::TestCase
18
18
  include GLibTestUtils
19
19
 
@@ -33,7 +33,6 @@ class TestGLibTimeout < Test::Unit::TestCase
33
33
  end
34
34
 
35
35
  def test_timeout_add_seconds_priority
36
- only_glib_version(2, 14, 0)
37
36
  priority = GLib::PRIORITY_HIGH
38
37
  @id = GLib::Timeout.add_seconds(10, priority)
39
38
  source = GLib::MainContext.default.find_source(@id)
data/test/test-unicode.rb CHANGED
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2015 Ruby-GNOME2 Project Team
1
+ # Copyright (C) 2015-2021 Ruby-GNOME Project Team
2
2
  #
3
3
  # This library is free software; you can redistribute it and/or
4
4
  # modify it under the terms of the GNU Lesser General Public
@@ -13,7 +13,7 @@
13
13
  # You should have received a copy of the GNU Lesser General Public
14
14
  # License along with this library; if not, write to the Free Software
15
15
  # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
-
16
+
17
17
  class TestGLibUnicode < Test::Unit::TestCase
18
18
  include GLibTestUtils
19
19
 
@@ -113,7 +113,6 @@ class TestGLibUnicode < Test::Unit::TestCase
113
113
  end
114
114
 
115
115
  def test_unichar_wide_cjk?
116
- only_glib_version(2, 12, 0)
117
116
  assert(GLib::UniChar.wide_cjk?(unichar("あ")))
118
117
  assert(GLib::UniChar.wide_cjk?(0xD55C)) # HANGUL SYLLABLE HAN
119
118
  assert(!GLib::UniChar.wide_cjk?(unichar("a")))
@@ -176,17 +175,28 @@ class TestGLibUnicode < Test::Unit::TestCase
176
175
  GLib::Unicode.canonical_ordering(utf8_to_utf32(original)))
177
176
  end
178
177
 
179
- def test_unicode_canonical_decomposition
178
+ def test_unichar_compose
179
+ a_with_acute = 0x00E1
180
+ assert_equal(a_with_acute,
181
+ GLib::UniChar.compose(unichar("a"), 0x0301))
182
+
183
+ hiragana_ga = 0x304C
184
+ hiragana_ka = 0x304B
185
+ assert_equal(hiragana_ga,
186
+ GLib::UniChar.compose(hiragana_ka, 0x3099))
187
+ end
188
+
189
+ def test_unichar_decompose
180
190
  a_with_acute = 0x00E1
181
191
  expected = [unichar("a"), 0x0301].pack("U*")
182
192
  assert_equal(utf8_to_utf32(expected),
183
- GLib::Unicode.canonical_decomposition(a_with_acute))
193
+ GLib::UniChar.decompose(a_with_acute))
184
194
 
185
195
  hiragana_ga = 0x304C
186
196
  hiragana_ka = 0x304B
187
197
  expected = [hiragana_ka, 0x3099].pack("U*")
188
198
  assert_equal(utf8_to_utf32(expected),
189
- GLib::Unicode.canonical_decomposition(hiragana_ga))
199
+ GLib::UniChar.decompose(hiragana_ga))
190
200
  end
191
201
 
192
202
  def test_unichar_get_mirror_char
@@ -196,7 +206,6 @@ class TestGLibUnicode < Test::Unit::TestCase
196
206
  end
197
207
 
198
208
  def test_unichar_get_script
199
- only_glib_version(2, 14, 0)
200
209
  assert_equal(GLib::Unicode::SCRIPT_HIRAGANA,
201
210
  GLib::UniChar.get_script(unichar("あ")))
202
211
  end
@@ -261,14 +270,12 @@ class TestGLibUnicode < Test::Unit::TestCase
261
270
  end
262
271
 
263
272
  def test_utf8_collate
264
- only_glib_version(2, 16, 0)
265
273
  assert_operator(0, :>, GLib::UTF8.collate("あ", "い"))
266
274
  assert_operator(0, :<, GLib::UTF8.collate("い", "あ"))
267
275
  assert_equal(0, GLib::UTF8.collate("あ", "あ"))
268
276
  end
269
277
 
270
278
  def test_utf8_collate_key
271
- only_glib_version(2, 16, 0)
272
279
  assert_operator(0, :>,
273
280
  GLib::UTF8.collate_key("あ") <=>
274
281
  GLib::UTF8.collate_key("い"))
@@ -340,20 +347,17 @@ class TestGLibUnicode < Test::Unit::TestCase
340
347
  end
341
348
 
342
349
  def test_unichar_combining_class
343
- only_glib_version(2, 14, 0)
344
350
  assert_equal(0, GLib::UniChar.combining_class(unichar("a")))
345
351
  assert_equal(230, GLib::UniChar.combining_class(unichar("́")))
346
352
  end
347
353
 
348
354
  def test_unichar_mark?
349
- only_glib_version(2, 14, 0)
350
355
  assert(!GLib::UniChar.mark?(unichar("a")))
351
356
  assert(!GLib::UniChar.mark?(0x200E)) # LEFT-TO-RIGHT MARK
352
357
  assert(GLib::UniChar.mark?(0x1DC3)) # COMBINING SUSPENSION MARK
353
358
  end
354
359
 
355
360
  def test_unichar_zero_width?
356
- only_glib_version(2, 14, 0)
357
361
  assert(!GLib::UniChar.zero_width?(unichar("a")))
358
362
  assert(GLib::UniChar.zero_width?(0x200B)) # ZERO WIDTH SPACE
359
363
  end