glib2 3.3.9 → 3.4.4

Sign up to get free protection for your applications and to get access to all the features.
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