glib2 3.0.7 → 3.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -122,12 +122,14 @@ rbgobj_gvalue_to_rvalue(const GValue* value)
122
122
  return func(value);
123
123
  }
124
124
  }
125
+ #if GLIB_CHECK_VERSION(2, 26, 0)
125
126
  case G_TYPE_VARIANT:
126
127
  {
127
128
  GVariant *variant = g_value_peek_pointer(value);
128
129
  rvalue = rbg_variant_to_ruby(variant);
129
130
  return rvalue;
130
131
  }
132
+ #endif
131
133
  default:
132
134
  if (!rbgobj_convert_gvalue2rvalue(fundamental_type, value, &rvalue)) {
133
135
  GValueToRValueFunc func;
@@ -308,7 +310,11 @@ rbgobj_rvalue_to_gvalue(VALUE val, GValue* result)
308
310
  return;
309
311
  }
310
312
  }
311
-
313
+ #if GLIB_CHECK_VERSION(2, 26, 0)
314
+ case G_TYPE_VARIANT:
315
+ g_value_set_variant(result, rbg_variant_from_ruby(val));
316
+ break;
317
+ #endif
312
318
  default:
313
319
  if (!rbgobj_convert_rvalue2gvalue(fundamental_type, val, result)) {
314
320
  RValueToGValueFunc func =
@@ -152,6 +152,8 @@ G_GNUC_INTERNAL void Init_glib_keyfile(void);
152
152
  G_GNUC_INTERNAL void Init_glib_bookmark_file(void);
153
153
  G_GNUC_INTERNAL void Init_glib_variant_type(void);
154
154
  G_GNUC_INTERNAL void Init_glib_variant(void);
155
+ G_GNUC_INTERNAL void Init_glib_regex(void);
156
+ G_GNUC_INTERNAL void Init_glib_matchinfo(void);
155
157
 
156
158
  G_GNUC_INTERNAL void Init_gobject_convert(void);
157
159
  G_GNUC_INTERNAL void Init_gobject_gtype(void);
@@ -201,6 +201,13 @@ rbg_name_to_nick(const gchar *name)
201
201
  return nick;
202
202
  }
203
203
 
204
+ void *
205
+ rbg_memzero(void *pointer, size_t size)
206
+ {
207
+ memset(pointer, 0, size);
208
+ return pointer;
209
+ }
210
+
204
211
  void
205
212
  Init_gutil(void)
206
213
  {
@@ -109,6 +109,8 @@ extern GSource *rbg_interrupt_source_new(void);
109
109
 
110
110
  extern gchar *rbg_name_to_nick(const gchar *name);
111
111
 
112
+ extern void *rbg_memzero(void *poitner, size_t size);
113
+
112
114
  /*< protected >*/
113
115
  RUBY_GLIB2_VAR ID rbgutil_id_module_eval;
114
116
  extern void rbgutil_glibid_r2g_func(VALUE from, GValue* to);
@@ -1,4 +1,4 @@
1
- # Copyright (C) 2005-2015 Ruby-GNOME2 Project Team
1
+ # Copyright (C) 2005-2016 Ruby-GNOME2 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
@@ -241,6 +241,7 @@ GLib::Log.set_log_domain(GLib::Thread::LOG_DOMAIN)
241
241
  GLib::Log.set_log_domain(GLib::Module::LOG_DOMAIN)
242
242
 
243
243
  require 'glib2/version'
244
+ require "glib2/regex"
244
245
  =begin
245
246
  Don't we need this?
246
247
  ObjectSpace.define_finalizer(GLib) {
@@ -0,0 +1,29 @@
1
+ # Copyright (C) 2016 Ruby-GNOME2 Project Team
2
+ #
3
+ # This library is free software; you can redistribute it and/or
4
+ # modify it under the terms of the GNU Lesser General Public
5
+ # License as published by the Free Software Foundation; either
6
+ # version 2.1 of the License, or (at your option) any later version.
7
+ #
8
+ # This library is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
+ # Lesser General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU Lesser General Public
14
+ # License along with this library; if not, write to the Free Software
15
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
+
17
+ module GLib
18
+ class Regex
19
+ class << self
20
+ def match?(pattern, string, options={})
21
+ new(pattern, options).match(string, options).matches?
22
+ end
23
+
24
+ def split(pattern, string, options={})
25
+ new(pattern, options).split(string, options)
26
+ end
27
+ end
28
+ end
29
+ end
@@ -123,7 +123,8 @@ module GNOME2
123
123
  :need_autogen,
124
124
  :need_autoreconf,
125
125
  :build_concurrently,
126
- :use_cc_environment_variable)
126
+ :use_cc_environment_variable,
127
+ :gobject_introspection_compiler_split_args)
127
128
  def initialize(properties)
128
129
  super()
129
130
  properties.each do |key, value|
@@ -178,6 +179,10 @@ module GNOME2
178
179
  def use_cc_environment_variable?
179
180
  use_cc_environment_variable.nil? ? true : use_cc_environment_variable
180
181
  end
182
+
183
+ def gobject_introspection_compiler_split_args?
184
+ gobject_introspection_compiler_split_args
185
+ end
181
186
  end
182
187
 
183
188
  class NativeConfiguration < Struct.new(:build,
@@ -119,7 +119,7 @@ module GNOME2
119
119
  s.author = @author
120
120
  s.email = @email
121
121
  s.homepage = @homepage
122
- s.licenses = ["LGPLv2.1 or later"]
122
+ s.licenses = ["LGPLv2.1+"]
123
123
  s.version = version
124
124
  extensions = FileList["ext/#{@name}/extconf.rb"]
125
125
  extensions.existing!
@@ -126,6 +126,15 @@ module GNOME2
126
126
  end
127
127
  end
128
128
 
129
+ def build_arch
130
+ case build_architecture
131
+ when "x86"
132
+ "i686"
133
+ when "x64"
134
+ "x86_64"
135
+ end
136
+ end
137
+
129
138
  def build_architecture
130
139
  ENV["RUBY_GNOME2_BUILD_ARCHITECTURE"] || "x86"
131
140
  end
@@ -120,7 +120,7 @@ class GNOME2WindowsBinaryBuildTask
120
120
  if package.windows.use_cc_environment_variable?
121
121
  common_make_args << cc_env(package)
122
122
  end
123
- add_gobject_introspection_make_args(common_make_args)
123
+ add_gobject_introspection_make_args(package, common_make_args)
124
124
  build_make_args = common_make_args.dup
125
125
  install_make_args = common_make_args.dup
126
126
  if package.windows.build_concurrently?
@@ -128,6 +128,9 @@ class GNOME2WindowsBinaryBuildTask
128
128
  build_make_args << "-j#{make_n_jobs}" if make_n_jobs
129
129
  end
130
130
  ENV["GREP_OPTIONS"] = "--text"
131
+ # ENV["GI_SCANNER_DEBUG"] = "save-temps"
132
+ # build_make_args << "--debug"
133
+ # build_make_args << "V=1"
131
134
  sh("nice", "make", *build_make_args) or exit(false)
132
135
  sh("make", "install", *install_make_args) or exit(false)
133
136
 
@@ -152,9 +155,10 @@ class GNOME2WindowsBinaryBuildTask
152
155
 
153
156
  def configure(package)
154
157
  sh("./autogen.sh") if package.windows.need_autogen?
155
- sh("autoreconf --install") if package.windows.need_autoreconf?
158
+ sh("autoreconf", "--install", "--force") if package.windows.need_autoreconf?
156
159
  sh("./configure",
157
160
  cc_env(package),
161
+ dlltool_env,
158
162
  "CPPFLAGS=#{cppflags(package)}",
159
163
  "LDFLAGS=#{ldflags(package)}",
160
164
  "--prefix=#{dist_dir}",
@@ -177,6 +181,10 @@ class GNOME2WindowsBinaryBuildTask
177
181
  "CC=#{cc(package)}"
178
182
  end
179
183
 
184
+ def dlltool_env
185
+ "DLLTOOL=#{dlltool}"
186
+ end
187
+
180
188
  def build_packages
181
189
  packages = @package.external_packages.select do |package|
182
190
  package.windows.build?
@@ -241,6 +249,10 @@ class GNOME2WindowsBinaryBuildTask
241
249
  cxx_command_line.compact.join(" ")
242
250
  end
243
251
 
252
+ def dlltool
253
+ "#{@package.windows.build_host}-dlltool"
254
+ end
255
+
244
256
  def cppflags(package)
245
257
  include_paths = package.windows.include_paths
246
258
  if @package.windows.build_dependencies.include?("glib2")
@@ -282,7 +294,7 @@ class GNOME2WindowsBinaryBuildTask
282
294
  paths
283
295
  end
284
296
 
285
- def add_gobject_introspection_make_args(common_make_args)
297
+ def add_gobject_introspection_make_args(package, common_make_args)
286
298
  unless @package.windows.build_dependencies.include?("gobject-introspection")
287
299
  return
288
300
  end
@@ -299,21 +311,33 @@ class GNOME2WindowsBinaryBuildTask
299
311
  ]
300
312
  dependencies += @package.windows.gobject_introspection_dependencies
301
313
 
302
- compute_base_dir = lambda do |package|
303
- "#{@package.project_root_dir}/#{package}/vendor/local"
314
+ compute_base_dir = lambda do |dependent_package|
315
+ "#{@package.project_root_dir}/#{dependent_package}/vendor/local"
304
316
  end
305
317
 
306
318
  gi_base_dir = compute_base_dir.call("gobject-introspection")
307
319
  introspection_compiler = "INTROSPECTION_COMPILER="
308
320
  introspection_compiler << "#{gi_base_dir}/bin/g-ir-compiler.exe"
309
- dependencies.each do |package|
310
- gir_dir = "#{compute_base_dir.call(package)}/share/gir-1.0"
311
- introspection_compiler << " --includedir=#{gir_dir}"
321
+ introspection_compiler_args = ""
322
+ dependencies.each do |dependent_package|
323
+ gir_dir = "#{compute_base_dir.call(dependent_package)}/share/gir-1.0"
324
+ introspection_compiler_args << " --includedir=#{gir_dir}"
325
+ end
326
+ if package.windows.gobject_introspection_compiler_split_args?
327
+ common_make_args << introspection_compiler
328
+ common_make_args <<
329
+ "INTROSPECTION_COMPILER_ARGS=#{introspection_compiler_args}"
330
+ common_make_args <<
331
+ "INTROSPECTION_COMPILER_OPTS=#{introspection_compiler_args}"
332
+ else
333
+ introspection_compiler << " #{introspection_compiler_args}"
334
+ common_make_args << introspection_compiler
312
335
  end
313
- common_make_args << introspection_compiler
314
336
 
315
- data_dirs = dependencies.collect do |package|
316
- "#{compute_base_dir.call(package)}/share"
337
+ common_make_args << dlltool_env
338
+
339
+ data_dirs = dependencies.collect do |dependent_package|
340
+ "#{compute_base_dir.call(dependent_package)}/share"
317
341
  end
318
342
  common_make_args << "XDG_DATA_DIRS=#{data_dirs.join(File::PATH_SEPARATOR)}"
319
343
  end
@@ -503,6 +503,8 @@ def package_platform
503
503
  :redhat
504
504
  elsif File.exist?("/etc/SuSE-release")
505
505
  :suse
506
+ elsif File.exist?("/etc/altlinux-release")
507
+ :altlinux
506
508
  elsif find_executable("pacman")
507
509
  :arch
508
510
  elsif find_executable("brew")
@@ -536,7 +538,7 @@ def install_missing_native_package(native_package_info)
536
538
  package_command_line = [package_name, *options].join(" ")
537
539
  need_super_user_priviledge = true
538
540
  case platform
539
- when :debian
541
+ when :debian, :altlinux
540
542
  install_command = "apt-get install -V -y #{package_command_line}"
541
543
  when :fedora, :redhat
542
544
  install_command = "yum install -y #{package_command_line}"
@@ -0,0 +1,113 @@
1
+ # Copyright (C) 2015-2016 Ruby-GNOME2 Project Team
2
+ #
3
+ # This library is free software; you can redistribute it and/or
4
+ # modify it under the terms of the GNU Lesser General Public
5
+ # License as published by the Free Software Foundation; either
6
+ # version 2.1 of the License, or (at your option) any later version.
7
+ #
8
+ # This library is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
+ # Lesser General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU Lesser General Public
14
+ # License along with this library; if not, write to the Free Software
15
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
+
17
+ class TestMatchInfo < Test::Unit::TestCase
18
+ def test_string
19
+ regex = GLib::Regex.new("[A-Z]+")
20
+ match_info = regex.match("abc def")
21
+ assert_equal("abc def", match_info.string)
22
+ end
23
+
24
+ def test_regex
25
+ regex = GLib::Regex.new("[A-Z]+")
26
+ match_info = regex.match("abc def")
27
+ assert_equal("[A-Z]+", match_info.regex.pattern)
28
+ end
29
+
30
+ def test_partial_match
31
+ flags = GLib::RegexMatchFlags::PARTIAL_SOFT
32
+ regex = GLib::Regex.new("jan")
33
+ match_info = regex.match_all("ja", :match_options => flags)
34
+ assert do
35
+ !match_info.matches?
36
+ end
37
+ assert do
38
+ match_info.partial_match?
39
+ end
40
+ end
41
+
42
+ sub_test_case "fetch" do
43
+ test "Integer" do
44
+ regex = GLib::Regex.new("[A-Z]+")
45
+ match_info = regex.match_all("abc DEF ghi JKL mnop")
46
+ assert_equal("DEF", match_info.fetch(0))
47
+ assert_equal("DE", match_info.fetch(1))
48
+ end
49
+
50
+ test "String" do
51
+ regex = GLib::Regex.new("(?<a_name>fo+)")
52
+ match_info = regex.match("tatafoo")
53
+ assert_equal("foo", match_info.fetch("a_name"))
54
+ end
55
+
56
+ test "Symbol" do
57
+ regex = GLib::Regex.new("(?<a_name>fo+)")
58
+ match_info = regex.match("tatafoo")
59
+ assert_equal("foo", match_info.fetch(:a_name))
60
+ end
61
+
62
+ test "[]" do
63
+ regex = GLib::Regex.new("(?<a_name>fo+)")
64
+ match_info = regex.match("tatafoo")
65
+ assert_equal("foo", match_info[:a_name])
66
+ end
67
+ end
68
+
69
+ sub_test_case "fetch_pos" do
70
+ test "Integer" do
71
+ regex = GLib::Regex.new("[A-Z]+")
72
+ match_info = regex.match_all("abc DEF ghi JKL mnop")
73
+ assert_equal([4, 7], match_info.fetch_pos(0))
74
+ assert_equal([4, 6], match_info.fetch_pos(1))
75
+ end
76
+
77
+ test "String" do
78
+ regex = GLib::Regex.new("(?<a_name>fo+)")
79
+ match_info = regex.match("tatafoo")
80
+ assert_equal([4, 7], match_info.fetch_pos("a_name"))
81
+ end
82
+
83
+ test "Symbol" do
84
+ regex = GLib::Regex.new("(?<a_name>fo+)")
85
+ match_info = regex.match("tatafoo")
86
+ assert_equal([4, 7], match_info.fetch_pos(:a_name))
87
+ end
88
+ end
89
+
90
+ def test_fetch_all
91
+ regex = GLib::Regex.new("[A-Z]+")
92
+ str = "abc DEF ghi JKL mnop"
93
+ match_info = regex.match_all(str)
94
+ assert_equal(["DEF", "DE", "D"], match_info.fetch_all)
95
+ end
96
+
97
+ def test_next
98
+ regex = GLib::Regex.new("[A-Z]+")
99
+ str = "abc DEF ghi JKL mnop"
100
+ match_info = regex.match(str)
101
+ assert_equal("DEF", match_info[0])
102
+ assert {match_info.next}
103
+ assert_equal("JKL", match_info[0])
104
+ assert {!match_info.next}
105
+ end
106
+
107
+ def test_expand_references
108
+ regex = GLib::Regex.new("a(?P<G>.)c")
109
+ match_info = regex.match("xabcy")
110
+ expanded_string = match_info.expand_references("X\\g<G>X")
111
+ assert_equal("XbX", expanded_string)
112
+ end
113
+ end
@@ -0,0 +1,320 @@
1
+ # Copyright (C) 2015-2016 Ruby-GNOME2 Project Team
2
+ #
3
+ # This library is free software; you can redistribute it and/or
4
+ # modify it under the terms of the GNU Lesser General Public
5
+ # License as published by the Free Software Foundation; either
6
+ # version 2.1 of the License, or (at your option) any later version.
7
+ #
8
+ # This library is distributed in the hope that it will be useful,
9
+ # but WITHOUT ANY WARRANTY; without even the implied warranty of
10
+ # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
+ # Lesser General Public License for more details.
12
+ #
13
+ # You should have received a copy of the GNU Lesser General Public
14
+ # License along with this library; if not, write to the Free Software
15
+ # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16
+
17
+ class TestRegex < Test::Unit::TestCase
18
+ def test_enum_match_flags
19
+ assert_const_defined(GLib, :RegexMatchFlags)
20
+ assert_kind_of(GLib::RegexMatchFlags, GLib::RegexMatchFlags::PARTIAL_HARD)
21
+ end
22
+
23
+ def test_enum_compile_flags
24
+ assert_const_defined(GLib, :RegexCompileFlags)
25
+ assert_kind_of(GLib::RegexCompileFlags, GLib::RegexCompileFlags::CASELESS)
26
+ end
27
+
28
+ def test_pattern
29
+ regex = GLib::Regex.new("to??")
30
+ assert_equal("to??", regex.pattern)
31
+ end
32
+
33
+ def test_compile_flags
34
+ flags = GLib::RegexCompileFlags::CASELESS
35
+ regex = GLib::Regex.new("to??", :compile_options => flags)
36
+ assert_equal(flags, regex.compile_flags)
37
+ end
38
+
39
+ def test_match_flags
40
+ flags = GLib::RegexMatchFlags::PARTIAL_HARD
41
+ regex = GLib::Regex.new("to??", :match_options => flags)
42
+ assert_equal(flags, regex.match_flags)
43
+ end
44
+
45
+ sub_test_case "split" do
46
+ test "no options" do
47
+ regex = GLib::Regex.new("\s")
48
+ string_to_split = "a bc"
49
+ splited_strings = regex.split(string_to_split)
50
+ assert_equal(["a", "bc"], splited_strings)
51
+ end
52
+
53
+ test "start_position" do
54
+ regex = GLib::Regex.new("\s")
55
+ string_to_split = "a bc"
56
+ splited_strings = regex.split(string_to_split, :start_position => 2)
57
+ assert_equal(["bc"], splited_strings)
58
+ end
59
+
60
+ test "max_tokens" do
61
+ regex = GLib::Regex.new("\s")
62
+ string_to_split = "a bc de fg"
63
+ splited_strings = regex.split(string_to_split, :max_tokens => 2)
64
+ assert_equal(["a", "bc de fg"], splited_strings)
65
+ end
66
+
67
+ test "match_options" do
68
+ regex = GLib::Regex.new("a?b?")
69
+ string_to_split = "toto ab"
70
+ splited_strings = regex.split(string_to_split)
71
+ assert_equal(["t", "o", "t", "o", " "],
72
+ splited_strings)
73
+ splited_strings = regex.split(string_to_split,
74
+ :match_options => :notempty)
75
+ assert_equal(["toto ", ""], splited_strings)
76
+ end
77
+ end
78
+
79
+ sub_test_case "match" do
80
+ setup do
81
+ @regex = GLib::Regex.new("[A-Z]+")
82
+ end
83
+
84
+ test "no match no options" do
85
+ match_info = @regex.match("abc def")
86
+ assert do
87
+ not match_info.matches?
88
+ end
89
+ end
90
+
91
+ test "matched no options" do
92
+ match_info = @regex.match("abc DEF")
93
+ assert do
94
+ match_info.matches?
95
+ end
96
+ end
97
+
98
+ test "no match and start position option" do
99
+ match_info = @regex.match("abc def", :start_position => 4)
100
+ assert do
101
+ not match_info.matches?
102
+ end
103
+ end
104
+
105
+ test "matched and start position option" do
106
+ match_info = @regex.match("abc DEF", :start_position => 4)
107
+ assert do
108
+ match_info.matches?
109
+ end
110
+ end
111
+ end
112
+
113
+ sub_test_case "max_backref" do
114
+ test "none" do
115
+ regex = GLib::Regex.new("to?o")
116
+ assert_equal(0, regex.max_backref)
117
+ end
118
+
119
+ test "one" do
120
+ regex = GLib::Regex.new("(to(?)o)\\g1")
121
+ assert_equal(1, regex.max_backref)
122
+ end
123
+ end
124
+
125
+ sub_test_case "capture_count" do
126
+ test "none" do
127
+ regex = GLib::Regex.new("to?o")
128
+ assert_equal(0, regex.capture_count)
129
+ end
130
+
131
+ test "one" do
132
+ regex = GLib::Regex.new("(to(\?)o)")
133
+ assert_equal(1, regex.capture_count)
134
+ end
135
+
136
+ test "three" do
137
+ regex = GLib::Regex.new("((red|white) (king|queen))")
138
+ assert_equal(3, regex.capture_count)
139
+ end
140
+ end
141
+
142
+ sub_test_case "has_cr_or_lf" do
143
+ test "none" do
144
+ regex = GLib::Regex.new("to?o")
145
+ assert do
146
+ not regex.has_cr_or_lf?
147
+ end
148
+ end
149
+
150
+ test "both" do
151
+ regex = GLib::Regex.new("to\no")
152
+ assert do
153
+ regex.has_cr_or_lf?
154
+ end
155
+ end
156
+
157
+ test "cr" do
158
+ regex = GLib::Regex.new("to\rtiti")
159
+ assert do
160
+ regex.has_cr_or_lf?
161
+ end
162
+ end
163
+ end
164
+
165
+ sub_test_case "max_lookbehind" do
166
+ test "none" do
167
+ regex = GLib::Regex.new("to?o")
168
+ assert_equal(0, regex.max_lookbehind)
169
+ end
170
+
171
+ test "three" do
172
+ regex = GLib::Regex.new("(?<!foo)bar")
173
+ assert_equal(3, regex.max_lookbehind)
174
+ end
175
+ end
176
+
177
+ sub_test_case "string_number" do
178
+ test "none" do
179
+ regex = GLib::Regex.new("too")
180
+ assert_equal(-1, regex.string_number("a_name"))
181
+ end
182
+
183
+ test "one" do
184
+ regex = GLib::Regex.new("(?<a_name>foo)bar")
185
+ assert_equal(1, regex.string_number("a_name"))
186
+ end
187
+
188
+ test "two" do
189
+ regex = GLib::Regex.new("(?<another_name>foo)(?<a_name>bar)")
190
+ assert_equal(2, regex.string_number("a_name"))
191
+ end
192
+ end
193
+
194
+ def test_regex_escape_string
195
+ assert_equal("a\\.b\\*c", GLib::Regex.escape_string("a.b*c"))
196
+ end
197
+
198
+ sub_test_case "match?" do
199
+ test "true" do
200
+ assert do
201
+ GLib::Regex.match?("to", "tatota")
202
+ end
203
+ end
204
+
205
+ test "false" do
206
+ assert do
207
+ not GLib::Regex.match?("ti", "tatota")
208
+ end
209
+ end
210
+ end
211
+
212
+ sub_test_case "match_all" do
213
+ test "no match" do
214
+ regex = GLib::Regex.new("[A-Z]+")
215
+ assert do
216
+ not regex.match_all("abc def").matches?
217
+ end
218
+ end
219
+
220
+ test ":start_position" do
221
+ regex = GLib::Regex.new("[A-Z]")
222
+ assert do
223
+ regex.match_all("a B c", :start_position => 2).matches?
224
+ end
225
+ assert do
226
+ not regex.match_all("a B c", :start_position => 3).matches?
227
+ end
228
+ end
229
+
230
+ test "match all" do
231
+ regex = GLib::Regex.new("<.*>")
232
+ assert_equal(3, regex.match_all("<a> <b> <c>").match_count)
233
+ end
234
+ end
235
+
236
+ sub_test_case "split simple" do
237
+ test "no options" do
238
+ splited_strings = GLib::Regex.split("\s", "a bc")
239
+ assert_equal(["a", "bc"], splited_strings)
240
+ end
241
+
242
+ test "match_options" do
243
+ splited_strings = GLib::Regex.split("a?b?", "toto ab")
244
+ assert_equal(["t", "o", "t", "o", " "], splited_strings)
245
+
246
+ splited_strings = GLib::Regex.split("a?b?",
247
+ "toto ab",
248
+ :match_options => :notempty)
249
+ assert_equal(["toto ", ""], splited_strings)
250
+ end
251
+ end
252
+
253
+ sub_test_case "replace" do
254
+ test "simple" do
255
+ regex = GLib::Regex.new("\\s")
256
+ assert_equal("a_bc", regex.replace("a bc", "_"))
257
+ end
258
+
259
+ test "back reference" do
260
+ regex = GLib::Regex.new("\\s")
261
+ assert_equal("a_ _bc", regex.replace("a bc", "_\\0_"))
262
+ end
263
+
264
+ test "literal" do
265
+ regex = GLib::Regex.new("\\s")
266
+ assert_equal("a_\\0_bc",
267
+ regex.replace("a bc",
268
+ "_\\0_",
269
+ :literal => true))
270
+ end
271
+
272
+ sub_test_case "eval" do
273
+ test "all" do
274
+ regex = GLib::Regex.new("1|2|3|4")
275
+ modified_string = regex.replace(" 4 3 2 1") do |match_info|
276
+ "to"
277
+ end
278
+ assert_equal(" to to to to", modified_string)
279
+ end
280
+
281
+ test "break" do
282
+ regex = GLib::Regex.new("1|2|3|4")
283
+ modified_string = regex.replace(" 4 3 2 1") do |match_info|
284
+ break "to"
285
+ end
286
+ assert_equal(" to 3 2 1", modified_string)
287
+ end
288
+ end
289
+ end
290
+
291
+ sub_test_case "check_replacement" do
292
+ test "no references" do
293
+ assert_true(GLib::Regex.check_replacement("foo\\n"))
294
+ end
295
+
296
+ test "with references" do
297
+ assert_true(GLib::Regex.check_replacement("\\0\\1"))
298
+ end
299
+
300
+ test "invalid" do
301
+ assert_raise(GLib::Error) do
302
+ GLib::Regex.check_replacement("\\")
303
+ end
304
+ end
305
+ end
306
+
307
+ sub_test_case "have_reference?" do
308
+ test "no references" do
309
+ assert do
310
+ not GLib::Regex.have_reference?("foo\\n")
311
+ end
312
+ end
313
+
314
+ test "with references" do
315
+ assert do
316
+ GLib::Regex.have_reference?("\\0\\1")
317
+ end
318
+ end
319
+ end
320
+ end