glib2 0.20.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.
- data/ChangeLog +3023 -0
- data/README +28 -0
- data/Rakefile +87 -0
- data/extconf.rb +61 -0
- data/sample/bookmarkfile.rb +66 -0
- data/sample/completion.rb +45 -0
- data/sample/idle.rb +41 -0
- data/sample/iochannel.rb +44 -0
- data/sample/keyfile.rb +62 -0
- data/sample/shell.rb +36 -0
- data/sample/spawn.rb +25 -0
- data/sample/timeout.rb +28 -0
- data/sample/timeout2.rb +35 -0
- data/sample/timer.rb +40 -0
- data/sample/type-register.rb +103 -0
- data/sample/type-register2.rb +104 -0
- data/sample/utils.rb +54 -0
- data/src/glib-enum-types.c +1032 -0
- data/src/glib-enum-types.h +140 -0
- data/src/lib/glib-mkenums.rb +199 -0
- data/src/lib/glib2.rb +220 -0
- data/src/lib/mkmf-gnome2.rb +390 -0
- data/src/lib/pkg-config.rb +137 -0
- data/src/rbgcompat.h +30 -0
- data/src/rbglib.c +320 -0
- data/src/rbglib.h +96 -0
- data/src/rbglib_bookmarkfile.c +595 -0
- data/src/rbglib_completion.c +192 -0
- data/src/rbglib_convert.c +195 -0
- data/src/rbglib_error.c +95 -0
- data/src/rbglib_fileutils.c +83 -0
- data/src/rbglib_i18n.c +44 -0
- data/src/rbglib_int64.c +157 -0
- data/src/rbglib_iochannel.c +883 -0
- data/src/rbglib_keyfile.c +846 -0
- data/src/rbglib_maincontext.c +917 -0
- data/src/rbglib_mainloop.c +87 -0
- data/src/rbglib_messages.c +150 -0
- data/src/rbglib_pollfd.c +111 -0
- data/src/rbglib_shell.c +68 -0
- data/src/rbglib_source.c +190 -0
- data/src/rbglib_spawn.c +345 -0
- data/src/rbglib_threads.c +51 -0
- data/src/rbglib_timer.c +127 -0
- data/src/rbglib_unicode.c +611 -0
- data/src/rbglib_utils.c +386 -0
- data/src/rbglib_win32.c +136 -0
- data/src/rbgobj_boxed.c +251 -0
- data/src/rbgobj_closure.c +337 -0
- data/src/rbgobj_convert.c +167 -0
- data/src/rbgobj_enums.c +961 -0
- data/src/rbgobj_fundamental.c +30 -0
- data/src/rbgobj_object.c +892 -0
- data/src/rbgobj_param.c +390 -0
- data/src/rbgobj_paramspecs.c +305 -0
- data/src/rbgobj_signal.c +963 -0
- data/src/rbgobj_strv.c +61 -0
- data/src/rbgobj_type.c +851 -0
- data/src/rbgobj_typeinstance.c +121 -0
- data/src/rbgobj_typeinterface.c +148 -0
- data/src/rbgobj_typemodule.c +66 -0
- data/src/rbgobj_typeplugin.c +49 -0
- data/src/rbgobj_value.c +313 -0
- data/src/rbgobj_valuearray.c +59 -0
- data/src/rbgobj_valuetypes.c +298 -0
- data/src/rbgobject.c +406 -0
- data/src/rbgobject.h +265 -0
- data/src/rbgprivate.h +88 -0
- data/src/rbgutil.c +222 -0
- data/src/rbgutil.h +82 -0
- data/src/rbgutil_callback.c +231 -0
- data/test/glib-test-init.rb +6 -0
- data/test/glib-test-utils.rb +12 -0
- data/test/run-test.rb +25 -0
- data/test/test_enum.rb +99 -0
- data/test/test_file_utils.rb +15 -0
- data/test/test_glib2.rb +120 -0
- data/test/test_iochannel.rb +275 -0
- data/test/test_key_file.rb +38 -0
- data/test/test_mkenums.rb +25 -0
- data/test/test_signal.rb +20 -0
- data/test/test_timeout.rb +28 -0
- data/test/test_unicode.rb +369 -0
- data/test/test_utils.rb +37 -0
- data/test/test_win32.rb +13 -0
- metadata +165 -0
@@ -0,0 +1,25 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
require 'glib-mkenums'
|
4
|
+
|
5
|
+
class TestGLibMkEnums < Test::Unit::TestCase
|
6
|
+
def test_parse_flags
|
7
|
+
source = <<-EOS
|
8
|
+
G_MARKUP_COLLECT_INVALID,
|
9
|
+
G_MARKUP_COLLECT_STRING,
|
10
|
+
G_MARKUP_COLLECT_STRDUP,
|
11
|
+
G_MARKUP_COLLECT_BOOLEAN,
|
12
|
+
G_MARKUP_COLLECT_TRISTATE,
|
13
|
+
|
14
|
+
G_MARKUP_COLLECT_OPTIONAL = (1 << 16)
|
15
|
+
EOS
|
16
|
+
enum = GLib::EnumDefinition.new("GMarkupCollectType", source, 'G_TYPE_')
|
17
|
+
assert_equal([["G_MARKUP_COLLECT_INVALID", "invalid"],
|
18
|
+
["G_MARKUP_COLLECT_STRING", "string"],
|
19
|
+
["G_MARKUP_COLLECT_STRDUP", "strdup"],
|
20
|
+
["G_MARKUP_COLLECT_BOOLEAN", "boolean"],
|
21
|
+
["G_MARKUP_COLLECT_TRISTATE", "tristate"],
|
22
|
+
["G_MARKUP_COLLECT_OPTIONAL", "optional"]],
|
23
|
+
enum.constants)
|
24
|
+
end
|
25
|
+
end
|
data/test/test_signal.rb
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
class TestSignal < Test::Unit::TestCase
|
4
|
+
def test_signal_flags
|
5
|
+
assert_const_defined(GLib, :SignalFlags)
|
6
|
+
assert_kind_of(GLib::SignalFlags, GLib::Signal::RUN_FIRST)
|
7
|
+
assert_equal(GLib::SignalFlags::MASK, GLib::Signal::FLAGS_MASK)
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_connect_flags
|
11
|
+
assert_const_defined(GLib, :ConnectFlags)
|
12
|
+
assert_kind_of(GLib::ConnectFlags, GLib::Signal::CONNECT_AFTER)
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_signal_match_type
|
16
|
+
assert_const_defined(GLib, :SignalMatchType)
|
17
|
+
assert_kind_of(GLib::SignalMatchType, GLib::Signal::MATCH_ID)
|
18
|
+
assert_equal(GLib::SignalMatchType::MASK, GLib::Signal::MATCH_MASK)
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
class TestGLibTimeout < Test::Unit::TestCase
|
4
|
+
include GLibTestUtils
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@id = nil
|
8
|
+
end
|
9
|
+
|
10
|
+
def teardown
|
11
|
+
GLib::Source.remove(@id) if @id
|
12
|
+
end
|
13
|
+
|
14
|
+
def test_timeout_add_priority
|
15
|
+
priority = GLib::PRIORITY_HIGH
|
16
|
+
@id = GLib::Timeout.add(10, priority)
|
17
|
+
source = GLib::MainContext.default.find_source(@id)
|
18
|
+
assert_equal(priority, source.priority)
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_timeout_add_seconds_priority
|
22
|
+
only_glib_version(2, 14, 0)
|
23
|
+
priority = GLib::PRIORITY_HIGH
|
24
|
+
@id = GLib::Timeout.add_seconds(10, priority)
|
25
|
+
source = GLib::MainContext.default.find_source(@id)
|
26
|
+
assert_equal(priority, source.priority)
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,369 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
class TestGLibUnicode < Test::Unit::TestCase
|
4
|
+
include GLibTestUtils
|
5
|
+
|
6
|
+
def test_gunicode_type
|
7
|
+
assert_nothing_raised do
|
8
|
+
GLib::Unicode::CONTROL
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def test_gunicode_break_type
|
13
|
+
assert_nothing_raised do
|
14
|
+
GLib::Unicode::BREAK_MANDATORY
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def test_unichar_alnum?
|
19
|
+
assert(GLib::UniChar.alnum?(unichar("a")))
|
20
|
+
assert(GLib::UniChar.alnum?(unichar("1")))
|
21
|
+
assert(!GLib::UniChar.alnum?(unichar("!")))
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_unichar_alpha?
|
25
|
+
assert(GLib::UniChar.alpha?(unichar("a")))
|
26
|
+
assert(GLib::UniChar.alpha?(unichar("A")))
|
27
|
+
assert(!GLib::UniChar.alpha?(unichar("1")))
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_unichar_cntrl?
|
31
|
+
assert(GLib::UniChar.cntrl?(unichar("\t")))
|
32
|
+
assert(!GLib::UniChar.cntrl?(unichar("\h")))
|
33
|
+
assert(!GLib::UniChar.cntrl?(unichar("a")))
|
34
|
+
assert(!GLib::UniChar.cntrl?(unichar("1")))
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_unichar_digit?
|
38
|
+
assert(GLib::UniChar.digit?(unichar("1")))
|
39
|
+
assert(!GLib::UniChar.digit?(unichar("a")))
|
40
|
+
end
|
41
|
+
|
42
|
+
def test_unichar_graph?
|
43
|
+
assert(GLib::UniChar.graph?(unichar("a")))
|
44
|
+
assert(!GLib::UniChar.graph?(unichar(" ")))
|
45
|
+
assert(!GLib::UniChar.graph?(unichar("\t")))
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_unichar_lower?
|
49
|
+
assert(GLib::UniChar.lower?(unichar("a")))
|
50
|
+
assert(!GLib::UniChar.lower?(unichar("A")))
|
51
|
+
assert(!GLib::UniChar.lower?(unichar("1")))
|
52
|
+
end
|
53
|
+
|
54
|
+
def test_unichar_print?
|
55
|
+
assert(GLib::UniChar.print?(unichar("a")))
|
56
|
+
assert(GLib::UniChar.print?(unichar(" ")))
|
57
|
+
assert(!GLib::UniChar.print?(unichar("\t")))
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_unichar_punct?
|
61
|
+
assert(GLib::UniChar.punct?(unichar(",")))
|
62
|
+
assert(GLib::UniChar.punct?(unichar(".")))
|
63
|
+
assert(!GLib::UniChar.punct?(unichar("a")))
|
64
|
+
assert(!GLib::UniChar.punct?(unichar("\t")))
|
65
|
+
end
|
66
|
+
|
67
|
+
def test_unichar_space?
|
68
|
+
assert(GLib::UniChar.space?(unichar(" ")))
|
69
|
+
assert(GLib::UniChar.space?(unichar("\t")))
|
70
|
+
assert(GLib::UniChar.space?(unichar("\r")))
|
71
|
+
assert(GLib::UniChar.space?(unichar("\n")))
|
72
|
+
assert(!GLib::UniChar.space?(unichar("a")))
|
73
|
+
end
|
74
|
+
|
75
|
+
def test_unichar_upper?
|
76
|
+
assert(GLib::UniChar.upper?(unichar("A")))
|
77
|
+
assert(!GLib::UniChar.upper?(unichar("a")))
|
78
|
+
assert(!GLib::UniChar.upper?(unichar("1")))
|
79
|
+
end
|
80
|
+
|
81
|
+
def test_unichar_xdigit?
|
82
|
+
assert(GLib::UniChar.xdigit?(unichar("1")))
|
83
|
+
assert(GLib::UniChar.xdigit?(unichar("a")))
|
84
|
+
assert(GLib::UniChar.xdigit?(unichar("A")))
|
85
|
+
assert(GLib::UniChar.xdigit?(unichar("F")))
|
86
|
+
assert(!GLib::UniChar.xdigit?(unichar("X")))
|
87
|
+
end
|
88
|
+
|
89
|
+
def test_unichar_title?
|
90
|
+
end
|
91
|
+
|
92
|
+
def test_unichar_defined?
|
93
|
+
end
|
94
|
+
|
95
|
+
def test_unichar_wide?
|
96
|
+
assert(GLib::UniChar.wide?(unichar("あ")))
|
97
|
+
assert(GLib::UniChar.wide?(unichar("A")))
|
98
|
+
assert(!GLib::UniChar.wide?(unichar("a")))
|
99
|
+
end
|
100
|
+
|
101
|
+
def test_unichar_wide_cjk?
|
102
|
+
only_glib_version(2, 12, 0)
|
103
|
+
assert(GLib::UniChar.wide_cjk?(unichar("あ")))
|
104
|
+
assert(GLib::UniChar.wide_cjk?(0xD55C)) # HANGUL SYLLABLE HAN
|
105
|
+
assert(!GLib::UniChar.wide_cjk?(unichar("a")))
|
106
|
+
end
|
107
|
+
|
108
|
+
def test_unichar_to_upper
|
109
|
+
assert_equal(unichar("A"), GLib::UniChar.to_upper(unichar("a")))
|
110
|
+
assert_equal(unichar("A"), GLib::UniChar.to_upper(unichar("A")))
|
111
|
+
assert_equal(unichar("*"), GLib::UniChar.to_title(unichar("*")))
|
112
|
+
end
|
113
|
+
|
114
|
+
def test_unichar_to_lower
|
115
|
+
assert_equal(unichar("a"), GLib::UniChar.to_lower(unichar("A")))
|
116
|
+
assert_equal(unichar("a"), GLib::UniChar.to_lower(unichar("a")))
|
117
|
+
assert_equal(unichar("*"), GLib::UniChar.to_title(unichar("*")))
|
118
|
+
end
|
119
|
+
|
120
|
+
def test_unichar_to_title
|
121
|
+
assert_equal(unichar("A"), GLib::UniChar.to_title(unichar("a")))
|
122
|
+
assert_equal(unichar("A"), GLib::UniChar.to_title(unichar("A")))
|
123
|
+
assert_equal(unichar("*"), GLib::UniChar.to_title(unichar("*")))
|
124
|
+
end
|
125
|
+
|
126
|
+
def test_unichar_digit_value
|
127
|
+
assert_equal(0, GLib::UniChar.digit_value(unichar("0")))
|
128
|
+
assert_equal(9, GLib::UniChar.digit_value(unichar("9")))
|
129
|
+
assert_equal(-1, GLib::UniChar.digit_value(unichar("a")))
|
130
|
+
end
|
131
|
+
|
132
|
+
def test_unichar_xdigit_value
|
133
|
+
assert_equal(0, GLib::UniChar.xdigit_value(unichar("0")))
|
134
|
+
assert_equal(9, GLib::UniChar.xdigit_value(unichar("9")))
|
135
|
+
assert_equal(10, GLib::UniChar.xdigit_value(unichar("a")))
|
136
|
+
assert_equal(15, GLib::UniChar.xdigit_value(unichar("F")))
|
137
|
+
assert_equal(-1, GLib::UniChar.xdigit_value(unichar("g")))
|
138
|
+
end
|
139
|
+
|
140
|
+
def test_unichar_type
|
141
|
+
assert_equal(GLib::Unicode::DECIMAL_NUMBER,
|
142
|
+
GLib::UniChar.type(unichar("0")))
|
143
|
+
assert_equal(GLib::Unicode::LOWERCASE_LETTER,
|
144
|
+
GLib::UniChar.type(unichar("a")))
|
145
|
+
assert_equal(GLib::Unicode::UPPERCASE_LETTER,
|
146
|
+
GLib::UniChar.type(unichar("A")))
|
147
|
+
end
|
148
|
+
|
149
|
+
def test_unichar_break_type
|
150
|
+
assert_equal(GLib::Unicode::BREAK_HYPHEN,
|
151
|
+
GLib::UniChar.break_type(unichar("-")))
|
152
|
+
assert_equal(GLib::Unicode::BREAK_NUMERIC,
|
153
|
+
GLib::UniChar.break_type(unichar("0")))
|
154
|
+
end
|
155
|
+
|
156
|
+
def test_unicode_canonical_ordering
|
157
|
+
require_uconv
|
158
|
+
original = [unichar("a"), 0x0308, 0x0323,
|
159
|
+
unichar("e"), 0x0304, 0x0301, 0x0323].pack("U*")
|
160
|
+
expected = [unichar("a"), 0x0323, 0x0308,
|
161
|
+
unichar("e"), 0x0323, 0x0304, 0x0301].pack("U*")
|
162
|
+
assert_equal(Uconv.u8tou4(expected),
|
163
|
+
GLib::Unicode.canonical_ordering(Uconv.u8tou4(original)))
|
164
|
+
end
|
165
|
+
|
166
|
+
def test_unicode_canonical_decomposition
|
167
|
+
require_uconv
|
168
|
+
a_with_acute = 0x00E1
|
169
|
+
expected = [unichar("a"), 0x0301].pack("U*")
|
170
|
+
assert_equal(Uconv.u8tou4(expected),
|
171
|
+
GLib::Unicode.canonical_decomposition(a_with_acute))
|
172
|
+
|
173
|
+
hiragana_ga = 0x304C
|
174
|
+
hiragana_ka = 0x304B
|
175
|
+
expected = [hiragana_ka, 0x3099].pack("U*")
|
176
|
+
assert_equal(Uconv.u8tou4(expected),
|
177
|
+
GLib::Unicode.canonical_decomposition(hiragana_ga))
|
178
|
+
end
|
179
|
+
|
180
|
+
def test_unichar_get_mirror_char
|
181
|
+
assert_equal(unichar("("), GLib::UniChar.get_mirror_char(unichar(")")))
|
182
|
+
assert_equal(unichar(")"), GLib::UniChar.get_mirror_char(unichar("(")))
|
183
|
+
assert_equal(unichar("x"), GLib::UniChar.get_mirror_char(unichar("x")))
|
184
|
+
end
|
185
|
+
|
186
|
+
def test_unichar_get_script
|
187
|
+
only_glib_version(2, 14, 0)
|
188
|
+
assert_equal(GLib::Unicode::SCRIPT_HIRAGANA,
|
189
|
+
GLib::UniChar.get_script(unichar("あ")))
|
190
|
+
end
|
191
|
+
|
192
|
+
def test_utf8_get_char
|
193
|
+
require_uconv
|
194
|
+
assert_equal(Uconv.u8tou4("あ").unpack("L*")[0],
|
195
|
+
GLib::UTF8.get_char("あ"))
|
196
|
+
|
197
|
+
assert_equal(Uconv.u8tou4("あ").unpack("L*")[0],
|
198
|
+
GLib::UTF8.get_char("あ", true))
|
199
|
+
partial_input = "あ".unpack("c*")[0..-2].pack("c*")
|
200
|
+
assert_equal(-2, GLib::UTF8.get_char(partial_input, true))
|
201
|
+
invalid_input = "あ".unpack("c*")[2..-1].pack("c*")
|
202
|
+
assert_equal(-1, GLib::UTF8.get_char(invalid_input, true))
|
203
|
+
end
|
204
|
+
|
205
|
+
def test_utf8_size
|
206
|
+
assert_equal(1, GLib::UTF8.size("あ"))
|
207
|
+
assert_equal(2, GLib::UTF8.size("あい"))
|
208
|
+
end
|
209
|
+
|
210
|
+
def test_utf8_reverse
|
211
|
+
assert_equal("おえういあ", GLib::UTF8.reverse("あいうえお"))
|
212
|
+
end
|
213
|
+
|
214
|
+
def test_utf8_validate
|
215
|
+
assert(GLib::UTF8.validate("あ"))
|
216
|
+
assert(!GLib::UTF8.validate("あ"[1..-1]))
|
217
|
+
end
|
218
|
+
|
219
|
+
def test_utf8_upcase
|
220
|
+
assert_equal("ABCあいう", GLib::UTF8.upcase("aBcあいう"))
|
221
|
+
end
|
222
|
+
|
223
|
+
def test_utf8_downcase
|
224
|
+
assert_equal("abcあいう", GLib::UTF8.downcase("aBcあいう"))
|
225
|
+
end
|
226
|
+
|
227
|
+
def test_utf8_casefold
|
228
|
+
assert_equal(GLib::UTF8.casefold("AbCあいう"),
|
229
|
+
GLib::UTF8.casefold("aBcあいう"))
|
230
|
+
end
|
231
|
+
|
232
|
+
def test_utf8_normalize
|
233
|
+
original = [0x00c1].pack("U*") # A with acute
|
234
|
+
|
235
|
+
nfd = [0x0041, 0x0301].pack("U*")
|
236
|
+
assert_equal(nfd,
|
237
|
+
GLib::UTF8.normalize(original, GLib::NormalizeMode::NFD))
|
238
|
+
|
239
|
+
nfc = [0x00c1].pack("U*")
|
240
|
+
assert_equal(nfc,
|
241
|
+
GLib::UTF8.normalize(original, GLib::NormalizeMode::NFC))
|
242
|
+
|
243
|
+
nfkd = [0x0041, 0x0301].pack("U*")
|
244
|
+
assert_equal(nfkd,
|
245
|
+
GLib::UTF8.normalize(original, GLib::NormalizeMode::NFKD))
|
246
|
+
|
247
|
+
nfkc = [0x00c1].pack("U*")
|
248
|
+
assert_equal(nfkc,
|
249
|
+
GLib::UTF8.normalize(original, GLib::NormalizeMode::NFKC))
|
250
|
+
end
|
251
|
+
|
252
|
+
def test_utf8_collate
|
253
|
+
only_glib_version(2, 16, 0)
|
254
|
+
require_uconv
|
255
|
+
assert_operator(0, :>, GLib::UTF8.collate("あ", "い"))
|
256
|
+
assert_operator(0, :<, GLib::UTF8.collate("い", "あ"))
|
257
|
+
assert_equal(0, GLib::UTF8.collate("あ", "あ"))
|
258
|
+
end
|
259
|
+
|
260
|
+
def test_utf8_collate_key
|
261
|
+
only_glib_version(2, 16, 0)
|
262
|
+
require_uconv
|
263
|
+
assert_operator(0, :>,
|
264
|
+
GLib::UTF8.collate_key("あ") <=>
|
265
|
+
GLib::UTF8.collate_key("い"))
|
266
|
+
assert_operator(0, :<,
|
267
|
+
GLib::UTF8.collate_key("い") <=>
|
268
|
+
GLib::UTF8.collate_key("あ"))
|
269
|
+
assert_equal(0,
|
270
|
+
GLib::UTF8.collate_key("あ") <=>
|
271
|
+
GLib::UTF8.collate_key("あ"))
|
272
|
+
end
|
273
|
+
|
274
|
+
def test_utf8_collate_key_for_filename
|
275
|
+
assert_equal(["event.c", "event.h", "eventgenerator.c"],
|
276
|
+
["event.c", "eventgenerator.c", "event.h"].sort_by do |f|
|
277
|
+
GLib::UTF8.collate_key(f, true)
|
278
|
+
end)
|
279
|
+
|
280
|
+
assert_equal(["file1", "file5", "file10"],
|
281
|
+
["file1", "file10", "file5"].sort_by do |f|
|
282
|
+
GLib::UTF8.collate_key(f, true)
|
283
|
+
end)
|
284
|
+
end
|
285
|
+
|
286
|
+
def test_utf8_to_utf16
|
287
|
+
require_uconv
|
288
|
+
assert_equal(Uconv.u8tou16("あいうえお"),
|
289
|
+
GLib::UTF8.to_utf16("あいうえお"))
|
290
|
+
end
|
291
|
+
|
292
|
+
def test_utf8_to_ucs4
|
293
|
+
require_uconv
|
294
|
+
assert_equal(Uconv.u8tou4("あいうえお"),
|
295
|
+
GLib::UTF8.to_ucs4("あいうえお"))
|
296
|
+
|
297
|
+
assert_raise(GLib::ConvertError) do
|
298
|
+
GLib::UTF8.to_ucs4("あいうえお"[1..-1])
|
299
|
+
end
|
300
|
+
assert_nothing_raised do
|
301
|
+
GLib::UTF8.to_ucs4("あいうえお"[1..-1], true)
|
302
|
+
end
|
303
|
+
end
|
304
|
+
|
305
|
+
def test_utf16_to_ucs4
|
306
|
+
require_uconv
|
307
|
+
assert_equal(Uconv.u8tou4("あいうえお"),
|
308
|
+
GLib::UTF16.to_ucs4(Uconv.u8tou16("あいうえお")))
|
309
|
+
end
|
310
|
+
|
311
|
+
def test_utf16_to_utf8
|
312
|
+
require_uconv
|
313
|
+
assert_equal("あいうえお",
|
314
|
+
GLib::UTF16.to_utf8(Uconv.u8tou16("あいうえお")))
|
315
|
+
end
|
316
|
+
|
317
|
+
|
318
|
+
def test_ucs4_to_utf16
|
319
|
+
require_uconv
|
320
|
+
assert_equal(Uconv.u8tou16("あいうえお"),
|
321
|
+
GLib::UCS4.to_utf16(Uconv.u8tou4("あいうえお")))
|
322
|
+
|
323
|
+
assert_raise(GLib::ConvertError) do
|
324
|
+
GLib::UCS4.to_utf16(Uconv.u8tou4("あいうえお")[1..-1])
|
325
|
+
end
|
326
|
+
end
|
327
|
+
|
328
|
+
def test_ucs4_to_utf8
|
329
|
+
require_uconv
|
330
|
+
assert_equal("あいうえお",
|
331
|
+
GLib::UCS4.to_utf8(Uconv.u8tou4("あいうえお")))
|
332
|
+
end
|
333
|
+
|
334
|
+
def test_unichar_to_utf8
|
335
|
+
require_uconv
|
336
|
+
assert_equal("あ",
|
337
|
+
GLib::UniChar.to_utf8(Uconv.u8tou4("あ").unpack("L*")[0]))
|
338
|
+
end
|
339
|
+
|
340
|
+
def test_unichar_combining_class
|
341
|
+
only_glib_version(2, 14, 0)
|
342
|
+
assert_equal(0, GLib::UniChar.combining_class(unichar("a")))
|
343
|
+
assert_equal(230, GLib::UniChar.combining_class(unichar("́")))
|
344
|
+
end
|
345
|
+
|
346
|
+
def test_unichar_mark?
|
347
|
+
only_glib_version(2, 14, 0)
|
348
|
+
assert(!GLib::UniChar.mark?(unichar("a")))
|
349
|
+
assert(!GLib::UniChar.mark?(0x200E)) # LEFT-TO-RIGHT MARK
|
350
|
+
assert(GLib::UniChar.mark?(0x1DC3)) # COMBINING SUSPENSION MARK
|
351
|
+
end
|
352
|
+
|
353
|
+
def test_unichar_zero_width?
|
354
|
+
only_glib_version(2, 14, 0)
|
355
|
+
assert(!GLib::UniChar.zero_width?(unichar("a")))
|
356
|
+
assert(GLib::UniChar.zero_width?(0x200B)) # ZERO WIDTH SPACE
|
357
|
+
end
|
358
|
+
|
359
|
+
private
|
360
|
+
def unichar(char)
|
361
|
+
GLib::UTF8.get_char(char)
|
362
|
+
end
|
363
|
+
|
364
|
+
def require_uconv
|
365
|
+
require 'uconv'
|
366
|
+
rescue LoadError
|
367
|
+
omit("Need uconv to run this test.")
|
368
|
+
end
|
369
|
+
end
|
data/test/test_utils.rb
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
class TestGLibUtils < Test::Unit::TestCase
|
4
|
+
include GLibTestUtils
|
5
|
+
|
6
|
+
def test_user_cache_dir
|
7
|
+
only_glib_version(2, 6, 0)
|
8
|
+
assert_kind_of(String, GLib.user_cache_dir)
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_user_data_dir
|
12
|
+
only_glib_version(2, 6, 0)
|
13
|
+
assert_kind_of(String, GLib.user_data_dir)
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_user_config_dir
|
17
|
+
only_glib_version(2, 6, 0)
|
18
|
+
assert_kind_of(String, GLib.user_config_dir)
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_system_data_dirs
|
22
|
+
only_glib_version(2, 6, 0)
|
23
|
+
assert_kind_of(Array, GLib.system_data_dirs)
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_system_config_dirs
|
27
|
+
only_glib_version(2, 6, 0)
|
28
|
+
assert_kind_of(Array, GLib.system_config_dirs)
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_get_user_special_dir
|
32
|
+
only_glib_version(2, 14, 0)
|
33
|
+
assert_nothing_raised do
|
34
|
+
GLib.get_user_special_dir(GLib::UserDirectory::DESKTOP)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|