u 0.5.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/build/ext/u/data/attributes.rb +39 -0
- data/build/ext/u/data/bidi-mirroring.rb +27 -0
- data/build/ext/u/data/canonical-combining-class.rb +15 -0
- data/build/ext/u/data/case-folding.rb +39 -0
- data/build/ext/u/data/cased.rb +19 -0
- data/build/ext/u/data/compose.rb +304 -0
- data/build/ext/u/data/constants.rb +31 -0
- data/build/ext/u/data/decompose.rb +85 -0
- data/build/ext/u/data/general-category.rb +61 -0
- data/build/ext/u/data/grapheme-word-break.rb +15 -0
- data/build/ext/u/data/marshalled.rb +5 -0
- data/build/ext/u/data/script.rb +91 -0
- data/build/ext/u/data/soft-dotted.rb +17 -0
- data/build/ext/u/data/title-table.rb +30 -0
- data/build/ext/u/data/wide.rb +17 -0
- data/build/lib/u/build.rb +8 -0
- data/build/lib/u/build/data.rb +16 -0
- data/build/lib/u/build/data/bidimirroring.rb +26 -0
- data/build/lib/u/build/data/break.rb +14 -0
- data/build/lib/u/build/data/casefolding.rb +77 -0
- data/build/lib/u/build/data/compositionexclusions.rb +14 -0
- data/build/lib/u/build/data/derivedeastasianwidth.rb +15 -0
- data/build/lib/u/build/data/file.rb +88 -0
- data/build/lib/u/build/data/linebreak.rb +14 -0
- data/build/lib/u/build/data/proplist.rb +18 -0
- data/build/lib/u/build/data/scripts.rb +22 -0
- data/build/lib/u/build/data/specialcasing.rb +106 -0
- data/build/lib/u/build/data/unicode.rb +41 -0
- data/build/lib/u/build/data/unicode/entry.rb +27 -0
- data/build/lib/u/build/data/unicode/entry/decomposition.rb +29 -0
- data/build/lib/u/build/data/unicode/points.rb +32 -0
- data/build/lib/u/build/header.rb +11 -0
- data/build/lib/u/build/header/table.rb +19 -0
- data/build/lib/u/build/header/table/row.rb +64 -0
- data/build/lib/u/build/header/tables.rb +6 -0
- data/build/lib/u/build/header/tables/intervals.rb +50 -0
- data/build/lib/u/build/header/tables/split.rb +20 -0
- data/build/lib/u/build/header/tables/split/data.rb +29 -0
- data/build/lib/u/build/header/tables/split/part1.rb +28 -0
- data/build/lib/u/build/header/tables/split/part2.rb +13 -0
- data/build/lib/u/build/header/tables/split/row.rb +34 -0
- data/build/lib/u/build/header/tables/split/rows.rb +22 -0
- data/build/test/unit/break.rb +45 -0
- data/build/test/unit/case.rb +178 -0
- data/build/test/unit/foldcase.rb +44 -0
- data/build/test/unit/normalize.rb +81 -0
- data/ext/u/attributes.c +62 -0
- data/ext/u/attributes.h +5 -0
- data/ext/u/case.h +41 -0
- data/ext/u/data/attributes.h +3070 -0
- data/ext/u/data/bidi-mirroring.h +373 -0
- data/ext/u/data/canonical-combining-class.h +2157 -0
- data/ext/u/data/case-folding.h +171 -0
- data/ext/u/data/cased.h +42 -0
- data/ext/u/data/compose.h +1714 -0
- data/ext/u/data/constants.h +17 -0
- data/ext/u/data/decompose.h +9356 -0
- data/ext/u/data/general-category.h +28959 -0
- data/ext/u/data/grapheme-break.h +13201 -0
- data/ext/u/data/line-break.h +26501 -0
- data/ext/u/data/normalization-quick-check.h +3002 -0
- data/ext/u/data/script.h +2928 -0
- data/ext/u/data/soft-dotted.h +55 -0
- data/ext/u/data/title-table.h +41 -0
- data/ext/u/data/types.h +11117 -0
- data/ext/u/data/wide-cjk.h +197 -0
- data/ext/u/data/wide.h +59 -0
- data/ext/u/data/word-break.h +10001 -0
- data/ext/u/depend +281 -0
- data/ext/u/extconf.rb +158 -0
- data/ext/u/output.h +51 -0
- data/ext/{encoding/character/utf-8 → u}/private.c +11 -15
- data/ext/u/private.h +58 -0
- data/ext/u/rb_includes.h +10 -0
- data/ext/u/rb_private.c +98 -0
- data/ext/u/rb_private.h +67 -0
- data/ext/u/rb_u.c +251 -0
- data/ext/u/rb_u_buffer.c +443 -0
- data/ext/u/rb_u_buffer.h +24 -0
- data/ext/u/rb_u_re.c +43 -0
- data/ext/u/rb_u_re.h +15 -0
- data/ext/u/rb_u_string.c +478 -0
- data/ext/u/rb_u_string.h +173 -0
- data/ext/u/rb_u_string_alnum.c +10 -0
- data/ext/u/rb_u_string_alpha.c +10 -0
- data/ext/u/rb_u_string_aref.c +142 -0
- data/ext/u/rb_u_string_ascii_only.c +13 -0
- data/ext/u/rb_u_string_assigned.c +10 -0
- data/ext/u/rb_u_string_b.c +18 -0
- data/ext/u/rb_u_string_bytesize.c +10 -0
- data/ext/u/rb_u_string_byteslice.c +103 -0
- data/ext/u/rb_u_string_canonical_combining_class.c +33 -0
- data/ext/u/rb_u_string_case_ignorable.c +25 -0
- data/ext/u/rb_u_string_casecmp.c +61 -0
- data/ext/u/rb_u_string_cased.c +17 -0
- data/ext/u/rb_u_string_chomp.c +107 -0
- data/ext/u/rb_u_string_chop.c +33 -0
- data/ext/u/rb_u_string_chr.c +9 -0
- data/ext/u/rb_u_string_cntrl.c +10 -0
- data/ext/u/rb_u_string_collate.c +46 -0
- data/ext/u/rb_u_string_collation_key.c +18 -0
- data/ext/u/rb_u_string_count.c +38 -0
- data/ext/u/rb_u_string_defined.c +10 -0
- data/ext/u/rb_u_string_delete.c +62 -0
- data/ext/u/rb_u_string_digit.c +10 -0
- data/ext/u/rb_u_string_downcase.c +13 -0
- data/ext/u/rb_u_string_dump.c +153 -0
- data/ext/u/rb_u_string_each_byte.c +46 -0
- data/ext/u/rb_u_string_each_char.c +49 -0
- data/ext/u/rb_u_string_each_codepoint.c +45 -0
- data/ext/u/rb_u_string_each_grapheme_cluster.c +36 -0
- data/ext/u/rb_u_string_each_line.c +142 -0
- data/ext/u/rb_u_string_each_word.c +34 -0
- data/ext/u/rb_u_string_empty.c +11 -0
- data/ext/u/rb_u_string_end_with.c +31 -0
- data/ext/u/rb_u_string_eql.c +30 -0
- data/ext/u/rb_u_string_equal.c +33 -0
- data/ext/u/rb_u_string_foldcase.c +12 -0
- data/ext/u/rb_u_string_folded.c +13 -0
- data/ext/u/rb_u_string_format.c +1745 -0
- data/ext/u/rb_u_string_general_category.c +109 -0
- data/ext/u/rb_u_string_getbyte.c +21 -0
- data/ext/u/rb_u_string_graph.c +21 -0
- data/ext/u/rb_u_string_grapheme_break.c +61 -0
- data/ext/u/rb_u_string_gsub.c +164 -0
- data/ext/u/rb_u_string_hash.c +10 -0
- data/ext/u/rb_u_string_hex.c +9 -0
- data/ext/u/rb_u_string_include.c +10 -0
- data/ext/u/rb_u_string_index.c +110 -0
- data/ext/u/rb_u_string_inspect.c +189 -0
- data/ext/u/rb_u_string_internal_tr.c +148 -0
- data/ext/u/rb_u_string_internal_tr.h +29 -0
- data/ext/u/rb_u_string_justify.c +169 -0
- data/ext/u/rb_u_string_length.c +10 -0
- data/ext/u/rb_u_string_line_break.c +115 -0
- data/ext/u/rb_u_string_lower.c +13 -0
- data/ext/u/rb_u_string_lstrip.c +24 -0
- data/ext/u/rb_u_string_match.c +65 -0
- data/ext/u/rb_u_string_mirror.c +16 -0
- data/ext/u/rb_u_string_newline.c +21 -0
- data/ext/u/rb_u_string_normalize.c +70 -0
- data/ext/u/rb_u_string_normalized.c +28 -0
- data/ext/u/rb_u_string_oct.c +11 -0
- data/ext/u/rb_u_string_ord.c +14 -0
- data/ext/u/rb_u_string_partition.c +80 -0
- data/ext/u/rb_u_string_plus.c +33 -0
- data/ext/u/rb_u_string_print.c +10 -0
- data/ext/u/rb_u_string_punct.c +10 -0
- data/ext/u/rb_u_string_reverse.c +13 -0
- data/ext/u/rb_u_string_rindex.c +104 -0
- data/ext/u/rb_u_string_rpartition.c +81 -0
- data/ext/u/rb_u_string_rstrip.c +29 -0
- data/ext/u/rb_u_string_scan.c +109 -0
- data/ext/u/rb_u_string_script.c +253 -0
- data/ext/u/rb_u_string_soft_dotted.c +13 -0
- data/ext/u/rb_u_string_space.c +24 -0
- data/ext/u/rb_u_string_split.c +245 -0
- data/ext/u/rb_u_string_squeeze.c +75 -0
- data/ext/u/rb_u_string_start_with.c +31 -0
- data/ext/u/rb_u_string_strip.c +36 -0
- data/ext/u/rb_u_string_sub.c +147 -0
- data/ext/u/rb_u_string_times.c +35 -0
- data/ext/u/rb_u_string_title.c +10 -0
- data/ext/u/rb_u_string_titlecase.c +13 -0
- data/ext/u/rb_u_string_to_i.c +45 -0
- data/ext/u/rb_u_string_to_inum.c +364 -0
- data/ext/u/rb_u_string_to_inum.h +1 -0
- data/ext/u/rb_u_string_to_str.c +17 -0
- data/ext/u/rb_u_string_to_sym.c +12 -0
- data/ext/u/rb_u_string_tr.c +290 -0
- data/ext/u/rb_u_string_upcase.c +12 -0
- data/ext/u/rb_u_string_upper.c +13 -0
- data/ext/u/rb_u_string_valid.c +10 -0
- data/ext/u/rb_u_string_valid_encoding.c +12 -0
- data/ext/u/rb_u_string_wide.c +21 -0
- data/ext/u/rb_u_string_wide_cjk.c +21 -0
- data/ext/u/rb_u_string_width.c +19 -0
- data/ext/u/rb_u_string_word_break.c +63 -0
- data/ext/u/rb_u_string_xdigit.c +22 -0
- data/ext/u/rb_u_string_zero_width.c +16 -0
- data/ext/u/titled.c +55 -0
- data/ext/u/titled.h +1 -0
- data/ext/u/u.c +23 -0
- data/ext/u/u.h +458 -0
- data/ext/u/u_char_canonical_combining_class.c +31 -0
- data/ext/u/u_char_digit_value.c +21 -0
- data/ext/u/u_char_downcase.c +27 -0
- data/ext/u/u_char_general_category.c +31 -0
- data/ext/u/u_char_grapheme_break.c +28 -0
- data/ext/u/u_char_isalnum.c +24 -0
- data/ext/u/u_char_isalpha.c +21 -0
- data/ext/u/u_char_isassigned.c +16 -0
- data/ext/u/u_char_iscased.c +22 -0
- data/ext/u/u_char_iscaseignorable.c +29 -0
- data/ext/u/u_char_iscntrl.c +17 -0
- data/ext/u/u_char_isdefined.c +15 -0
- data/ext/u/u_char_isdigit.c +16 -0
- data/ext/u/u_char_isgraph.c +22 -0
- data/ext/u/u_char_islower.c +16 -0
- data/ext/u/u_char_isnewline.c +24 -0
- data/ext/u/u_char_isprint.c +21 -0
- data/ext/u/u_char_ispunct.c +27 -0
- data/ext/u/u_char_issoftdotted.c +18 -0
- data/ext/u/u_char_isspace.c +28 -0
- data/ext/u/u_char_isupper.c +16 -0
- data/ext/u/u_char_isvalid.c +18 -0
- data/ext/u/u_char_iswide.c +18 -0
- data/ext/u/u_char_iswide_cjk.c +22 -0
- data/ext/u/u_char_isxdigit.c +27 -0
- data/ext/u/u_char_iszerowidth.c +29 -0
- data/ext/u/u_char_line_break.c +29 -0
- data/ext/u/u_char_mirror.c +16 -0
- data/ext/u/u_char_normalized.c +23 -0
- data/ext/u/u_char_script.c +41 -0
- data/ext/u/u_char_to_u.c +48 -0
- data/ext/u/u_char_upcase.c +24 -0
- data/ext/u/u_char_width.c +12 -0
- data/ext/u/u_char_word_break.c +28 -0
- data/ext/u/u_char_xdigit_value.c +31 -0
- data/ext/u/u_collate.c +83 -0
- data/ext/u/u_collation_key.c +132 -0
- data/ext/u/u_decode.c +156 -0
- data/ext/u/u_downcase.c +201 -0
- data/ext/u/u_foldcase.c +68 -0
- data/ext/u/u_grapheme_clusters.c +57 -0
- data/ext/u/u_has_prefix.c +27 -0
- data/ext/u/u_index.c +93 -0
- data/ext/u/u_is_ascii_only.c +33 -0
- data/ext/u/u_locale.c +40 -0
- data/ext/u/u_locale.h +14 -0
- data/ext/u/u_mirror.c +20 -0
- data/ext/u/u_n_bytes.c +16 -0
- data/ext/u/u_n_chars.c +43 -0
- data/ext/u/u_normalize.c +232 -0
- data/ext/u/u_normalized.c +28 -0
- data/ext/u/u_offset_to_pointer.c +62 -0
- data/ext/u/u_pointer_to_offset.c +23 -0
- data/ext/u/u_recode.c +73 -0
- data/ext/u/u_reverse.c +21 -0
- data/ext/u/u_rindex.c +132 -0
- data/ext/u/u_titlecase.c +68 -0
- data/ext/u/u_upcase.c +89 -0
- data/ext/u/u_width.c +35 -0
- data/ext/u/u_words.c +82 -0
- data/ext/u/yield.h +27 -0
- data/lib/u-1.0.rb +20 -0
- data/lib/u-1.0/buffer.rb +10 -0
- data/lib/u-1.0/string.rb +9 -0
- data/lib/u-1.0/version.rb +287 -0
- data/test/unit/case.rb +2080 -0
- data/test/unit/foldcase.rb +1136 -0
- data/test/unit/graphemebreak.rb +407 -0
- data/test/unit/normalize.rb +367545 -0
- data/test/unit/u-1.0.rb +10 -0
- data/test/unit/u-1.0/buffer.rb +52 -0
- data/test/unit/u-1.0/string.rb +1439 -0
- data/test/unit/{u.rb → u-1.0/version.rb} +0 -1
- data/test/unit/wordbreak.rb +1083 -0
- metadata +603 -148
- data/README +0 -38
- data/Rakefile +0 -64
- data/ext/encoding/character/utf-8/break.c +0 -25
- data/ext/encoding/character/utf-8/data/break.h +0 -22931
- data/ext/encoding/character/utf-8/data/character-tables.h +0 -14358
- data/ext/encoding/character/utf-8/data/compose.h +0 -1607
- data/ext/encoding/character/utf-8/data/decompose.h +0 -10926
- data/ext/encoding/character/utf-8/data/generate-unicode-data.rb +0 -1070
- data/ext/encoding/character/utf-8/decompose.c +0 -444
- data/ext/encoding/character/utf-8/depend +0 -65
- data/ext/encoding/character/utf-8/extconf.rb +0 -67
- data/ext/encoding/character/utf-8/private.h +0 -51
- data/ext/encoding/character/utf-8/properties.c +0 -1056
- data/ext/encoding/character/utf-8/rb_includes.h +0 -19
- data/ext/encoding/character/utf-8/rb_methods.h +0 -49
- data/ext/encoding/character/utf-8/rb_private.h +0 -52
- data/ext/encoding/character/utf-8/rb_utf_aref.c +0 -111
- data/ext/encoding/character/utf-8/rb_utf_aset.c +0 -105
- data/ext/encoding/character/utf-8/rb_utf_casecmp.c +0 -24
- data/ext/encoding/character/utf-8/rb_utf_chomp.c +0 -114
- data/ext/encoding/character/utf-8/rb_utf_chop.c +0 -44
- data/ext/encoding/character/utf-8/rb_utf_collate.c +0 -13
- data/ext/encoding/character/utf-8/rb_utf_count.c +0 -30
- data/ext/encoding/character/utf-8/rb_utf_delete.c +0 -60
- data/ext/encoding/character/utf-8/rb_utf_downcase.c +0 -13
- data/ext/encoding/character/utf-8/rb_utf_each_char.c +0 -27
- data/ext/encoding/character/utf-8/rb_utf_foldcase.c +0 -13
- data/ext/encoding/character/utf-8/rb_utf_hex.c +0 -14
- data/ext/encoding/character/utf-8/rb_utf_index.c +0 -50
- data/ext/encoding/character/utf-8/rb_utf_insert.c +0 -48
- data/ext/encoding/character/utf-8/rb_utf_internal_bignum.c +0 -332
- data/ext/encoding/character/utf-8/rb_utf_internal_bignum.h +0 -12
- data/ext/encoding/character/utf-8/rb_utf_internal_tr.c +0 -142
- data/ext/encoding/character/utf-8/rb_utf_internal_tr.h +0 -41
- data/ext/encoding/character/utf-8/rb_utf_justify.c +0 -96
- data/ext/encoding/character/utf-8/rb_utf_length.c +0 -14
- data/ext/encoding/character/utf-8/rb_utf_lstrip.c +0 -41
- data/ext/encoding/character/utf-8/rb_utf_normalize.c +0 -51
- data/ext/encoding/character/utf-8/rb_utf_oct.c +0 -14
- data/ext/encoding/character/utf-8/rb_utf_reverse.c +0 -13
- data/ext/encoding/character/utf-8/rb_utf_rindex.c +0 -88
- data/ext/encoding/character/utf-8/rb_utf_rstrip.c +0 -51
- data/ext/encoding/character/utf-8/rb_utf_squeeze.c +0 -70
- data/ext/encoding/character/utf-8/rb_utf_strip.c +0 -27
- data/ext/encoding/character/utf-8/rb_utf_to_i.c +0 -25
- data/ext/encoding/character/utf-8/rb_utf_tr.c +0 -250
- data/ext/encoding/character/utf-8/rb_utf_upcase.c +0 -13
- data/ext/encoding/character/utf-8/tables.h +0 -38
- data/ext/encoding/character/utf-8/unicode.c +0 -319
- data/ext/encoding/character/utf-8/unicode.h +0 -216
- data/ext/encoding/character/utf-8/utf.c +0 -1334
- data/lib/encoding/character/utf-8.rb +0 -201
- data/lib/u.rb +0 -16
- data/lib/u/string.rb +0 -185
- data/lib/u/version.rb +0 -5
- data/test/unit/u/string.rb +0 -91
data/test/unit/u-1.0.rb
ADDED
@@ -0,0 +1,10 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
untrust = Object.respond_to?(:untrust)
|
4
|
+
|
5
|
+
Expectations do
|
6
|
+
expect U::String do ''.u end
|
7
|
+
expect U::String.new('abc') do 'abc'.u end
|
8
|
+
expect result.tainted? do ''.taint.u end
|
9
|
+
expect result.untrusted? do ''.untrust.u end if untrust
|
10
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
untrust = Object.respond_to?(:untrust)
|
4
|
+
|
5
|
+
Expectations do
|
6
|
+
expect U::Buffer do U::Buffer.new end
|
7
|
+
expect U::Buffer do U::Buffer.new(128) end
|
8
|
+
expect U::Buffer do U::Buffer.new(nil) end
|
9
|
+
expect TypeError do U::Buffer.new('abc') end
|
10
|
+
|
11
|
+
expect U::Buffer.new(5).append('abc') do |buffer| buffer.dup end
|
12
|
+
expect false do
|
13
|
+
original = U::Buffer.new(5).append('abc')
|
14
|
+
original.dup.object_id == original.object_id
|
15
|
+
end
|
16
|
+
expect false do
|
17
|
+
original = U::Buffer.new(5).append('abc')
|
18
|
+
original.dup.append('de').object_id == original.object_id
|
19
|
+
end
|
20
|
+
|
21
|
+
expect ArgumentError.new('wrong number of arguments (0 for at least 1)') do U::Buffer.new.append end
|
22
|
+
expect 'abcde'.u do U::Buffer.new.append('abc', 'de').to_u end
|
23
|
+
expect 'abcde'.u do (U::Buffer.new << 'abc' << 'de').to_u end
|
24
|
+
expect "abc\0def".u do U::Buffer.new.append('abc', 0, 'def'.u).to_u end
|
25
|
+
expect result.tainted? do U::Buffer.new.taint.to_u end
|
26
|
+
expect result.tainted? do U::Buffer.new.append(U::Buffer.new.taint).to_u end
|
27
|
+
expect result.tainted? do U::Buffer.new.append(''.taint).to_u end
|
28
|
+
expect result.untrusted? do U::Buffer.new.untrust.to_u end if untrust
|
29
|
+
expect result.untrusted? do U::Buffer.new.append(U::Buffer.new.untrust).to_u end if untrust
|
30
|
+
expect result.untrusted? do U::Buffer.new.append(''.untrust).to_u end if untrust
|
31
|
+
|
32
|
+
expect 'äbc'.u do U::Buffer.new.append_format('%cbc'.u, 'ä').to_u end
|
33
|
+
expect result.tainted? do U::Buffer.new.append_format('abc'.taint).to_u end
|
34
|
+
expect result.tainted? do U::Buffer.new.append_format('%s', 'abc'.taint).to_u end
|
35
|
+
expect result.tainted? do U::Buffer.new.append_format('%p', 'abc'.taint).to_u end
|
36
|
+
|
37
|
+
expect ''.u do U::Buffer.new.to_u! end
|
38
|
+
expect 'äbc'.u do U::Buffer.new.append('äbc').to_u! end
|
39
|
+
expect ''.u do U::Buffer.new.append('äbc').tap(&:to_u!).to_u! end
|
40
|
+
|
41
|
+
expect '#<U::Buffer äbc>' do U::Buffer.new.append('äbc'.u).inspect end
|
42
|
+
expect '#<U::Buffer äbcdëwvxÿz>' do U::Buffer.new.append('äbcdëwvxÿz'.u).inspect end
|
43
|
+
expect '#<U::Buffer äbcdëfwvxÿz>' do U::Buffer.new.append('äbcdëfwvxÿz'.u).inspect end
|
44
|
+
expect '#<U::Buffer äbcdë…wvxÿz>' do U::Buffer.new.append('äbcdëfgwvxÿz'.u).inspect end
|
45
|
+
|
46
|
+
expect 3 do U::Buffer.new.append('äbc'.u).length end
|
47
|
+
expect 3 do U::Buffer.new.append('äbc'.u).size end
|
48
|
+
expect 4 do U::Buffer.new.append('äbc'.u).bytesize end
|
49
|
+
expect 4 do U::Buffer.new.append('あbc'.u).width end
|
50
|
+
|
51
|
+
expect result.tainted? do U::Buffer.new.taint.to_s end
|
52
|
+
end
|
@@ -0,0 +1,1439 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
2
|
+
|
3
|
+
untrust = Object.respond_to?(:untrust)
|
4
|
+
word_regex = /\w/u =~ 'ä' ? /\w+/u : Regexp.new('[[:word:]]+')
|
5
|
+
|
6
|
+
Expectations do
|
7
|
+
expect ''.u do U::String.new end
|
8
|
+
expect ''.u do U::String.new(nil) end
|
9
|
+
expect '' do U::String.new(nil).to_str end
|
10
|
+
expect 'äbc' do U::String.new('äbc').to_str end
|
11
|
+
if defined? Encoding
|
12
|
+
expect 'äbc' do U::String.new('äbc'.encode(Encoding::ISO8859_1)).to_str end
|
13
|
+
expect Encoding::UndefinedConversionError do U::String.new('äbc'.encode(Encoding::ASCII_8BIT)) end
|
14
|
+
end
|
15
|
+
expect result.tainted? do 'u'.taint.u end
|
16
|
+
expect result.untrusted? do 'u'.untrust.u end if untrust
|
17
|
+
|
18
|
+
expect ''.u do ''.u.dup end
|
19
|
+
expect false do a = ''.u; a.dup.object_id == a.object_id end
|
20
|
+
expect result.tainted? do 'u'.u.taint.dup end
|
21
|
+
expect result.untrusted? do 'u'.u.untrust.dup end if untrust
|
22
|
+
|
23
|
+
expect true do 'äbc'.u.valid_encoding? end
|
24
|
+
expect true do "äbc\0def".u.valid_encoding? end
|
25
|
+
expect false do "\xc3bc".u.valid_encoding? end
|
26
|
+
|
27
|
+
expect true do ''.u.alnum? end
|
28
|
+
expect true do 'a'.u.alnum? end
|
29
|
+
expect true do 'ab'.u.alnum? end
|
30
|
+
expect false do '/'.u.alnum? end
|
31
|
+
|
32
|
+
expect true do ''.u.alpha? end
|
33
|
+
expect true do 'a'.u.alpha? end
|
34
|
+
expect true do 'ab'.u.alpha? end
|
35
|
+
expect false do 'a0'.u.alpha? end
|
36
|
+
|
37
|
+
expect true do 'abc'.u.ascii_only? end
|
38
|
+
expect false do 'äbc'.u.ascii_only? end
|
39
|
+
|
40
|
+
expect true do ''.u.assigned? end
|
41
|
+
expect true do 'a'.u.assigned? end
|
42
|
+
expect true do 'ab'.u.assigned? end
|
43
|
+
expect false do [0x0588].pack('U').u.assigned? end
|
44
|
+
|
45
|
+
expect true do ''.u.case_ignorable? end
|
46
|
+
expect true do "'".u.case_ignorable? end
|
47
|
+
expect true do "'’".u.case_ignorable? end
|
48
|
+
expect true do [0x0307].pack('U').u.case_ignorable? end
|
49
|
+
expect false do 'a'.u.case_ignorable? end
|
50
|
+
|
51
|
+
expect true do ''.u.cased? end
|
52
|
+
expect true do 'a'.u.cased? end
|
53
|
+
expect true do 'ab'.u.cased? end
|
54
|
+
expect false do '0'.u.cased? end
|
55
|
+
|
56
|
+
expect true do ''.u.cntrl? end
|
57
|
+
expect true do "\0".u.cntrl? end
|
58
|
+
expect true do "\0\1".u.cntrl? end
|
59
|
+
expect false do "a".u.cntrl? end
|
60
|
+
|
61
|
+
expect true do ''.u.defined? end
|
62
|
+
expect true do 'a'.u.defined? end
|
63
|
+
expect true do 'ab'.u.defined? end
|
64
|
+
expect false do [0x0588].pack('U').u.defined? end
|
65
|
+
# TODO: This raises an error, as we’re using u_aref_char_validated_n for
|
66
|
+
# these functions. Perhaps use u_aref_char_n and don’t raise errors on
|
67
|
+
# invalid input.
|
68
|
+
# expect false do [0xD800].pack('U').u.defined? end
|
69
|
+
|
70
|
+
expect true do ''.u.digit? end
|
71
|
+
expect true do '0'.u.digit? end
|
72
|
+
expect true do '01'.u.digit? end
|
73
|
+
expect false do '0a'.u.digit? end
|
74
|
+
|
75
|
+
expect true do 'ss'.u.folded? end
|
76
|
+
expect false do 'ß'.u.folded? end
|
77
|
+
expect true do 'abc\0ß'.u.foldcase.folded? end
|
78
|
+
|
79
|
+
expect true do ''.u.graph? end
|
80
|
+
expect true do '0'.u.graph? end
|
81
|
+
expect true do '01'.u.graph? end
|
82
|
+
expect false do "\0".u.graph? end
|
83
|
+
|
84
|
+
expect true do 'i'.u.lower? end
|
85
|
+
expect true do 'i'.u.lower?('lt') end
|
86
|
+
expect false do 'I'.u.lower? end
|
87
|
+
expect false do 'I'.u.lower?('lt') end
|
88
|
+
|
89
|
+
expect true do ''.u.newline? end
|
90
|
+
expect true do [0x2028].pack('U').u.newline? end
|
91
|
+
expect true do "\r\n".u.newline? end
|
92
|
+
expect false do 'a'.u.newline? end
|
93
|
+
|
94
|
+
expect true do ''.u.print? end
|
95
|
+
expect true do 'a'.u.print? end
|
96
|
+
expect true do 'ab'.u.print? end
|
97
|
+
expect false do "\n".u.print? end
|
98
|
+
|
99
|
+
expect true do ''.u.punct? end
|
100
|
+
expect true do '.'.u.punct? end
|
101
|
+
expect true do '()'.u.punct? end
|
102
|
+
expect false do 'a'.u.punct? end
|
103
|
+
|
104
|
+
expect true do ''.u.soft_dotted? end
|
105
|
+
expect true do 'i'.u.soft_dotted? end
|
106
|
+
expect true do 'ij'.u.soft_dotted? end
|
107
|
+
expect false do 'a'.u.soft_dotted? end
|
108
|
+
|
109
|
+
expect true do ''.u.space? end
|
110
|
+
expect true do ' '.u.space? end
|
111
|
+
expect true do " \t\n".u.space? end
|
112
|
+
expect false do 'a'.u.space? end
|
113
|
+
|
114
|
+
expect false do 'i'.u.title? end
|
115
|
+
expect false do 'I'.u.title? end
|
116
|
+
expect false do 'DZ'.u.title? end
|
117
|
+
expect true do 'Dz'.u.title? end
|
118
|
+
|
119
|
+
expect false do 'i'.u.upper? end
|
120
|
+
expect false do 'i'.u.upper?('lt') end
|
121
|
+
expect false do 'i'.u.upper?('tr') end
|
122
|
+
expect true do 'I'.u.upper? end
|
123
|
+
expect true do 'I'.u.upper?('lt') end
|
124
|
+
expect true do 'I'.u.upper?('tr') end
|
125
|
+
|
126
|
+
expect true do ''.u.valid? end
|
127
|
+
|
128
|
+
expect true do ''.u.wide? end
|
129
|
+
expect true do '豈'.u.wide? end
|
130
|
+
expect true do '豈豈'.u.wide? end
|
131
|
+
expect false do 'a'.u.wide? end
|
132
|
+
|
133
|
+
expect true do ''.u.wide_cjk? end
|
134
|
+
expect true do '豈'.u.wide_cjk? end
|
135
|
+
expect true do '豈豈'.u.wide_cjk? end
|
136
|
+
expect true do '豈♣'.u.wide_cjk? end
|
137
|
+
expect false do 'a'.u.wide_cjk? end
|
138
|
+
|
139
|
+
expect true do ''.u.xdigit? end
|
140
|
+
expect true do '0'.u.xdigit? end
|
141
|
+
expect true do '0a'.u.xdigit? end
|
142
|
+
expect false do 'g'.u.xdigit? end
|
143
|
+
|
144
|
+
expect true do ''.u.zero_width? end
|
145
|
+
expect true do [0x200b].pack('U').u.zero_width? end
|
146
|
+
expect true do [0x200b, 0x1160].pack('U*').u.zero_width? end
|
147
|
+
expect false do 'a'.u.zero_width? end
|
148
|
+
|
149
|
+
expect result.normalized?(:nfc) do 'äbc'.u end
|
150
|
+
expect result.normalized?(:nfd) do 'äbc'.u.normalize(:nfd) end
|
151
|
+
expect result.normalized? do 'äbc'.u.normalize(:nfd) end
|
152
|
+
|
153
|
+
expect result.not.eql?('abc') do 'abc'.u end
|
154
|
+
expect result.not.eql?('äbc'.u) do 'äbc'.u.normalize(:nfd) end
|
155
|
+
expect result.eql?('äbc'.u) do 'äbc'.u.normalize(:nfd).normalize(:nfc) end
|
156
|
+
|
157
|
+
expect TypeError do 'abc'.u =~ 'abc' end
|
158
|
+
expect TypeError do 'abc'.u =~ 'abc'.u end
|
159
|
+
expect 10 do 'FëëFiëFöö-Fum'.u =~ /Fum$/u end
|
160
|
+
expect nil do 'FëëFiëFöö-Fum'.u =~ /FUM$/u end
|
161
|
+
expect 'fööbar' do 'föö'.u =~ stub(:=~ => proc{ |t| t + 'bar'.u }) end
|
162
|
+
|
163
|
+
expect 'a' do 'abc'.u.match(/a/)[0] end
|
164
|
+
expect nil do 'abc'.u.match(/d/) end
|
165
|
+
expect 'a' do 'abc'.u.match('a')[0] end
|
166
|
+
expect nil do 'abc'.u.match('d') end
|
167
|
+
expect result.tainted? do 'abc'.u.taint.match(/a/) end
|
168
|
+
expect result.untrusted? do 'abc'.u.untrust.match(/a/) end if untrust
|
169
|
+
expect result.tainted? do 'abc'.u.taint.match('a') end
|
170
|
+
expect result.untrusted? do 'abc'.u.untrust.match('a') end if untrust
|
171
|
+
expect result.tainted? do 'abc'.u.match(/a/.taint) end
|
172
|
+
expect result.untrusted? do 'abc'.u.match(/a/.untrust) end if untrust
|
173
|
+
expect result.tainted? do 'abc'.u.match('a'.taint) end if 'abc'.match('a'.taint).tainted?
|
174
|
+
expect result.untrusted? do 'abc'.u.match('a'.untrust) end if untrust
|
175
|
+
|
176
|
+
expect result.to.be.empty? do ''.u end
|
177
|
+
expect result.not.to.be.empty? do 'not'.u end
|
178
|
+
|
179
|
+
expect result.to.end_with?('c') do 'abc'.u end
|
180
|
+
expect result.not.to.end_with?('d') do 'abc'.u end
|
181
|
+
expect result.to.end_with?('ä') do 'cbä'.u end
|
182
|
+
expect result.not.to.end_with?('äb') do 'cbä'.u end
|
183
|
+
expect result.to.end_with?('a', 'ä') do 'cbä'.u end
|
184
|
+
expect result.not.to.end_with? do 'cbä'.u end
|
185
|
+
|
186
|
+
expect result.to.include?('f'.u) do 'fööbär'.u end
|
187
|
+
expect result.to.include?('föö'.u) do 'fööbär'.u end
|
188
|
+
expect result.to.include?('bär'.u) do 'fööbär'.u end
|
189
|
+
expect result.not.to.include?('bäz'.u) do 'fööbär'.u end
|
190
|
+
expect result.not.to.include?('z'.u) do 'fööbär'.u end
|
191
|
+
|
192
|
+
expect 0 do 'hëllö'.u.index('') end
|
193
|
+
expect 0 do 'hëllö'.u.index('h') end
|
194
|
+
expect 4 do 'hëllö'.u.index('ö') end
|
195
|
+
expect 1 do 'hëllö'.u.index('ëll') end
|
196
|
+
expect 2 do 'hëllö'.u.index(/ll/u) end
|
197
|
+
expect nil do 'hëllö'.u.index('hëllö!') end
|
198
|
+
expect nil do 'hëllö'.u.index('z') end
|
199
|
+
expect nil do 'hëllö'.u.index(/z./u) end
|
200
|
+
expect 3 do 'hëllö'.u.index('l', 3) end
|
201
|
+
expect 3 do 'hëllö'.u.index(/l./u, 3) end
|
202
|
+
expect nil do 'hëllö'.u.index('hëllö!', 3) end
|
203
|
+
expect nil do 'hëllö'.u.index('z', 3) end
|
204
|
+
expect nil do 'hëllö'.u.index(/z./u, 3) end
|
205
|
+
expect 2 do 'hëllö'.u.index(stub(:to_str => 'llö')) end
|
206
|
+
expect TypeError do 'hëllö'.u.index(Object.new) end
|
207
|
+
expect nil do 'föö'.u.index(//, -100) end
|
208
|
+
expect nil do 'föö'.u.index(//, -100); $~ end
|
209
|
+
|
210
|
+
expect 5 do 'hëllö'.u.rindex('') end
|
211
|
+
expect 3 do 'hëllö'.u.rindex('l') end
|
212
|
+
expect 6 do 'ëll, hëllö'.u.rindex('ëll') end
|
213
|
+
expect 7 do 'ëll, hëllö'.u.rindex(/ll./u) end
|
214
|
+
expect nil do 'hëllö'.u.rindex('hëllö!') end
|
215
|
+
expect nil do 'hëllö'.u.rindex('z') end
|
216
|
+
expect nil do 'hëllö'.u.rindex(/z./u) end
|
217
|
+
expect 3 do 'hëllö,lö'.u.rindex('l', 3) end
|
218
|
+
expect 3 do 'hëllö,lö'.u.rindex(/l./u, 3) end
|
219
|
+
expect nil do 'hëllö,lö'.u.rindex('hëllö!', 3) end
|
220
|
+
expect nil do 'hëllö,lö'.u.rindex('z', 3) end
|
221
|
+
expect nil do 'hëllö,lö'.u.rindex(/z./u, 3) end
|
222
|
+
expect 6 do 'fööbarbarbaz'.u.rindex(stub(:to_str => 'bar')) end
|
223
|
+
expect TypeError do 'hëllö'.u.rindex(Object.new) end
|
224
|
+
expect nil do 'föö'.u.rindex(//, -100) end
|
225
|
+
expect nil do 'föö'.u.rindex(//, -100); $~ end
|
226
|
+
|
227
|
+
expect result.to.start_with?('a') do 'abc'.u end
|
228
|
+
expect result.not.to.start_with?('b') do 'abc'.u end
|
229
|
+
expect result.to.start_with?('ä') do 'äbc'.u end
|
230
|
+
expect result.not.to.start_with?('bc') do 'äbc'.u end
|
231
|
+
expect result.to.start_with?('a', 'ä') do 'äbc'.u end
|
232
|
+
expect result.not.to.start_with? do 'äbc'.u end
|
233
|
+
|
234
|
+
expect result.>(0) do 'あB'.u.casecmp('あa', 'en_US.UTF-8') end
|
235
|
+
expect result.>(0) do 'あB'.u.casecmp('あa'.u, 'en_US.UTF-8') end
|
236
|
+
|
237
|
+
expect "\0".u do "\0".u.collation_key('en_US.UTF-8') end
|
238
|
+
expect U::String do 'äbcdëf'.u.collation_key('en_US.UTF-8') end
|
239
|
+
expect U::String do "äbc\0dëf".u.collation_key('en_US.UTF-8') end
|
240
|
+
expect result.tainted? do ''.u.taint.collation_key('en_US.UTF-8') end
|
241
|
+
expect result.untrusted? do ''.u.untrust.collation_key('en_US.UTF-8') end if untrust
|
242
|
+
|
243
|
+
expect 0 do 'a'.u.canonical_combining_class end
|
244
|
+
expect 230 do [0x0307].pack('U').u.canonical_combining_class end
|
245
|
+
|
246
|
+
expect :letter_uppercase do 'A'.u.general_category end
|
247
|
+
expect :punctuation_other do '.'.u.general_category end
|
248
|
+
expect :symbol_currency do '$'.u.general_category end
|
249
|
+
expect :separator_space do ' '.u.general_category end
|
250
|
+
|
251
|
+
expect :cr do "\r".u.grapheme_break end
|
252
|
+
expect :other do 'a'.u.grapheme_break end
|
253
|
+
|
254
|
+
expect :open_punctuation do '('.u.line_break end
|
255
|
+
expect :close_parenthesis do ')'.u.line_break end
|
256
|
+
|
257
|
+
expect ArgumentError do [0x002A, 0x1CED].pack('U*').u.script end
|
258
|
+
expect :common do [0x002A].pack('U').u.script end
|
259
|
+
expect :inherited do [0x1CED].pack('U').u.script end
|
260
|
+
expect :inherited do [0x0670].pack('U').u.script end
|
261
|
+
expect :arabic do [0x060D].pack('U').u.script end
|
262
|
+
expect :armenian do [0x0559].pack('U').u.script end
|
263
|
+
expect :bengali do [0x09CD].pack('U').u.script end
|
264
|
+
expect :bopomofo do [0x31B6].pack('U').u.script end
|
265
|
+
expect :cherokee do [0x13A2].pack('U').u.script end
|
266
|
+
expect :coptic do [0x2CFD].pack('U').u.script end
|
267
|
+
expect :cyrillic do [0x0482].pack('U').u.script end
|
268
|
+
expect :deseret do [0x10401].pack('U').u.script end
|
269
|
+
expect :devanagari do [0x094D].pack('U').u.script end
|
270
|
+
expect :ethiopic do [0x1258].pack('U').u.script end
|
271
|
+
expect :georgian do [0x10FC].pack('U').u.script end
|
272
|
+
expect :gothic do [0x10341].pack('U').u.script end
|
273
|
+
expect :greek do [0x0375].pack('U').u.script end
|
274
|
+
expect :gujarati do [0x0A83].pack('U').u.script end
|
275
|
+
expect :gurmukhi do [0x0A3C].pack('U').u.script end
|
276
|
+
expect :han do [0x3005].pack('U').u.script end
|
277
|
+
expect :hangul do [0x1100].pack('U').u.script end
|
278
|
+
expect :hebrew do [0x05BF].pack('U').u.script end
|
279
|
+
expect :hiragana do [0x309F].pack('U').u.script end
|
280
|
+
expect :kannada do [0x0CBC].pack('U').u.script end
|
281
|
+
expect :katakana do [0x30FF].pack('U').u.script end
|
282
|
+
expect :khmer do [0x17DD].pack('U').u.script end
|
283
|
+
expect :lao do [0x0EDD].pack('U').u.script end
|
284
|
+
expect :latin do [0x0061].pack('U').u.script end
|
285
|
+
expect :malayalam do [0x0D3D].pack('U').u.script end
|
286
|
+
expect :mongolian do [0x1843].pack('U').u.script end
|
287
|
+
expect :myanmar do [0x1031].pack('U').u.script end
|
288
|
+
expect :ogham do [0x169C].pack('U').u.script end
|
289
|
+
expect :old_italic do [0x10322].pack('U').u.script end
|
290
|
+
expect :oriya do [0x0B3C].pack('U').u.script end
|
291
|
+
expect :runic do [0x16EF].pack('U').u.script end
|
292
|
+
expect :sinhala do [0x0DBD].pack('U').u.script end
|
293
|
+
expect :syriac do [0x0711].pack('U').u.script end
|
294
|
+
expect :tamil do [0x0B82].pack('U').u.script end
|
295
|
+
expect :telugu do [0x0C03].pack('U').u.script end
|
296
|
+
expect :thaana do [0x07B1].pack('U').u.script end
|
297
|
+
expect :thai do [0x0E31].pack('U').u.script end
|
298
|
+
expect :tibetan do [0x0FD4].pack('U').u.script end
|
299
|
+
expect :canadian_aboriginal do [0x1400].pack('U').u.script end
|
300
|
+
expect :canadian_aboriginal do [0x1401].pack('U').u.script end
|
301
|
+
expect :yi do [0xA015].pack('U').u.script end
|
302
|
+
expect :tagalog do [0x1700].pack('U').u.script end
|
303
|
+
expect :hanunoo do [0x1720].pack('U').u.script end
|
304
|
+
expect :buhid do [0x1740].pack('U').u.script end
|
305
|
+
expect :tagbanwa do [0x1760].pack('U').u.script end
|
306
|
+
expect :braille do [0x2800].pack('U').u.script end
|
307
|
+
expect :cypriot do [0x10808].pack('U').u.script end
|
308
|
+
expect :limbu do [0x1932].pack('U').u.script end
|
309
|
+
expect :osmanya do [0x10480].pack('U').u.script end
|
310
|
+
expect :shavian do [0x10450].pack('U').u.script end
|
311
|
+
expect :linear_b do [0x10000].pack('U').u.script end
|
312
|
+
expect :tai_le do [0x1950].pack('U').u.script end
|
313
|
+
expect :ugaritic do [0x1039F].pack('U').u.script end
|
314
|
+
expect :new_tai_lue do [0x1980].pack('U').u.script end
|
315
|
+
expect :buginese do [0x1A1F].pack('U').u.script end
|
316
|
+
expect :glagolitic do [0x2C00].pack('U').u.script end
|
317
|
+
expect :tifinagh do [0x2D6F].pack('U').u.script end
|
318
|
+
expect :syloti_nagri do [0xA800].pack('U').u.script end
|
319
|
+
expect :old_persian do [0x103D0].pack('U').u.script end
|
320
|
+
expect :kharoshthi do [0x10A3F].pack('U').u.script end
|
321
|
+
expect :unknown do ''.u.script end
|
322
|
+
expect :balinese do [0x1B04].pack('U').u.script end
|
323
|
+
expect :cuneiform do [0x12000].pack('U').u.script end
|
324
|
+
expect :phoenician do [0x10900].pack('U').u.script end
|
325
|
+
expect :phags_pa do [0xA840].pack('U').u.script end
|
326
|
+
expect :nko do [0x07C0].pack('U').u.script end
|
327
|
+
expect :kayah_li do [0xA900].pack('U').u.script end
|
328
|
+
expect :lepcha do [0x1C00].pack('U').u.script end
|
329
|
+
expect :rejang do [0xA930].pack('U').u.script end
|
330
|
+
expect :sundanese do [0x1B80].pack('U').u.script end
|
331
|
+
expect :saurashtra do [0xA880].pack('U').u.script end
|
332
|
+
expect :cham do [0xAA00].pack('U').u.script end
|
333
|
+
expect :ol_chiki do [0x1C50].pack('U').u.script end
|
334
|
+
expect :vai do [0xA500].pack('U').u.script end
|
335
|
+
expect :carian do [0x102A0].pack('U').u.script end
|
336
|
+
expect :lycian do [0x10280].pack('U').u.script end
|
337
|
+
expect :lydian do [0x1093F].pack('U').u.script end
|
338
|
+
expect :avestan do [0x10B00].pack('U').u.script end
|
339
|
+
expect :bamum do [0xA6A0].pack('U').u.script end
|
340
|
+
expect :egyptian_hieroglyphs do [0x13000].pack('U').u.script end
|
341
|
+
expect :imperial_aramaic do [0x10840].pack('U').u.script end
|
342
|
+
expect :inscriptional_pahlavi do [0x10B60].pack('U').u.script end
|
343
|
+
expect :inscriptional_parthian do [0x10B40].pack('U').u.script end
|
344
|
+
expect :javanese do [0xA980].pack('U').u.script end
|
345
|
+
expect :kaithi do [0x11082].pack('U').u.script end
|
346
|
+
expect :lisu do [0xA4D0].pack('U').u.script end
|
347
|
+
expect :meetei_mayek do [0xABE5].pack('U').u.script end
|
348
|
+
expect :old_south_arabian do [0x10A60].pack('U').u.script end
|
349
|
+
expect :old_turkic do [0x10C00].pack('U').u.script end
|
350
|
+
expect :samaritan do [0x0800].pack('U').u.script end
|
351
|
+
expect :tai_tham do [0x1A20].pack('U').u.script end
|
352
|
+
expect :tai_viet do [0xAA80].pack('U').u.script end
|
353
|
+
expect :batak do [0x1BC0].pack('U').u.script end
|
354
|
+
expect :brahmi do [0x11000].pack('U').u.script end
|
355
|
+
expect :mandaic do [0x0840].pack('U').u.script end
|
356
|
+
|
357
|
+
expect :aletter do 'a'.u.word_break end
|
358
|
+
|
359
|
+
expect 4 do 'äbc'.u.bytesize end
|
360
|
+
expect 9 do "äbc\0dëf".u.bytesize end
|
361
|
+
|
362
|
+
expect 0 do ''.u.length end
|
363
|
+
expect 4 do '1234'.u.length end
|
364
|
+
expect 6 do "1234\r\n".u.length end
|
365
|
+
expect 7 do "\0011234\r\n".u.length end
|
366
|
+
expect 5 do 'hëllö'.u.length end
|
367
|
+
expect 6 do "\0hëllö".u.length end
|
368
|
+
expect 12 do "hëllö\0agäin\303".u.length end
|
369
|
+
|
370
|
+
expect 0 do ''.u.size end
|
371
|
+
expect 4 do '1234'.u.size end
|
372
|
+
expect 6 do "1234\r\n".u.size end
|
373
|
+
expect 7 do "\0011234\r\n".u.size end
|
374
|
+
expect 5 do 'hëllö'.u.size end
|
375
|
+
expect 6 do "\0hëllö".u.size end
|
376
|
+
expect 12 do "hëllö\0agäin\303".u.size end
|
377
|
+
|
378
|
+
expect 0 do ''.u.width end
|
379
|
+
expect 1 do 'a'.u.width end
|
380
|
+
expect 1 do "a\xcc\x87".u.width end
|
381
|
+
expect 2 do '豈'.u.width end
|
382
|
+
expect 3 do 'a豈'.u.width end
|
383
|
+
|
384
|
+
expect [0x61, 0x62, 0x63, 0x00, 0x64, 0xc3, 0xab, 0x66] do "abc\0dëf".u.each_byte.to_a end
|
385
|
+
expect 8 do "abc\0dëf".u.each_byte.size end if ''.u.each_byte.respond_to? :size
|
386
|
+
|
387
|
+
expect [0x61, 0x62, 0x63, 0x00, 0x64, 0xc3, 0xab, 0x66] do "abc\0dëf".u.bytes end
|
388
|
+
|
389
|
+
expect ['h'.u, 'ë'.u, 'l'.u, 'l'.u, 'ö'.u] do 'hëllö'.u.each_char.to_a end
|
390
|
+
expect 5 do 'hëllö'.u.each_char.size end if ''.u.each_byte.respond_to? :size
|
391
|
+
expect result.tainted? do 'a'.u.taint.each_char.first end
|
392
|
+
expect result.untrusted? do 'a'.u.untrust.each_char.first end if untrust
|
393
|
+
|
394
|
+
expect ['h'.u, 'ë'.u, 'l'.u, 'l'.u, 'ö'.u] do 'hëllö'.u.chars end
|
395
|
+
expect result.tainted? do 'a'.u.taint.chars.first end
|
396
|
+
expect result.untrusted? do 'a'.u.untrust.chars.first end if untrust
|
397
|
+
|
398
|
+
expect [0x0068, 0x00eb, 0x006c, 0x006c, 0x00f6] do 'hëllö'.u.each_codepoint.to_a end
|
399
|
+
expect 5 do 'hëllö'.u.each_codepoint.size end if ''.u.each_byte.respond_to? :size
|
400
|
+
|
401
|
+
expect [0x0068, 0x00eb, 0x006c, 0x006c, 0x00f6] do 'hëllö'.u.codepoints end
|
402
|
+
|
403
|
+
expect ['h'.u, 'ë'.u.normalize(:nfd), 'l'.u, 'l'.u, 'ö'.u.normalize(:nfd)] do 'hëllö'.u.normalize(:nfd).grapheme_clusters.to_a end
|
404
|
+
|
405
|
+
expect ["hello\n".u, 'world'.u] do with_global(:$/, "\n"){ "hello\nworld".u.each_line.to_a } end
|
406
|
+
expect ["hello\n\n\n".u, 'world'.u] do "hello\n\n\nworld".u.each_line('').to_a end
|
407
|
+
expect ['hello!'.u, 'world'.u] do with_global(:$/, '!'){ 'hello!world'.u.each_line.to_a } end
|
408
|
+
expect ["hello\nworld".u] do with_global(:$/, nil){ "hello\nworld".u.each_line.to_a } end
|
409
|
+
expect ['hëll hëllö'.u, ' world'.u] do 'hëll hëllö world'.u.each_line('llö').to_a end
|
410
|
+
expect ["hello\0".u, 'world'.u] do "hello\0world".u.each_line("\0").to_a end
|
411
|
+
expect result.tainted? do 'a'.u.taint.each_line.first end
|
412
|
+
expect result.untrusted? do 'a'.u.untrust.each_line.first end if untrust
|
413
|
+
|
414
|
+
expect ["hello\n".u, 'world'.u] do with_global(:$/, "\n"){ "hello\nworld".u.lines } end
|
415
|
+
expect ["hello\n\n\n".u, 'world'.u] do "hello\n\n\nworld".u.lines('') end
|
416
|
+
expect ['hello!'.u, 'world'.u] do with_global(:$/, '!'){ 'hello!world'.u.lines } end
|
417
|
+
expect ["hello\nworld".u] do with_global(:$/, nil){ "hello\nworld".u.lines } end
|
418
|
+
expect ['hëll hëllö'.u, ' world'.u] do 'hëll hëllö world'.u.lines('llö') end
|
419
|
+
expect ["hello\0".u, 'world'.u] do "hello\0world".u.lines("\0") end
|
420
|
+
expect result.tainted? do 'a'.u.taint.lines.first end
|
421
|
+
expect result.untrusted? do 'a'.u.untrust.lines.first end if untrust
|
422
|
+
|
423
|
+
expect ['hello'.u, ' '.u, 'world'.u] do 'hello world'.u.words.to_a end
|
424
|
+
|
425
|
+
expect nil do ''.u[0, -2] end
|
426
|
+
expect nil do ''.u[0, -1] end
|
427
|
+
expect ''.u do ''.u[0, 0] end
|
428
|
+
expect ''.u do ''.u[0, 1] end
|
429
|
+
expect ''.u do ''.u[0, 2] end
|
430
|
+
expect nil do ''.u[-1, -2] end
|
431
|
+
expect nil do ''.u[-1, -1] end
|
432
|
+
expect nil do ''.u[-1, 0] end
|
433
|
+
expect nil do ''.u[-1, 1] end
|
434
|
+
expect nil do ''.u[-1, 2] end
|
435
|
+
expect nil do ''.u[1, -2] end
|
436
|
+
expect nil do ''.u[1, -1] end
|
437
|
+
expect nil do ''.u[1, 0] end
|
438
|
+
expect nil do ''.u[1, 1] end
|
439
|
+
expect nil do ''.u[1, 2] end
|
440
|
+
expect nil do ''.u[0] end
|
441
|
+
expect 'h'.u do 'hëllö'.u[0] end
|
442
|
+
expect 'ö'.u do 'hëllö'.u[-1] end
|
443
|
+
expect nil do 'hëllö'.u[5] end
|
444
|
+
expect nil do 'hëllö'.u[-6] end
|
445
|
+
expect 'hë'.u do 'hëllö'.u[0, 2] end
|
446
|
+
expect 'lö'.u do 'hëllö'.u[-2, 2] end
|
447
|
+
expect 'lö'.u do 'hëllö'.u[3, 2] end
|
448
|
+
expect 'hël'.u do 'hëllö'.u[0..2] end
|
449
|
+
expect 'hël'.u do 'hëllö'.u[0...3] end
|
450
|
+
expect 'lö'.u do 'hëllö'.u[-2..-1] end
|
451
|
+
expect 'hë'.u do 'hëllö'.u[/\Ah./u] end
|
452
|
+
expect 'lö'.u do 'hëllö'.u[/.ö\z/u] end
|
453
|
+
expect nil do 'hëllö'.u[/other/u] end
|
454
|
+
expect 'hë'.u do 'hëllö'.u['hë'.u] end
|
455
|
+
expect 'lö'.u do 'hëllö'.u['lö'.u] end
|
456
|
+
expect 'hë'.u do 'hëllö'.u['hë'] end
|
457
|
+
expect 'lö'.u do 'hëllö'.u['lö'] end
|
458
|
+
expect nil do 'hëllö'.u['other'.u] end
|
459
|
+
expect nil do 'hëllö'.u['other'] end
|
460
|
+
expect 'hë'.u do 'hëllö'.u[/(..)(..)/u, 1] end
|
461
|
+
expect 'll'.u do 'hëllö'.u[/(..)(..)/u, 2] end
|
462
|
+
expect nil do 'hëllö'.u[/(..)(..)/u, 3] end
|
463
|
+
expect 'll'.u do 'hëllö'.u[/(..)(..)/u, -1] end
|
464
|
+
expect 'hë'.u do 'hëllö'.u[/(..)(..)/u, -2] end
|
465
|
+
expect nil do 'hëllö'.u[/(..)(..)/u, -3] end
|
466
|
+
expect 'l'.u do 'hëllö'.u[stub(:to_int => 2)] end
|
467
|
+
expect ArgumentError do 'hëllö'.u[1, 2, 3] end
|
468
|
+
expect ArgumentError do 'hëllö'.u[] end
|
469
|
+
expect result.tainted? do 'a'.u.taint[0] end
|
470
|
+
expect result.untrusted? do 'a'.u.untrust[0] end if untrust
|
471
|
+
expect result.tainted? do 'a'.u.taint[0, 1] end
|
472
|
+
expect result.untrusted? do 'a'.u.untrust[0, 1] end if untrust
|
473
|
+
expect result.tainted? do 'a'.u.taint[0...1] end
|
474
|
+
expect result.untrusted? do 'a'.u.untrust[0...1] end if untrust
|
475
|
+
expect result.tainted? do 'a'.u.taint[/a/] end
|
476
|
+
expect result.untrusted? do 'a'.u.untrust[/a/] end if untrust
|
477
|
+
expect result.tainted? do 'a'.u[/a/.taint] end
|
478
|
+
expect result.untrusted? do 'a'.u[/a/.untrust] end if untrust
|
479
|
+
expect result.tainted? do 'a'.u[/(a)/.taint, 1] end
|
480
|
+
expect result.untrusted? do 'a'.u[/(a)/.untrust, 1] end if untrust
|
481
|
+
expect result.not.tainted? do 'a'.u.taint['a'.u] end
|
482
|
+
expect result.not.untrusted? do 'a'.u.untrust['a'.u] end if untrust
|
483
|
+
expect result.not.tainted? do 'a'.u.taint['a'] end
|
484
|
+
expect result.not.untrusted? do 'a'.u.untrust['a'] end if untrust
|
485
|
+
expect result.tainted? do 'a'.u['a'.u.taint] end
|
486
|
+
expect result.untrusted? do 'a'.u['a'.u.untrust] end if untrust
|
487
|
+
expect result.tainted? do 'a'.u['a'.taint] end
|
488
|
+
expect result.untrusted? do 'a'.u['a'.untrust] end if untrust
|
489
|
+
|
490
|
+
expect nil do ''.u.byteslice(0, -2) end
|
491
|
+
expect nil do ''.u.byteslice(0, -1) end
|
492
|
+
expect ''.u do ''.u.byteslice(0, 0) end
|
493
|
+
expect ''.u do ''.u.byteslice(0, 1) end
|
494
|
+
expect ''.u do ''.u.byteslice(0, 2) end
|
495
|
+
expect nil do ''.u.byteslice(-1, -2) end
|
496
|
+
expect nil do ''.u.byteslice(-1, -1) end
|
497
|
+
expect nil do ''.u.byteslice(-1, 0) end
|
498
|
+
expect nil do ''.u.byteslice(-1, 1) end
|
499
|
+
expect nil do ''.u.byteslice(-1, 2) end
|
500
|
+
expect nil do ''.u.byteslice(1, -2) end
|
501
|
+
expect nil do ''.u.byteslice(1, -1) end
|
502
|
+
expect nil do ''.u.byteslice(1, 0) end
|
503
|
+
expect nil do ''.u.byteslice(1, 1) end
|
504
|
+
expect nil do ''.u.byteslice(1, 2) end
|
505
|
+
expect nil do ''.u.byteslice(0) end
|
506
|
+
expect 'h'.u do 'hëllö'.u.byteslice(0) end
|
507
|
+
expect "\xb6".u do 'hëllö'.u.byteslice(-1) end
|
508
|
+
expect nil do 'hëllö'.u.byteslice(7) end
|
509
|
+
expect nil do 'hëllö'.u.byteslice(-8) end
|
510
|
+
expect "h\xc3".u do 'hëllö'.u.byteslice(0, 2) end
|
511
|
+
expect 'ö'.u do 'hëllö'.u.byteslice(-2, 2) end
|
512
|
+
expect 'll'.u do 'hëllö'.u.byteslice(3, 2) end
|
513
|
+
expect 'hë'.u do 'hëllö'.u.byteslice(0..2) end
|
514
|
+
expect 'hë'.u do 'hëllö'.u.byteslice(0...3) end
|
515
|
+
expect 'ö'.u do 'hëllö'.u.byteslice(-2..-1) end
|
516
|
+
expect 'l'.u do 'hëllö'.u.byteslice(stub(:to_int => 3)) end
|
517
|
+
expect ArgumentError do 'hëllö'.u.byteslice(1, 2, 3) end
|
518
|
+
expect ArgumentError do 'hëllö'.u.byteslice() end
|
519
|
+
expect result.tainted? do 'a'.u.taint.byteslice(0) end
|
520
|
+
expect result.untrusted? do 'a'.u.untrust.byteslice(0) end if untrust
|
521
|
+
expect result.tainted? do 'a'.u.taint.byteslice(0, 1) end
|
522
|
+
expect result.untrusted? do 'a'.u.untrust.byteslice(0, 1) end if untrust
|
523
|
+
expect result.tainted? do 'a'.u.taint.byteslice(0...1) end
|
524
|
+
expect result.untrusted? do 'a'.u.untrust.byteslice(0...1) end if untrust
|
525
|
+
|
526
|
+
expect 'hello'.u do 'hello'.u.chomp("\n") end
|
527
|
+
expect 'hello'.u do "hello\n".u.chomp("\n") end
|
528
|
+
expect 'hello'.u do with_global(:$/, "\n"){ 'hello'.u.chomp } end
|
529
|
+
expect 'hello'.u do with_global(:$/, "\n"){ "hello\n".u.chomp } end
|
530
|
+
expect 'hello'.u do with_global(:$/, '!'){ 'hello'.u.chomp } end
|
531
|
+
expect 'hello'.u do with_global(:$/, '!'){ 'hello!'.u.chomp } end
|
532
|
+
expect 'hello!!'.u do 'hello!!!'.u.chomp('!') end
|
533
|
+
expect "hello\r\n".u do "hello\r\n\r\n".u.chomp("\n") end
|
534
|
+
expect 'hello'.u do "hello\r".u.chomp("\n") end
|
535
|
+
expect 'hello'.u do "hello\r\n".u.chomp('') end
|
536
|
+
expect "hello".u do "hello\r\n\r\n".u.chomp('') end
|
537
|
+
# NOTE This differs from Ruby because U treats \r as a newline character and
|
538
|
+
# thus removes it.
|
539
|
+
expect 'hello'.u do "hello\r".u.chomp('') end
|
540
|
+
expect 'a'.u do 'a'.u.chomp("\xC3") end
|
541
|
+
expect 'a'.u do 'aā'.u.chomp('ā') end
|
542
|
+
expect result.tainted? do 'hello'.u.taint.chomp end
|
543
|
+
expect result.untrusted? do 'hello'.u.untrust.chomp end if untrust
|
544
|
+
|
545
|
+
expect 'hell'.u do 'hellö'.u.chop end
|
546
|
+
expect 'hellö'.u do "hellö\r\n".u.chop end
|
547
|
+
expect "hellö\n".u do "hellö\n\r".u.chop end
|
548
|
+
expect ''.u do ''.u.chop end
|
549
|
+
expect ''.u do "\r\n".u.chop end
|
550
|
+
expect result.tainted? do 'hello'.u.taint.chop end
|
551
|
+
expect result.untrusted? do 'hello'.u.untrust.chop end if untrust
|
552
|
+
|
553
|
+
expect ''.u do ''.u.chr end
|
554
|
+
expect 'ä'.u do 'ä'.u.chr end
|
555
|
+
expect 'ä'.u do 'äbc'.u.chr end
|
556
|
+
expect result.tainted? do ''.u.taint.chr end
|
557
|
+
expect result.untrusted? do ''.u.untrust.chr end if untrust
|
558
|
+
|
559
|
+
expect 0x00c3 do 'äbc'.u.getbyte(0) end
|
560
|
+
expect 0x00a4 do 'äbc'.u.getbyte(1) end
|
561
|
+
expect nil do 'äbc'.u.getbyte(4) end
|
562
|
+
expect 0x00a4 do 'äbc'.u.getbyte(-3) end
|
563
|
+
expect 0x00c3 do 'äbc'.u.getbyte(-4) end
|
564
|
+
expect nil do 'äbc'.u.getbyte(-5) end
|
565
|
+
|
566
|
+
# TODO Add tests for Unicode whitespace characters
|
567
|
+
expect 'あ'.u do 'あ'.u.lstrip end
|
568
|
+
expect 'あ'.u do ' あ'.u.lstrip end
|
569
|
+
expect 'あ '.u do 'あ '.u.lstrip end
|
570
|
+
expect result.tainted? do 'あ'.u.taint.lstrip end
|
571
|
+
expect result.untrusted? do 'あ'.u.untrust.lstrip end if untrust
|
572
|
+
|
573
|
+
expect ArgumentError.new('empty string') do ''.u.ord end
|
574
|
+
expect 0x00e4 do 'ä'.u.ord end
|
575
|
+
expect 0x00e4 do 'äbc'.u.ord end
|
576
|
+
|
577
|
+
# TODO Add tests for Unicode whitespace characters
|
578
|
+
expect 'あ'.u do 'あ'.u.rstrip end
|
579
|
+
expect ' あ'.u do ' あ'.u.rstrip end
|
580
|
+
expect 'あ'.u do 'あ '.u.rstrip end
|
581
|
+
expect result.tainted? do 'あ'.u.taint.rstrip end
|
582
|
+
expect result.untrusted? do 'あ'.u.untrust.rstrip end if untrust
|
583
|
+
|
584
|
+
# TODO Add tests for Unicode whitespace characters
|
585
|
+
expect 'あ'.u do 'あ'.u.strip end
|
586
|
+
expect 'あ'.u do ' あ'.u.strip end
|
587
|
+
expect 'あ'.u do 'あ '.u.strip end
|
588
|
+
expect 'あ'.u do ' あ '.u.strip end
|
589
|
+
expect result.tainted? do 'あ'.u.taint.strip end
|
590
|
+
expect result.untrusted? do 'あ'.u.untrust.strip end if untrust
|
591
|
+
|
592
|
+
expect 'hëllö'.u do 'hëlLÖ'.u.downcase end
|
593
|
+
expect 'hëllö'.u do 'hëllö'.u.downcase end
|
594
|
+
expect 'hëllö'.u do 'HËLLÖ'.u.downcase end
|
595
|
+
expect "abc\0dëf".u do "ABC\0DËF".u.downcase end
|
596
|
+
expect 'σ'.u do 'Σ'.u.downcase end
|
597
|
+
expect 'ας'.u do 'ΑΣ'.u.downcase end
|
598
|
+
expect 'ασβ'.u do 'ΑΣΒ'.u.downcase end
|
599
|
+
expect 'ας '.u do 'ΑΣ '.u.downcase end
|
600
|
+
expect 'ας’'.u do 'ΑΣ’'.u.downcase end
|
601
|
+
expect '’σ'.u do '’Σ'.u.downcase end
|
602
|
+
expect 'i'.u do 'I'.u.downcase('lt') end
|
603
|
+
expect "i\xcc\x87\xcc\x80\xcc\x87".u do "I\xcc\x80\xcc\x87".u.downcase('lt') end
|
604
|
+
expect "i\xcc\x87\xcc\x87".u do "I\xcc\x87".u.downcase('lt') end
|
605
|
+
expect "i\xcc\x87\xcc\x80".u do "I\xcc\x80".u.downcase('lt') end
|
606
|
+
expect "j\xcc\x87\xcc\x80".u do "J\xcc\x80".u.downcase('lt') end
|
607
|
+
expect "į\xcc\x87\xcc\x80".u do "Į\xcc\x80".u.downcase('lt') end
|
608
|
+
expect "i\xcc\x87\xcc\x80".u do 'Ì'.u.downcase('lt') end
|
609
|
+
expect "i\xcc\x87\xcc\x81".u do 'Í'.u.downcase('lt') end
|
610
|
+
expect "i\xcc\x87\xcc\x83".u do 'Ĩ'.u.downcase('lt') end
|
611
|
+
expect 'i'.u do 'İ'.u.downcase('tr') end
|
612
|
+
expect 'i'.u do 'İ'.u.downcase('az') end
|
613
|
+
expect 'i'.u do 'İ'.u.downcase('tr') end
|
614
|
+
expect 'i'.u do 'İ'.u.downcase('az') end
|
615
|
+
expect 'ı'.u do 'I'.u.downcase('tr') end
|
616
|
+
expect 'ı'.u do 'I'.u.downcase('az') end
|
617
|
+
expect result.tainted? do 'A'.u.taint.downcase end
|
618
|
+
expect result.untrusted? do 'A'.u.untrust.downcase end if untrust
|
619
|
+
|
620
|
+
expect "abc\0ss".u do "abc\0ß".u.foldcase end
|
621
|
+
expect result.tainted? do 'a'.u.taint.foldcase end
|
622
|
+
expect result.untrusted? do 'a'.u.untrust.foldcase end if untrust
|
623
|
+
|
624
|
+
expect 'Ab Iς Ssσ/Ffi'.u do 'aB iς ßσ/ffi'.u.titlecase end
|
625
|
+
expect 'Ijssel Igloo Ijssel'.u do 'ijssEl iglOo IJSSEL'.u.titlecase end
|
626
|
+
expect 'IJssel Igloo IJssel'.u do 'ijssEl iglOo IJSSEL'.u.titlecase('nl') end
|
627
|
+
|
628
|
+
expect 'HËLLÖ'.u do 'hëlLÖ'.u.upcase end
|
629
|
+
expect 'HËLLÖ'.u do 'hëllö'.u.upcase end
|
630
|
+
expect 'HËLLÖ'.u do 'HËLLÖ'.u.upcase end
|
631
|
+
expect "ABC\0DËF".u do "abc\0dëF".u.upcase end
|
632
|
+
expect "I\xcc\x87".u do "i\xcc\x87".u.upcase end
|
633
|
+
expect 'I'.u do "i\xcc\x87".u.upcase('lt') end
|
634
|
+
expect "K\xcc\x87".u do "k\xcc\x87".u.upcase('lt') end
|
635
|
+
expect "A\xcc\x81Ι".u do "a\xcd\x85\xcc\x81".u.upcase end
|
636
|
+
expect 'I'.u do 'i'.u.upcase end
|
637
|
+
expect 'İ'.u do 'i'.u.upcase('tr') end
|
638
|
+
expect result.tainted? do 'a'.u.taint.upcase end
|
639
|
+
expect result.untrusted? do 'a'.u.untrust.upcase end if untrust
|
640
|
+
|
641
|
+
expect ''.u do ''.u.mirror end
|
642
|
+
expect ')'.u do '('.u.mirror end
|
643
|
+
expect ')('.u do '()'.u.mirror end
|
644
|
+
expect result.tainted? do ''.u.taint.mirror end
|
645
|
+
expect result.untrusted? do ''.u.untrust.mirror end if untrust
|
646
|
+
|
647
|
+
expect TypeError.new('not a symbol: 1') do ''.u.normalize(1) end
|
648
|
+
expect ArgumentError.new('unknown normalization form: :ufc') do ''.u.normalize(:ufc) end
|
649
|
+
expect 'Ḋ'.u do "D\xcc\x87".u.normalize(:nfc) end
|
650
|
+
expect result.tainted? do ''.u.taint.normalize end
|
651
|
+
expect result.untrusted? do ''.u.untrust.normalize end if untrust
|
652
|
+
|
653
|
+
expect ''.u do ''.u.reverse end
|
654
|
+
expect 'a'.u do 'a'.u.reverse end
|
655
|
+
expect 'ateb'.u do 'beta'.u.reverse end
|
656
|
+
expect 'madamImadam'.u do 'madamImadam'.u.reverse end
|
657
|
+
expect "alpha\0beta".u do "ateb\0ahpla".u.reverse end
|
658
|
+
expect result.tainted? do 'a'.u.taint.reverse end
|
659
|
+
expect result.untrusted? do 'a'.u.untrust.reverse end if untrust
|
660
|
+
|
661
|
+
expect 'hëllö'.u do 'hëllö'.u.center(4) end
|
662
|
+
expect ' hëllö '.u do 'hëllö'.u.center(11) end
|
663
|
+
expect 'ababaababa'.u do ''.u.center(10, 'ab') end
|
664
|
+
expect 'ababaababab'.u do ''.u.center(11, 'ab') end
|
665
|
+
expect 'あ3あ'.u do '3'.u.center(5, 'あ') end
|
666
|
+
expect ArgumentError.new('zero-width padding') do '3'.u.center(2, '') end
|
667
|
+
expect 'あ3あ'.u do '3'.u.center(5, 'あ ') end
|
668
|
+
expect 'あ3あ '.u do '3'.u.center(6, 'あ ') end
|
669
|
+
expect 'あ 3あ '.u do '3'.u.center(7, 'あ ') end
|
670
|
+
expect ArgumentError.new('padding is too wide to complete rounding (2 > 1)') do '3'.u.center(4, 'あ') end
|
671
|
+
# TODO Adjust this to LONG_MAX in Ruby
|
672
|
+
# expect ArgumentError do ''.u.center(9223372036854775807) end
|
673
|
+
expect result.tainted? do 'a'.u.taint.center(1) end
|
674
|
+
expect result.untrusted? do 'a'.u.untrust.center(1) end if untrust
|
675
|
+
expect result.tainted? do 'a'.u.taint.center(3) end
|
676
|
+
expect result.untrusted? do 'a'.u.untrust.center(3) end if untrust
|
677
|
+
expect result.not.tainted? do 'a'.u.center(1, ' '.taint) end
|
678
|
+
expect result.not.untrusted? do 'a'.u.center(1, ' '.untrust) end if untrust
|
679
|
+
expect result.tainted? do 'a'.u.taint.center(3, ' '.taint) end
|
680
|
+
expect result.untrusted? do 'a'.u.untrust.center(3, ' '.untrust) end if untrust
|
681
|
+
|
682
|
+
expect 'hëllö'.u do 'hëllö'.u.ljust(4) end
|
683
|
+
expect 'hëllö '.u do 'hëllö'.u.ljust(11) end
|
684
|
+
expect 'ababababab'.u do ''.u.ljust(10, 'ab') end
|
685
|
+
expect 'abababababa'.u do ''.u.ljust(11, 'ab') end
|
686
|
+
expect '3ああ'.u do '3'.u.ljust(5, 'あ') end
|
687
|
+
expect ArgumentError.new('zero-width padding') do '3'.u.ljust(2, '') end
|
688
|
+
expect ArgumentError.new('padding is too wide to complete rounding (2 > 1)') do '3'.u.ljust(5, 'あ ') end
|
689
|
+
expect '3あ あ'.u do '3'.u.ljust(6, 'あ ') end
|
690
|
+
expect '3あ あ '.u do '3'.u.ljust(7, 'あ ') end
|
691
|
+
expect ArgumentError.new('padding is too wide to complete rounding (2 > 1)') do '3'.u.ljust(4, 'あ') end
|
692
|
+
expect result.tainted? do 'a'.u.taint.ljust(1) end
|
693
|
+
expect result.untrusted? do 'a'.u.untrust.ljust(1) end if untrust
|
694
|
+
expect result.tainted? do 'a'.u.taint.ljust(3) end
|
695
|
+
expect result.untrusted? do 'a'.u.untrust.ljust(3) end if untrust
|
696
|
+
expect result.not.tainted? do 'a'.u.ljust(1, ' '.taint) end
|
697
|
+
expect result.not.untrusted? do 'a'.u.ljust(1, ' '.untrust) end if untrust
|
698
|
+
expect result.tainted? do 'a'.u.taint.ljust(3, ' '.taint) end
|
699
|
+
expect result.untrusted? do 'a'.u.untrust.ljust(3, ' '.untrust) end if untrust
|
700
|
+
|
701
|
+
expect 'hëllö'.u do 'hëllö'.u.rjust(4) end
|
702
|
+
expect ' hëllö'.u do 'hëllö'.u.rjust(11) end
|
703
|
+
expect 'ababababab'.u do ''.u.rjust(10, 'ab') end
|
704
|
+
expect 'abababababa'.u do ''.u.rjust(11, 'ab') end
|
705
|
+
expect 'ああ3'.u do '3'.u.rjust(5, 'あ') end
|
706
|
+
expect ArgumentError.new('zero-width padding') do '3'.u.rjust(2, '') end
|
707
|
+
expect ArgumentError.new('padding is too wide to complete rounding (2 > 1)') do '3'.u.rjust(5, 'あ ') end
|
708
|
+
expect 'あ あ3'.u do '3'.u.rjust(6, 'あ ') end
|
709
|
+
expect 'あ あ 3'.u do '3'.u.rjust(7, 'あ ') end
|
710
|
+
expect ArgumentError.new('padding is too wide to complete rounding (2 > 1)') do '3'.u.rjust(4, 'あ') end
|
711
|
+
expect result.tainted? do 'a'.u.taint.rjust(1) end
|
712
|
+
expect result.untrusted? do 'a'.u.untrust.rjust(1) end if untrust
|
713
|
+
expect result.tainted? do 'a'.u.taint.rjust(3) end
|
714
|
+
expect result.untrusted? do 'a'.u.untrust.rjust(3) end if untrust
|
715
|
+
expect result.not.tainted? do 'a'.u.rjust(1, ' '.taint) end
|
716
|
+
expect result.not.untrusted? do 'a'.u.rjust(1, ' '.untrust) end if untrust
|
717
|
+
expect result.tainted? do 'a'.u.taint.rjust(3, ' '.taint) end
|
718
|
+
expect result.untrusted? do 'a'.u.untrust.rjust(3, ' '.untrust) end if untrust
|
719
|
+
|
720
|
+
expect 5 do 'hëllö wörld'.u.count('lö') end
|
721
|
+
expect 3 do 'hëllö wörld'.u.count('l', 'lö') end
|
722
|
+
expect 2 do 'hëllö wörld'.u.count('lö', 'ö') end
|
723
|
+
expect 4 do 'hëllö wörld'.u.count('hëllö', '^l') end
|
724
|
+
expect 3 do 'hëllö wörld'.u.count('ej-m') end
|
725
|
+
expect 0 do 'y'.u.count('a\\-z') end
|
726
|
+
expect 5 do 'abcあいう'.u.count('^a') end
|
727
|
+
expect 5 do 'abcあいう'.u.count('^あ') end
|
728
|
+
expect 2 do 'abcあいう'.u.count('a-z', '^a') end
|
729
|
+
expect ArgumentError.new('wrong number of arguments (0 for at least 1)') do 'föö'.u.count end
|
730
|
+
|
731
|
+
expect 'hë wrd'.u do 'hëllö wörld'.u.delete('lö') end
|
732
|
+
expect 'hëö wörd'.u do 'hëllö wörld'.u.delete('l', 'lö') end
|
733
|
+
expect 'hëll wrld'.u do 'hëllö wörld'.u.delete('lö', 'ö') end
|
734
|
+
expect 'hëll wrld'.u do 'hëllö wörld'.u.delete('aëiöu', '^ë') end
|
735
|
+
expect 'hö wörd'.u do 'hëllö wörld'.u.delete('ëj-m') end
|
736
|
+
expect 'a'.u do 'aā'.u.delete('ā') end
|
737
|
+
expect 'a'.u do 'abcあいう'.u.delete('^a') end
|
738
|
+
expect 'bcあいう'.u do 'abcあいう'.u.delete('a') end
|
739
|
+
expect 'あ'.u do 'abcあいう'.u.delete('^あ') end
|
740
|
+
expect ArgumentError.new('wrong number of arguments (0 for at least 1)') do 'föö'.u.delete end
|
741
|
+
expect result.tainted? do 'a'.u.taint.delete('a') end
|
742
|
+
expect result.untrusted? do 'a'.u.untrust.delete('a') end if untrust
|
743
|
+
|
744
|
+
expect 'äbc'.u do 'äääbbbbccc'.u.squeeze end
|
745
|
+
expect 'ää bb cc'.u do 'ää bb cc'.u.squeeze(' ') end
|
746
|
+
expect 'BxTÿWz'.u do 'BxTÿÿÿWzzz'.u.squeeze('a-zä-ÿ') end
|
747
|
+
expect result.tainted? do 'abc'.u.taint.squeeze end
|
748
|
+
expect result.untrusted? do 'abc'.u.untrust.squeeze end if untrust
|
749
|
+
expect result.not.tainted? do 'abc'.u.squeeze('b'.taint) end
|
750
|
+
expect result.not.untrusted? do 'abc'.u.squeeze('b'.untrust) end if untrust
|
751
|
+
|
752
|
+
expect 'hïppö' do 'hëllö'.u.tr('ël', 'ïp') end
|
753
|
+
expect '*ë**ö' do 'hëllö'.u.tr('^aëiöu', '*') end
|
754
|
+
expect 'hal' do 'ibm'.u.tr('b-z', 'a-z') end
|
755
|
+
expect 'hal' do 'hal'.u.tr('a-z', 'a-z') end
|
756
|
+
expect true do a = 'hal'.u; a.tr('a-z', 'a-z').object_id == a.object_id end
|
757
|
+
expect result.tainted? do 'abc'.u.taint.tr('a', 'b') end
|
758
|
+
expect result.untrusted? do 'abc'.u.untrust.tr('a', 'b') end if untrust
|
759
|
+
expect result.not.tainted? do 'abc'.u.tr('a'.taint, 'b') end
|
760
|
+
expect result.not.untrusted? do 'abc'.u.tr('a'.untrust, 'b') end if untrust
|
761
|
+
expect result.not.tainted? do 'abc'.u.tr('a', 'b'.taint) end
|
762
|
+
expect result.not.untrusted? do 'abc'.u.tr('a', 'b'.untrust) end if untrust
|
763
|
+
|
764
|
+
expect 'hïpö' do 'hëllö'.u.tr_s('ël', 'ïp') end
|
765
|
+
expect '*ë*ö' do 'hëllö'.u.tr_s('^aëiöu', '*') end
|
766
|
+
expect 'hal' do 'ibm'.u.tr_s('b-z', 'a-z') end
|
767
|
+
expect 'hal' do 'hal'.u.tr_s('a-z', 'a-z') end
|
768
|
+
expect true do a = 'hal'.u; a.tr_s('a-z', 'a-z').object_id == a.object_id end
|
769
|
+
expect result.tainted? do 'abc'.u.taint.tr_s('a', 'b') end
|
770
|
+
expect result.untrusted? do 'abc'.u.untrust.tr_s('a', 'b') end if untrust
|
771
|
+
expect result.not.tainted? do 'abc'.u.tr_s('a'.taint, 'b') end
|
772
|
+
expect result.not.untrusted? do 'abc'.u.tr_s('a'.untrust, 'b') end if untrust
|
773
|
+
expect result.not.tainted? do 'abc'.u.tr_s('a', 'b'.taint) end
|
774
|
+
expect result.not.untrusted? do 'abc'.u.tr_s('a', 'b'.untrust) end if untrust
|
775
|
+
|
776
|
+
expect ['hë'.u, 'l'.u, 'lö'.u] do 'hëllö'.u.partition(/l/u) end
|
777
|
+
expect ['hë'.u, 'l'.u, 'lö'.u] do 'hëllö'.u.partition('l'.u) end
|
778
|
+
expect ['hë'.u, 'l'.u, 'lö'.u] do 'hëllö'.u.partition('l') end
|
779
|
+
expect TypeError do 'hëllö'.u.partition(0) end
|
780
|
+
expect ['föö'.u, '-'.u, 'bär'.u] do 'föö-bär'.u.partition(stub(:to_str => '-')) end
|
781
|
+
expect [true, true, true] do 'abc'.u.taint.partition(/b/).map(&:tainted?) end
|
782
|
+
expect [true, true, true] do 'abc'.u.untrust.partition(/b/).map(&:untrusted?) end if untrust
|
783
|
+
expect [false, true, false] do 'abc'.u.partition(/b/.taint).map(&:tainted?) end
|
784
|
+
expect [false, true, false] do 'abc'.u.partition(/b/.untrust).map(&:untrusted?) end if untrust
|
785
|
+
expect [true, true, true] do 'abc'.u.taint.partition(/b/.taint).map(&:tainted?) end
|
786
|
+
expect [true, true, true] do 'abc'.u.untrust.partition(/b/.untrust).map(&:untrusted?) end if untrust
|
787
|
+
expect [true, false, true] do 'abc'.u.taint.partition('b').map(&:tainted?) end
|
788
|
+
expect [true, false, true] do 'abc'.u.untrust.partition('b').map(&:untrusted?) end if untrust
|
789
|
+
expect [false, true, false] do 'abc'.u.partition('b'.taint).map(&:tainted?) end
|
790
|
+
expect [false, true, false] do 'abc'.u.partition('b'.untrust).map(&:untrusted?) end if untrust
|
791
|
+
expect [true, true, true] do 'abc'.u.taint.partition('b'.taint).map(&:tainted?) end
|
792
|
+
expect [true, true, true] do 'abc'.u.untrust.partition('b'.untrust).map(&:untrusted?) end if untrust
|
793
|
+
|
794
|
+
expect ['hël'.u, 'l'.u, 'ö'.u] do 'hëllö'.u.rpartition(/l/u) end
|
795
|
+
expect ['hël'.u, 'l'.u, 'ö'.u] do 'hëllö'.u.rpartition('l'.u) end
|
796
|
+
expect ['hël'.u, 'l'.u, 'ö'.u] do 'hëllö'.u.rpartition('l') end
|
797
|
+
expect TypeError do 'hëllö'.u.rpartition(0) end
|
798
|
+
expect ['föö'.u, '-'.u, 'bär'.u] do 'föö-bär'.u.rpartition(stub(:to_str => '-')) end
|
799
|
+
expect [true, true, true] do 'abc'.u.taint.rpartition(/b/).map(&:tainted?) end
|
800
|
+
expect [true, true, true] do 'abc'.u.untrust.rpartition(/b/).map(&:untrusted?) end if untrust
|
801
|
+
expect [false, true, false] do 'abc'.u.rpartition(/b/.taint).map(&:tainted?) end
|
802
|
+
expect [false, true, false] do 'abc'.u.rpartition(/b/.untrust).map(&:untrusted?) end if untrust
|
803
|
+
expect [true, true, true] do 'abc'.u.taint.rpartition(/b/.taint).map(&:tainted?) end
|
804
|
+
expect [true, true, true] do 'abc'.u.untrust.rpartition(/b/.untrust).map(&:untrusted?) end if untrust
|
805
|
+
expect [true, false, true] do 'abc'.u.taint.rpartition('b').map(&:tainted?) end
|
806
|
+
expect [true, false, true] do 'abc'.u.untrust.rpartition('b').map(&:untrusted?) end if untrust
|
807
|
+
expect [false, true, false] do 'abc'.u.rpartition('b'.taint).map(&:tainted?) end
|
808
|
+
expect [false, true, false] do 'abc'.u.rpartition('b'.untrust).map(&:untrusted?) end if untrust
|
809
|
+
expect [true, true, true] do 'abc'.u.taint.rpartition('b'.taint).map(&:tainted?) end
|
810
|
+
expect [true, true, true] do 'abc'.u.untrust.rpartition('b'.untrust).map(&:untrusted?) end if untrust
|
811
|
+
|
812
|
+
expect ['crüel'.u, 'wörld'.u] do 'crüel wörld'.u.scan(word_regex) end
|
813
|
+
expect ['crü'.u, 'el '.u, 'wör'.u] do 'crüel wörld'.u.scan(/.../u) end
|
814
|
+
expect [['crü'.u], ['el '.u], ['wör'.u]] do 'crüel wörld'.u.scan(/(...)/u) end
|
815
|
+
expect ['crüel'.u, 'wörld'.u] do 'crüel wörld'.u.to_enum(:scan, word_regex).to_a end
|
816
|
+
expect ['crü'.u, 'el '.u, 'wör'.u] do 'crüel wörld'.u.to_enum(:scan, /.../u).to_a end
|
817
|
+
expect [['crü'.u], ['el '.u], ['wör'.u]] do 'crüel wörld'.u.to_enum(:scan, /(...)/u).to_a end
|
818
|
+
expect [''.u, ''.u, ''.u, ''.u, ''.u, ''.u, ''.u, ''.u, ''.u, ''.u, ''.u, ''.u] do 'crüel wörld'.u.scan(//u) end
|
819
|
+
expect [true, true] do 'crüel wörld'.u.taint.scan(word_regex).map(&:tainted?) end
|
820
|
+
expect [true, true] do 'crüel wörld'.u.untrust.scan(word_regex).map(&:untrusted?) end if untrust
|
821
|
+
expect [true, true] do 'crüel wörld'.u.scan(word_regex.dup.taint).map(&:tainted?) end
|
822
|
+
expect [true, true] do 'crüel wörld'.u.scan(word_regex.dup.untrust).map(&:untrusted?) end if untrust
|
823
|
+
expect [true] do 'crüel wörld'.u.taint.scan(' ').map(&:tainted?) end
|
824
|
+
expect [true] do 'crüel wörld'.u.untrust.scan(' ').map(&:untrusted?) end if untrust
|
825
|
+
expect [false] do 'crüel wörld'.u.scan(' '.taint).map(&:tainted?) end
|
826
|
+
expect [false] do 'crüel wörld'.u.scan(' '.untrust).map(&:untrusted?) end if untrust
|
827
|
+
expect [] do ''.u.split(''.u, 1) end
|
828
|
+
expect ['abc'.u] do 'abc'.u.split(''.u, 1) end
|
829
|
+
expect [true, true] do 'abc'.u.taint.split(/b/).map(&:tainted?) end
|
830
|
+
expect [true, true] do 'abc'.u.untrust.split(/b/).map(&:untrusted?) end if untrust
|
831
|
+
expect [false, false] do 'abc'.u.split(/b/.taint).map(&:tainted?) end
|
832
|
+
expect [false, false] do 'abc'.u.split(/b/.untrust).map(&:untrusted?) end if untrust
|
833
|
+
expect [true, true] do 'abc'.u.taint.split('b').map(&:tainted?) end
|
834
|
+
expect [true, true] do 'abc'.u.untrust.split('b').map(&:untrusted?) end if untrust
|
835
|
+
expect [false, false] do 'abc'.u.split('b'.taint).map(&:tainted?) end
|
836
|
+
expect [false, false] do 'abc'.u.split('b'.untrust).map(&:untrusted?) end if untrust
|
837
|
+
expect [' ä '.u, ' b '.u, ' c '.u] do ' ä | b | c '.u.split('|'.u) end
|
838
|
+
expect ['ä|b|c'.u] do 'ä|b|c'.u.split('|'.u, 1) end
|
839
|
+
expect ['ä'.u, 'b|c'.u] do 'ä|b|c'.u.split('|'.u, 2) end
|
840
|
+
expect ['ä'.u, 'b'.u, 'c'.u] do 'ä|b|c'.u.split('|'.u, 3) end
|
841
|
+
expect ['ä'.u, 'b'.u, 'c'.u, ''.u] do 'ä|b|c|'.u.split('|'.u, -1) end
|
842
|
+
expect ['ä'.u, 'b'.u, 'c'.u, ''.u, ''.u] do 'ä|b|c||'.u.split('|'.u, -1) end
|
843
|
+
expect ['ä'.u, ''.u, 'b'.u, 'c'.u] do 'ä||b|c|'.u.split('|'.u) end
|
844
|
+
expect ['ä'.u, ''.u, 'b'.u, 'c'.u, ''.u] do 'ä||b|c|'.u.split('|'.u, -1) end
|
845
|
+
expect [] do with_global(:$;, nil){ ' '.u.split } end
|
846
|
+
expect [''.u] do with_global(:$;, nil){ ' '.u.split(nil, -1) } end
|
847
|
+
expect ['ä'.u, 'b c'.u] do with_global(:$;, nil){ 'ä b c'.u.split(nil, 2) } end
|
848
|
+
expect ['ä'.u, 'b'.u, 'c'.u] do with_global(:$;, nil){ " ä b\t c ".u.split } end
|
849
|
+
expect ['ä'.u, "b\t c ".u] do with_global(:$;, nil){ " ä b\t c ".u.split(nil, 2) } end
|
850
|
+
expect ['ä'.u, 'b'.u, 'c'.u] do with_global(:$;, nil){ " ä b\t c".split } end
|
851
|
+
expect ['ä'.u, 'b'.u, 'c'.u] do with_global(:$;, nil){ " ä b\t c".u.split(' ') } end
|
852
|
+
expect [] do ''.split(//u, 1) end
|
853
|
+
expect ['ä'.u, 'b'.u, 'c'.u] do 'äXXbXXcXX'.u.split(/X./u) end
|
854
|
+
expect ['ä'.u, 'b'.u, 'c'.u] do 'äbc'.u.split(//u) end
|
855
|
+
expect ['b'.u, 'c'.u] do 'bäc'.u.split(/ä?/u) end
|
856
|
+
|
857
|
+
expect 'bbc'.u do 'abc'.u.gsub('a', 'b') end
|
858
|
+
expect 'h*ll*'.u do 'hello'.u.gsub(/[aeiou]/u, '*'.u) end
|
859
|
+
expect 'h*ll*'.u do 'hëllö'.u.gsub(/[äëïöü]/u, '*'.u) end
|
860
|
+
expect 'h<ë>ll<ö>'.u do 'hëllö'.u.gsub(/([äëïöü])/u, '<\\1>'.u) end
|
861
|
+
expect 'h<ë>ll<ö>'.u do 'hëllö'.u.gsub(/([ëö])/u, 'ë'.u => '<ë>'.u, 'ö'.u => '<ö>'.u) end
|
862
|
+
expect 'h ë l l ö '.u do 'hëllö'.u.gsub(/./u){ |s| s[0].to_s + ' ' } end
|
863
|
+
expect 'HËLL-ö'.u do 'hëllö'.u.gsub(/(hëll)(.)/u){ |s| $1.u.upcase + '-'.u + $2.u } end
|
864
|
+
expect ArgumentError do 'hëllö'.gsub end
|
865
|
+
expect result.tainted? do 'a'.u.taint.gsub(/a/, 'b') end
|
866
|
+
expect result.untrusted? do 'a'.u.untrust.gsub(/a/, 'b') end if untrust
|
867
|
+
expect result.not.tainted? do 'a'.u.gsub(/a/.taint, 'b') end
|
868
|
+
expect result.not.untrusted? do 'a'.u.gsub(/a/.untrust, 'b') end if untrust
|
869
|
+
expect result.tainted? do 'a'.u.gsub(/a/, 'b'.taint) end
|
870
|
+
expect result.untrusted? do 'a'.u.gsub(/a/, 'b'.untrust) end if untrust
|
871
|
+
expect result.tainted? do 'a'.u.gsub(/a/, {'a'.u => 'b'}.taint) end
|
872
|
+
expect result.not.untrusted? do 'a'.u.gsub(/a/, {'a'.u => 'b'}.untrust) end if untrust
|
873
|
+
expect result.tainted? do 'a'.u.gsub(/a/, {'a'.u => 'b'.taint}) end
|
874
|
+
expect result.untrusted? do 'a'.u.gsub(/a/, {'a'.u => 'b'.untrust}) end if untrust
|
875
|
+
expect result.tainted? do 'a'.u.gsub(/a/, Hash.new{ 'b'.taint }) end
|
876
|
+
expect result.untrusted? do 'a'.u.gsub(/a/, Hash.new{ 'b'.untrust }) end if untrust
|
877
|
+
expect result.tainted? do 'a'.u.gsub(/a/){ 'b'.taint } end
|
878
|
+
expect result.untrusted? do 'a'.u.gsub(/a/){ 'b'.untrust } end if untrust
|
879
|
+
|
880
|
+
expect 'bbc'.u do 'abc'.u.sub('a', 'b') end
|
881
|
+
expect 'h*llo'.u do 'hello'.u.sub(/[aeiou]/u, '*'.u) end
|
882
|
+
expect 'h*llö'.u do 'hëllö'.u.sub(/[äëïöü]/u, '*'.u) end
|
883
|
+
expect 'h<ë>llö'.u do 'hëllö'.u.sub(/([äëïöü])/u, '<\\1>'.u) end
|
884
|
+
expect 'h<ë>llö'.u do 'hëllö'.u.sub(/([ëö])/u, 'ë'.u => '<ë>'.u, 'ö'.u => '<ö>'.u) end
|
885
|
+
expect 'h ëllö'.u do 'hëllö'.u.sub(/./u){ |s| s[0].to_s + ' ' } end
|
886
|
+
expect 'HËLL-ö'.u do 'hëllö'.u.sub(/(hëll)(.)/u){ |s| $1.u.upcase + '-'.u + $2.u } end
|
887
|
+
expect ArgumentError do 'hëllö'.sub end
|
888
|
+
expect result.tainted? do 'a'.u.taint.sub(/a/, 'b') end
|
889
|
+
expect result.untrusted? do 'a'.u.untrust.sub(/a/, 'b') end if untrust
|
890
|
+
expect result.not.tainted? do 'a'.u.sub(/a/.taint, 'b') end
|
891
|
+
expect result.not.untrusted? do 'a'.u.sub(/a/.untrust, 'b') end if untrust
|
892
|
+
expect result.tainted? do 'a'.u.sub(/a/, 'b'.taint) end
|
893
|
+
expect result.untrusted? do 'a'.u.sub(/a/, 'b'.untrust) end if untrust
|
894
|
+
expect result.tainted? do 'a'.u.sub(/a/, {'a'.u => 'b'}.taint) end
|
895
|
+
expect result.untrusted? do 'a'.u.sub(/a/, {'a'.u => 'b'}.untrust) end if untrust
|
896
|
+
expect result.tainted? do 'a'.u.sub(/a/, {'a'.u => 'b'.taint}) end
|
897
|
+
expect result.untrusted? do 'a'.u.sub(/a/, {'a'.u => 'b'.untrust}) end if untrust
|
898
|
+
expect result.tainted? do 'a'.u.sub(/a/, Hash.new{ 'b'.taint }) end
|
899
|
+
expect result.untrusted? do 'a'.u.sub(/a/, Hash.new{ 'b'.untrust }) end if untrust
|
900
|
+
expect result.tainted? do 'a'.u.sub(/a/){ 'b'.taint } end
|
901
|
+
expect result.untrusted? do 'a'.u.sub(/a/){ 'b'.untrust } end if untrust
|
902
|
+
|
903
|
+
expect 'hëll'.u do 'hëll'.u + ''.u end
|
904
|
+
expect 'ö'.u do ''.u + 'ö'.u end
|
905
|
+
expect 'hëllö'.u do 'hëll'.u + 'ö'.u end
|
906
|
+
expect result.tainted? do ''.u.taint + ''.u end
|
907
|
+
expect result.tainted? do ''.u + ''.u.taint end
|
908
|
+
expect result.not.untrusted? do ''.u.untrust + ''.u end if untrust
|
909
|
+
expect result.not.untrusted? do ''.u + ''.u.untrust end if untrust
|
910
|
+
|
911
|
+
expect ArgumentError do '*'.u * -1 end
|
912
|
+
expect ''.u do ''.u * 10 end
|
913
|
+
expect '**********'.u do '*'.u * 10 end
|
914
|
+
# TODO Test LONG_MAX.
|
915
|
+
expect result.tainted? do ''.u.taint * 10 end
|
916
|
+
expect result.untrusted? do ''.u.untrust * 10 end if untrust
|
917
|
+
|
918
|
+
expect 'äbc'.u do 'äbc'.u % [] end
|
919
|
+
|
920
|
+
expect ArgumentError.new('invalid flag ‘ ’ given to directive ‘%’') do '% %'.u % [] end
|
921
|
+
expect ArgumentError.new('invalid flags “ #” given to directive ‘%’') do '% #%'.u % [] end
|
922
|
+
expect ArgumentError.new('invalid flags “ #+-0” given to directive ‘%’') do '% #+-0%'.u % [] end
|
923
|
+
expect ArgumentError.new('directive does not take an argument: %') do '%1$%'.u % [1] end
|
924
|
+
expect '%'.u do '%%'.u % [] end
|
925
|
+
expect 'ä%c'.u do 'ä%%c'.u % [] end
|
926
|
+
|
927
|
+
expect "%\nb".u do "%\nb".u % [] end
|
928
|
+
expect "%\0b".u do "%\0b".u % [] end
|
929
|
+
expect "%\0%".u do "%\0%".u % [] end
|
930
|
+
expect ArgumentError.new('directive does not allow specifying a width: %') do "%12\nb".u % [] end
|
931
|
+
expect 'b%'.u do "b%".u % [] end
|
932
|
+
expect ArgumentError.new('directive missing after absolute argument number') do "b%12".u % [] end
|
933
|
+
expect ArgumentError.new('directive missing after flags') do "b%#".u % [] end
|
934
|
+
expect ArgumentError.new('directive missing after absolute argument number') do "b%1$".u % [] end
|
935
|
+
expect ArgumentError.new('directive missing after argument name') do "b%<a>".u % [] end
|
936
|
+
|
937
|
+
expect ArgumentError.new('invalid flag ‘ ’ given to directive ‘c’') do '% c'.u % 0x00e4 end
|
938
|
+
expect ArgumentError.new('directive does not allow specifying a precision: c') do '%.1c'.u % [0x00e4] end
|
939
|
+
expect ArgumentError.new('wrong number of arguments (0 for at least 1)') do '%cbc'.u % [] end
|
940
|
+
expect 'äbc'.u do '%cbc'.u % 0x00e4 end
|
941
|
+
expect ' äbc'.u do '%2cbc'.u % 0x00e4 end
|
942
|
+
expect 'ä bc'.u do '%-2cbc'.u % 0x00e4 end
|
943
|
+
expect ArgumentError.new('wrong number of arguments (1 for at least 2)') do '%*cbc'.u % 0x00e4 end
|
944
|
+
expect ' äbc'.u do '%*cbc'.u % [2, 0x00e4] end
|
945
|
+
expect ArgumentError.new('cannot use positional argument numbers after absolute argument numbers') do '%*1$cbc'.u % [2, 0x00e4] end
|
946
|
+
expect ' äbc'.u do '%2$*1$cbc'.u % [2, 0x00e4] end
|
947
|
+
expect 'äbc'.u do '%<a>cbc'.u % { :a => 0x00e4 } end
|
948
|
+
expect ' äbc'.u do '%<a>2cbc'.u % { :a => 0x00e4 } end
|
949
|
+
expect 'あ'.u do '%c'.u % 0x3042 end
|
950
|
+
expect 'あ'.u do '%2c'.u % 0x3042 end
|
951
|
+
expect ' あ'.u do '%3c'.u % 0x3042 end
|
952
|
+
expect ' '.u do '%3c'.u % 0x200b end
|
953
|
+
expect ArgumentError.new('%c requires a character') do '%c'.u % "" end
|
954
|
+
expect 'ä'.u do '%c'.u % "ä" end
|
955
|
+
expect 'ä'.u do '%c'.u % "äbc" end
|
956
|
+
expect ArgumentError.new('cannot use absolute argument number 1: relative argument number already used') do '%c%1$c'.u % [0x00e4] end
|
957
|
+
expect ArgumentError.new('cannot use absolute argument number 1: named argument already used') do '%<a>c%1$c'.u % { :a => 0x00e4 } end
|
958
|
+
expect ArgumentError.new('absolute argument number beyond end of argument list: 1 > 0') do '%1$%'.u % [] end
|
959
|
+
expect ArgumentError.new('cannot use named argument “a”: relative argument number already used') do '%c%<a>c'.u % [0x00e4] end
|
960
|
+
expect ArgumentError.new('cannot use named argument “a”: absolute argument number already used') do '%1$c%<a>c'.u % [0x00e4] end
|
961
|
+
expect ArgumentError.new('one Hash argument required when using named arguments in format') do '%<a>cbc'.u % 0x00e4 end
|
962
|
+
expect((defined?(KeyError) ? KeyError : ArgumentError).new('named argument not found: a')){ '%<a>cbc'.u % { :b => 0x00e4 } }
|
963
|
+
expect ArgumentError.new('cannot use positional argument numbers after absolute argument numbers') do '%1$c%c'.u % [0x00e4] end
|
964
|
+
expect ArgumentError.new('cannot use positional argument numbers after named arguments') do '%<a>c%c'.u % { :a => 0x00e4 } end
|
965
|
+
expect ArgumentError.new('wrong number of arguments (0 for at least 1)') do '%c'.u % [] end
|
966
|
+
|
967
|
+
# TODO Add flag checks?
|
968
|
+
expect 'äbc'.u do '%sc'.u % ['äb'.u] end
|
969
|
+
expect 'äc'.u do '%.1sc'.u % ['äb'.u] end
|
970
|
+
expect ' äbc'.u do '%3sc'.u % ['äb'.u] end
|
971
|
+
expect 'äb c'.u do '%-3sc'.u % ['äb'.u] end
|
972
|
+
expect ' äc'.u do '%3.1sc'.u % ['äb'.u] end
|
973
|
+
expect 'ä c'.u do '%-3.1sc'.u % ['äb'.u] end
|
974
|
+
expect 'äbc'.u do '%{a}c'.u % { :a => 'äb'.u } end
|
975
|
+
expect 'äb3.3c'.u do '%{a}3.3c'.u % { :a => 'äb'.u } end
|
976
|
+
expect 'あ'.u do '%.1s'.u % ['あbc'.u] end
|
977
|
+
expect 'あ'.u do '%.2s'.u % ['あbc'.u] end
|
978
|
+
expect 'あb'.u do '%.3s'.u % ['あbc'.u] end
|
979
|
+
expect 'あbc'.u do '%.4s'.u % ['あbc'.u] end
|
980
|
+
expect ' あbc'.u do '%5s'.u % ['あbc'.u] end
|
981
|
+
|
982
|
+
# TODO Add flag checks?
|
983
|
+
expect '"äbc".u'.u do '%p'.u % ['äbc'.u] end
|
984
|
+
|
985
|
+
expect '123'.u do '%d'.u % 123 end
|
986
|
+
expect '123'.u do '%d'.u % 123.to_f end
|
987
|
+
expect '123'.u do '%d'.u % '123' end
|
988
|
+
expect '123'.u do '%d'.u % '123'.u end
|
989
|
+
expect '123'.u do '%d'.u % [stub(:to_int => 123)] end
|
990
|
+
expect ArgumentError do '%d'.u % '123.0' end
|
991
|
+
expect ArgumentError do '%d'.u % '123.0'.u end
|
992
|
+
|
993
|
+
expect ' 123'.u do '% d'.u % 123 end
|
994
|
+
expect '+123'.u do '%+d'.u % 123 end
|
995
|
+
expect '-123'.u do '%d'.u % -123 end
|
996
|
+
|
997
|
+
expect ' 123'.u do '%6d'.u % 123 end
|
998
|
+
expect ' 123'.u do '% 6d'.u % 123 end
|
999
|
+
expect ' +123'.u do '%+6d'.u % 123 end
|
1000
|
+
expect ' -123'.u do '%6d'.u % -123 end
|
1001
|
+
|
1002
|
+
expect '000123'.u do '%06d'.u % 123 end
|
1003
|
+
expect ' 00123'.u do '% 06d'.u % 123 end
|
1004
|
+
expect '+00123'.u do '%+06d'.u % 123 end
|
1005
|
+
expect '-00123'.u do '%06d'.u % -123 end
|
1006
|
+
|
1007
|
+
expect '123 '.u do '%-6d'.u % 123 end
|
1008
|
+
expect ' 123 '.u do '%- 6d'.u % 123 end
|
1009
|
+
expect '+123 '.u do '%-+6d'.u % 123 end
|
1010
|
+
expect '-123 '.u do '%-6d'.u % -123 end
|
1011
|
+
|
1012
|
+
expect '123 '.u do with_verbose(nil){ '%-06d'.u % 123 } end
|
1013
|
+
|
1014
|
+
expect '000123'.u do '%.6d'.u % 123 end
|
1015
|
+
expect ' 000123'.u do '% .6d'.u % 123 end
|
1016
|
+
expect '+000123'.u do '%+.6d'.u % 123 end
|
1017
|
+
expect '-000123'.u do '%.6d'.u % -123 end
|
1018
|
+
|
1019
|
+
expect ' 000123'.u do with_verbose(nil){ '%09.6d'.u % 123 } end
|
1020
|
+
expect ' 000123'.u do '%9.6d'.u % 123 end
|
1021
|
+
expect ' 000123'.u do '% 9.6d'.u % 123 end
|
1022
|
+
expect ' +000123'.u do '%+9.6d'.u % 123 end
|
1023
|
+
expect ' -000123'.u do '%9.6d'.u % -123 end
|
1024
|
+
|
1025
|
+
expect '000123 '.u do '%-9.6d'.u % 123 end
|
1026
|
+
expect ' 000123 '.u do '%- 9.6d'.u % 123 end
|
1027
|
+
expect '+000123 '.u do '%-+9.6d'.u % 123 end
|
1028
|
+
expect '-000123 '.u do '%-9.6d'.u % -123 end
|
1029
|
+
|
1030
|
+
# TODO Need a lot more tests for Bignum code-paths.
|
1031
|
+
expect Bignum do 12345678901234567890 end
|
1032
|
+
expect '12345678901234567890'.u do '%d'.u % 12345678901234567890 end
|
1033
|
+
|
1034
|
+
expect '173'.u do '%o'.u % 123 end
|
1035
|
+
|
1036
|
+
expect ' 173'.u do '% o'.u % 123 end
|
1037
|
+
expect '+173'.u do '%+o'.u % 123 end
|
1038
|
+
expect '-173'.u do '%+o'.u % -123 end
|
1039
|
+
|
1040
|
+
expect ' 173'.u do '%6o'.u % 123 end
|
1041
|
+
expect ' 173'.u do '% 6o'.u % 123 end
|
1042
|
+
expect ' +173'.u do '%+6o'.u % 123 end
|
1043
|
+
expect ' -173'.u do '%+6o'.u % -123 end
|
1044
|
+
|
1045
|
+
expect '000173'.u do '%06o'.u % 123 end
|
1046
|
+
expect ' 00173'.u do '% 06o'.u % 123 end
|
1047
|
+
expect '+00173'.u do '%+06o'.u % 123 end
|
1048
|
+
expect '-00173'.u do '%+06o'.u % -123 end
|
1049
|
+
|
1050
|
+
expect '173 '.u do '%-6o'.u % 123 end
|
1051
|
+
expect ' 173 '.u do '%- 6o'.u % 123 end
|
1052
|
+
expect '+173 '.u do '%-+6o'.u % 123 end
|
1053
|
+
expect '-173 '.u do '%-+6o'.u % -123 end
|
1054
|
+
|
1055
|
+
expect '000173'.u do '%.6o'.u % 123 end
|
1056
|
+
expect ' 000173'.u do '% .6o'.u % 123 end
|
1057
|
+
expect '+000173'.u do '%+.6o'.u % 123 end
|
1058
|
+
expect '-000173'.u do '%+.6o'.u % -123 end
|
1059
|
+
|
1060
|
+
expect ' 000173'.u do '%9.6o'.u % 123 end
|
1061
|
+
expect ' 000173'.u do '% 9.6o'.u % 123 end
|
1062
|
+
expect ' +000173'.u do '%+9.6o'.u % 123 end
|
1063
|
+
expect ' -000173'.u do '%+9.6o'.u % -123 end
|
1064
|
+
|
1065
|
+
expect '+173'.u do with_verbose(nil){ '%+ o'.u % 123 } end
|
1066
|
+
expect warning('‘o’ directive ignores ‘ ’ flag when ‘+’ flag has been specified') do '%+ o'.u % 123 end
|
1067
|
+
expect '-173'.u do with_verbose(nil){ '%+ o'.u % -123 } end
|
1068
|
+
expect '0173'.u do '%#o'.u % 123 end
|
1069
|
+
expect '..7605'.u do '%o'.u % -123 end
|
1070
|
+
expect '..7605'.u do with_verbose(nil){ '%#o'.u % -123 } end
|
1071
|
+
expect warning('‘o’ directive ignores ‘#’ flag when given a negative argument') do '%#o'.u % -123 end
|
1072
|
+
|
1073
|
+
expect ' ..7777605'.u do '%12.9o'.u % -123 end
|
1074
|
+
expect ' 000000173'.u do '%#12.9o'.u % 123 end
|
1075
|
+
expect ' ..7777605'.u do with_verbose(nil){ '%#12.9o'.u % -123 } end
|
1076
|
+
|
1077
|
+
expect '0' do '%o'.u % 0 end
|
1078
|
+
expect '0' do '%#o'.u % 0 end
|
1079
|
+
expect ' 0' do '%3o'.u % 0 end
|
1080
|
+
expect ' 0' do '%#3o'.u % 0 end
|
1081
|
+
expect '000' do '%03o'.u % 0 end
|
1082
|
+
expect '000' do '%#03o'.u % 0 end
|
1083
|
+
expect ' 0' do '%6o'.u % 0 end
|
1084
|
+
expect ' 0' do '%#6o'.u % 0 end
|
1085
|
+
expect ' 000' do '%6.3o'.u % 0 end
|
1086
|
+
expect ' 000' do '%#6.3o'.u % 0 end
|
1087
|
+
expect ' 000' do with_verbose(nil){ '%06.3o'.u % 0 } end
|
1088
|
+
expect ' 000' do with_verbose(nil){ '%#06.3o'.u % 0 } end
|
1089
|
+
|
1090
|
+
# TODO Need a lot more Bignum tests.
|
1091
|
+
expect Bignum do 01255245230635307605322 end
|
1092
|
+
expect '1255245230635307605322'.u do '%o'.u % 01255245230635307605322 end
|
1093
|
+
|
1094
|
+
expect '10e'.u do '%x'.u % 0x10e end
|
1095
|
+
|
1096
|
+
expect '0x10e'.u do '%#x'.u % 0x10e end
|
1097
|
+
|
1098
|
+
expect '0'.u do '%#x'.u % 0x0 end
|
1099
|
+
|
1100
|
+
expect ' 10e'.u do '% x'.u % +0x10e end
|
1101
|
+
expect '+10e'.u do '%+x'.u % +0x10e end
|
1102
|
+
expect '-10e'.u do '%+x'.u % -0x10e end
|
1103
|
+
|
1104
|
+
expect ' 0x10e'.u do '%# x'.u % +0x10e end
|
1105
|
+
expect '+0x10e'.u do '%#+x'.u % +0x10e end
|
1106
|
+
expect '-0x10e'.u do '%#+x'.u % -0x10e end
|
1107
|
+
|
1108
|
+
expect ' 10e'.u do '%6x'.u % 0x10e end
|
1109
|
+
expect ' 10e'.u do '% 6x'.u % 0x10e end
|
1110
|
+
expect ' +10e'.u do '%+6x'.u % 0x10e end
|
1111
|
+
expect ' -10e'.u do '%+6x'.u % -0x10e end
|
1112
|
+
|
1113
|
+
expect ' 0x10e'.u do '%#6x'.u % 0x10e end
|
1114
|
+
expect ' 0x10e'.u do '%# 6x'.u % 0x10e end
|
1115
|
+
expect '+0x10e'.u do '%#+6x'.u % 0x10e end
|
1116
|
+
expect '-0x10e'.u do '%#+6x'.u % -0x10e end
|
1117
|
+
|
1118
|
+
expect '00010e'.u do '%06x'.u % 0x10e end
|
1119
|
+
expect ' 0010e'.u do '% 06x'.u % 0x10e end
|
1120
|
+
expect '+0010e'.u do '%+06x'.u % 0x10e end
|
1121
|
+
expect '-0010e'.u do '%+06x'.u % -0x10e end
|
1122
|
+
|
1123
|
+
expect '0x010e'.u do '%#06x'.u % 0x10e end
|
1124
|
+
expect ' 0x10e'.u do '%# 06x'.u % 0x10e end
|
1125
|
+
expect '+0x10e'.u do '%#+06x'.u % 0x10e end
|
1126
|
+
expect '-0x10e'.u do '%#+06x'.u % -0x10e end
|
1127
|
+
|
1128
|
+
expect '10e '.u do '%-6x'.u % 0x10e end
|
1129
|
+
expect ' 10e '.u do '%- 6x'.u % 0x10e end
|
1130
|
+
expect '+10e '.u do '%-+6x'.u % 0x10e end
|
1131
|
+
expect '-10e '.u do '%-+6x'.u % -0x10e end
|
1132
|
+
|
1133
|
+
expect '0x10e '.u do '%#-6x'.u % 0x10e end
|
1134
|
+
expect ' 0x10e'.u do '%#- 6x'.u % 0x10e end
|
1135
|
+
expect '+0x10e'.u do '%#-+6x'.u % 0x10e end
|
1136
|
+
expect '-0x10e'.u do '%#-+6x'.u % -0x10e end
|
1137
|
+
|
1138
|
+
expect '00010e'.u do '%.6x'.u % 0x10e end
|
1139
|
+
expect ' 00010e'.u do '% .6x'.u % 0x10e end
|
1140
|
+
expect '+00010e'.u do '%+.6x'.u % 0x10e end
|
1141
|
+
expect '-00010e'.u do '%+.6x'.u % -0x10e end
|
1142
|
+
|
1143
|
+
expect '0x00010e'.u do '%#.6x'.u % 0x10e end
|
1144
|
+
expect ' 0x00010e'.u do '%# .6x'.u % 0x10e end
|
1145
|
+
expect '+0x00010e'.u do '%#+.6x'.u % 0x10e end
|
1146
|
+
expect '-0x00010e'.u do '%#+.6x'.u % -0x10e end
|
1147
|
+
|
1148
|
+
expect ' 00010e'.u do '%9.6x'.u % 0x10e end
|
1149
|
+
expect ' 00010e'.u do '% 9.6x'.u % 0x10e end
|
1150
|
+
expect ' +00010e'.u do '%+9.6x'.u % 0x10e end
|
1151
|
+
expect ' -00010e'.u do '%+9.6x'.u % -0x10e end
|
1152
|
+
|
1153
|
+
expect ' 0x00010e'.u do '%#9.6x'.u % 0x10e end
|
1154
|
+
expect ' 0x00010e'.u do '%# 9.6x'.u % 0x10e end
|
1155
|
+
expect '+0x00010e'.u do '%#+9.6x'.u % 0x10e end
|
1156
|
+
expect '-0x00010e'.u do '%#+9.6x'.u % -0x10e end
|
1157
|
+
|
1158
|
+
expect '+10e'.u do with_verbose(nil){ '%+ x'.u % 0x10e } end
|
1159
|
+
expect warning('‘x’ directive ignores ‘ ’ flag when ‘+’ flag has been specified') do '%+ x'.u % 0x10e end
|
1160
|
+
expect '-10e'.u do with_verbose(nil){ '%+ x'.u % -0x10e } end
|
1161
|
+
expect '..fef2'.u do '%x'.u % -0x10e end
|
1162
|
+
expect '0x..fef2'.u do '%#x'.u % -0x10e end
|
1163
|
+
expect ' ..ffffef2'.u do '%12.9x'.u % -0x10e end
|
1164
|
+
expect ' 0x00000010e'.u do '%#12.9x'.u % 0x10e end
|
1165
|
+
expect ' 0x..ffffef2'.u do '%#12.9x'.u % -0x10e end
|
1166
|
+
|
1167
|
+
expect '10E'.u do '%X'.u % 0x10e end
|
1168
|
+
expect '0X10E'.u do '%#X'.u % 0x10e end
|
1169
|
+
expect '-10E'.u do '%+X'.u % -0x10e end
|
1170
|
+
expect '-0X10E'.u do '%#+X'.u % -0x10e end
|
1171
|
+
expect '..FEF2'.u do '%-X'.u % -0x10e end
|
1172
|
+
expect '0X..FEF2'.u do '%#-X'.u % -0x10e end
|
1173
|
+
|
1174
|
+
expect '101'.u do '%b'.u % 0b101 end
|
1175
|
+
|
1176
|
+
expect '0b101'.u do '%#b'.u % 0b101 end
|
1177
|
+
|
1178
|
+
expect '0'.u do '%#b'.u % 0b0 end
|
1179
|
+
|
1180
|
+
expect ' 101'.u do '% b'.u % +0b101 end
|
1181
|
+
expect '+101'.u do '%+b'.u % +0b101 end
|
1182
|
+
expect '-101'.u do '%+b'.u % -0b101 end
|
1183
|
+
|
1184
|
+
expect ' 0b101'.u do '%# b'.u % +0b101 end
|
1185
|
+
expect '+0b101'.u do '%#+b'.u % +0b101 end
|
1186
|
+
expect '-0b101'.u do '%#+b'.u % -0b101 end
|
1187
|
+
|
1188
|
+
expect ' 101'.u do '%6b'.u % 0b101 end
|
1189
|
+
expect ' 101'.u do '% 6b'.u % 0b101 end
|
1190
|
+
expect ' +101'.u do '%+6b'.u % 0b101 end
|
1191
|
+
expect ' -101'.u do '%+6b'.u % -0b101 end
|
1192
|
+
|
1193
|
+
expect ' 0b101'.u do '%#6b'.u % 0b101 end
|
1194
|
+
expect ' 0b101'.u do '%# 6b'.u % 0b101 end
|
1195
|
+
expect '+0b101'.u do '%#+6b'.u % 0b101 end
|
1196
|
+
expect '-0b101'.u do '%#+6b'.u % -0b101 end
|
1197
|
+
|
1198
|
+
expect '000101'.u do '%06b'.u % 0b101 end
|
1199
|
+
expect ' 00101'.u do '% 06b'.u % 0b101 end
|
1200
|
+
expect '+00101'.u do '%+06b'.u % 0b101 end
|
1201
|
+
expect '-00101'.u do '%+06b'.u % -0b101 end
|
1202
|
+
|
1203
|
+
expect '0b0101'.u do '%#06b'.u % 0b101 end
|
1204
|
+
expect ' 0b101'.u do '%# 06b'.u % 0b101 end
|
1205
|
+
expect '+0b101'.u do '%#+06b'.u % 0b101 end
|
1206
|
+
expect '-0b101'.u do '%#+06b'.u % -0b101 end
|
1207
|
+
|
1208
|
+
expect '101 '.u do '%-6b'.u % 0b101 end
|
1209
|
+
expect ' 101 '.u do '%- 6b'.u % 0b101 end
|
1210
|
+
expect '+101 '.u do '%-+6b'.u % 0b101 end
|
1211
|
+
expect '-101 '.u do '%-+6b'.u % -0b101 end
|
1212
|
+
|
1213
|
+
expect '0b101 '.u do '%#-6b'.u % 0b101 end
|
1214
|
+
expect ' 0b101'.u do '%#- 6b'.u % 0b101 end
|
1215
|
+
expect '+0b101'.u do '%#-+6b'.u % 0b101 end
|
1216
|
+
expect '-0b101'.u do '%#-+6b'.u % -0b101 end
|
1217
|
+
|
1218
|
+
expect '000101'.u do '%.6b'.u % 0b101 end
|
1219
|
+
expect ' 000101'.u do '% .6b'.u % 0b101 end
|
1220
|
+
expect '+000101'.u do '%+.6b'.u % 0b101 end
|
1221
|
+
expect '-000101'.u do '%+.6b'.u % -0b101 end
|
1222
|
+
|
1223
|
+
expect '0b000101'.u do '%#.6b'.u % 0b101 end
|
1224
|
+
expect ' 0b000101'.u do '%# .6b'.u % 0b101 end
|
1225
|
+
expect '+0b000101'.u do '%#+.6b'.u % 0b101 end
|
1226
|
+
expect '-0b000101'.u do '%#+.6b'.u % -0b101 end
|
1227
|
+
|
1228
|
+
expect ' 000101'.u do '%9.6b'.u % 0b101 end
|
1229
|
+
expect ' 000101'.u do '% 9.6b'.u % 0b101 end
|
1230
|
+
expect ' +000101'.u do '%+9.6b'.u % 0b101 end
|
1231
|
+
expect ' -000101'.u do '%+9.6b'.u % -0b101 end
|
1232
|
+
|
1233
|
+
expect ' 0b000101'.u do '%#9.6b'.u % 0b101 end
|
1234
|
+
expect ' 0b000101'.u do '%# 9.6b'.u % 0b101 end
|
1235
|
+
expect '+0b000101'.u do '%#+9.6b'.u % 0b101 end
|
1236
|
+
expect '-0b000101'.u do '%#+9.6b'.u % -0b101 end
|
1237
|
+
|
1238
|
+
expect '+101'.u do with_verbose(nil){ '%+ b'.u % 0b101 } end
|
1239
|
+
expect warning('‘b’ directive ignores ‘ ’ flag when ‘+’ flag has been specified') do '%+ b'.u % 0b101 end
|
1240
|
+
expect '-101'.u do with_verbose(nil){ '%+ b'.u % -0b101 } end
|
1241
|
+
expect '..1011'.u do '%b'.u % -0b101 end
|
1242
|
+
expect '0b..1011'.u do '%#b'.u % -0b101 end
|
1243
|
+
expect ' ..1111011'.u do '%12.9b'.u % -0b101 end
|
1244
|
+
expect ' 0b000000101'.u do '%#12.9b'.u % 0b101 end
|
1245
|
+
expect ' 0b..1111011'.u do '%#12.9b'.u % -0b101 end
|
1246
|
+
|
1247
|
+
expect '0B101'.u do '%#B'.u % 0b101 end
|
1248
|
+
|
1249
|
+
expect 'NaN'.u do '%f'.u % (0.0/0.0) end
|
1250
|
+
expect 'NaN'.u do '%-f'.u % (0.0/0.0) end
|
1251
|
+
expect '+NaN'.u do '%+f'.u % (0.0/0.0) end
|
1252
|
+
expect ' NaN'.u do '% f'.u % (0.0/0.0) end
|
1253
|
+
|
1254
|
+
expect ' NaN'.u do '%6f'.u % (0.0/0.0) end
|
1255
|
+
expect ' +NaN'.u do '%+6f'.u % (0.0/0.0) end
|
1256
|
+
expect ' NaN'.u do '% 6f'.u % (0.0/0.0) end
|
1257
|
+
expect ' +NaN'.u do with_verbose(nil){ '%+ 6f'.u % (0.0/0.0) } end
|
1258
|
+
|
1259
|
+
expect ' NaN'.u do '%06f'.u % (0.0/0.0) end
|
1260
|
+
expect ' +NaN'.u do '%+06f'.u % (0.0/0.0) end
|
1261
|
+
expect ' NaN'.u do '% 06f'.u % (0.0/0.0) end
|
1262
|
+
expect ' +NaN'.u do with_verbose(nil){ '%+ 06f'.u % (0.0/0.0) } end
|
1263
|
+
|
1264
|
+
expect 'NaN '.u do '%-6f'.u % (0.0/0.0) end
|
1265
|
+
expect 'NaN '.u do '%-06f'.u % (0.0/0.0) end
|
1266
|
+
expect '+NaN '.u do '%-+6f'.u % (0.0/0.0) end
|
1267
|
+
expect '+NaN '.u do '%-+06f'.u % (0.0/0.0) end
|
1268
|
+
expect ' NaN '.u do '%- 6f'.u % (0.0/0.0) end
|
1269
|
+
expect ' NaN '.u do '%- 06f'.u % (0.0/0.0) end
|
1270
|
+
|
1271
|
+
expect 'Inf'.u do '%f'.u % (1.0/0.0) end
|
1272
|
+
expect 'Inf'.u do '%-f'.u % (1.0/0.0) end
|
1273
|
+
expect '+Inf'.u do '%+f'.u % (1.0/0.0) end
|
1274
|
+
expect '-Inf'.u do '%+f'.u % -(1.0/0.0) end
|
1275
|
+
expect ' Inf'.u do '% f'.u % (1.0/0.0) end
|
1276
|
+
|
1277
|
+
expect ' Inf'.u do '%6f'.u % (1.0/0.0) end
|
1278
|
+
expect ' +Inf'.u do '%+6f'.u % (1.0/0.0) end
|
1279
|
+
expect ' -Inf'.u do '%+6f'.u % -(1.0/0.0) end
|
1280
|
+
expect ' Inf'.u do '% 6f'.u % (1.0/0.0) end
|
1281
|
+
expect ' +Inf'.u do with_verbose(nil){ '%+ 6f'.u % (1.0/0.0) } end
|
1282
|
+
|
1283
|
+
expect ' Inf'.u do '%06f'.u % (1.0/0.0) end
|
1284
|
+
expect ' +Inf'.u do '%+06f'.u % (1.0/0.0) end
|
1285
|
+
expect ' -Inf'.u do '%+06f'.u % -(1.0/0.0) end
|
1286
|
+
expect ' Inf'.u do '% 06f'.u % (1.0/0.0) end
|
1287
|
+
expect ' +Inf'.u do with_verbose(nil){ '%+ 06f'.u % (1.0/0.0) } end
|
1288
|
+
|
1289
|
+
expect 'Inf '.u do '%-6f'.u % (1.0/0.0) end
|
1290
|
+
expect 'Inf '.u do '%-06f'.u % (1.0/0.0) end
|
1291
|
+
expect '+Inf '.u do '%-+6f'.u % (1.0/0.0) end
|
1292
|
+
expect '+Inf '.u do '%-+06f'.u % (1.0/0.0) end
|
1293
|
+
expect '-Inf '.u do '%-+6f'.u % -(1.0/0.0) end
|
1294
|
+
expect '-Inf '.u do '%-+06f'.u % -(1.0/0.0) end
|
1295
|
+
expect ' Inf '.u do '%- 6f'.u % (1.0/0.0) end
|
1296
|
+
expect ' Inf '.u do '%- 06f'.u % (1.0/0.0) end
|
1297
|
+
|
1298
|
+
# TODO Probably sizeof(double)-dependent.
|
1299
|
+
expect '179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368'.u do '%.0f'.u % 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368 end
|
1300
|
+
|
1301
|
+
expect ' -0.'.u do '%#10.0f'.u % -0.5 end
|
1302
|
+
|
1303
|
+
# NOTE This needs to be fixed.
|
1304
|
+
# expect U::String do '%#+-0 .2147483638f'.u % 1 end
|
1305
|
+
|
1306
|
+
# TODO These two give different results in Ruby 1.8 and Ruby 1.9.
|
1307
|
+
# expect '0x2p+1'.u do '%.0a'.u % 3.875 end
|
1308
|
+
# expect '-0x2.0p+1'.u do '%.1a'.u % -3.9921875 end
|
1309
|
+
expect '0x0p+0'.u do '%a'.u % 0.0 end
|
1310
|
+
expect '-0x0p+0'.u do '%a'.u % -0.0 end
|
1311
|
+
expect '0x1p+1'.u do '%a'.u % 2.0 end
|
1312
|
+
expect '0x1p+0'.u do '%a'.u % 1.0 end
|
1313
|
+
expect '0x1p-1'.u do '%a'.u % 0.5 end
|
1314
|
+
expect '0x1p+10'.u do '%a'.u % 1024 end
|
1315
|
+
# TODO Probably sizeof(double)-dependent.
|
1316
|
+
expect '0x1.23456p+789'.u do '%a'.u % 3.704450999893983e+237 end
|
1317
|
+
# TODO This is sizeof(double)-dependent.
|
1318
|
+
# expect '0x0.0000000000001p-1022'.u do '%a'.u % 4.9e-324 end
|
1319
|
+
|
1320
|
+
expect ' -0x1p+0'.u do '%10a'.u % -1 end
|
1321
|
+
expect ' -0x1.8p+0'.u do '%10a'.u % -1.5 end
|
1322
|
+
expect ' -0x1.4p+0'.u do '%10a'.u % -1.25 end
|
1323
|
+
expect ' -0x1.2p+0'.u do '%10a'.u % -1.125 end
|
1324
|
+
expect ' -0x1.1p+0'.u do '%10a'.u % -1.0625 end
|
1325
|
+
expect '-0x1.08p+0'.u do '%10a'.u % -1.03125 end
|
1326
|
+
|
1327
|
+
expect '-0x0001p+0'.u do '%010a'.u % -1 end
|
1328
|
+
expect '-0x01.8p+0'.u do '%010a'.u % -1.5 end
|
1329
|
+
expect '-0x01.4p+0'.u do '%010a'.u % -1.25 end
|
1330
|
+
expect '-0x01.2p+0'.u do '%010a'.u % -1.125 end
|
1331
|
+
expect '-0x01.1p+0'.u do '%010a'.u % -1.0625 end
|
1332
|
+
expect '-0x1.08p+0'.u do '%010a'.u % -1.03125 end
|
1333
|
+
|
1334
|
+
expect '1.000000e+06'.u do '%e' % 1.000000e+06 end
|
1335
|
+
expect '1.000000E+06'.u do '%E' % 1.000000E+06 end
|
1336
|
+
|
1337
|
+
expect '1e+06'.u do '%g' % 1e+06 end
|
1338
|
+
expect '1E+06'.u do '%G' % 1E+06 end
|
1339
|
+
|
1340
|
+
expect result.tainted? do '%s'.u.taint % ['abc'] end
|
1341
|
+
expect result.not.untrusted? do '%s'.u.untrust % ['abc'] end if untrust
|
1342
|
+
expect result.tainted? do '%s'.u.taint % ['abc'.taint] end
|
1343
|
+
expect result.not.untrusted? do '%s'.u.untrust % ['abc'.untrust] end if untrust
|
1344
|
+
expect result.not.tainted? do '%c'.u % ['a'.taint] end
|
1345
|
+
expect result.not.untrusted? do '%c'.u % ['a'.untrust] end if untrust
|
1346
|
+
expect result.tainted? do '%s'.u % ['abc'.taint] end
|
1347
|
+
expect result.not.untrusted? do '%s'.u % ['abc'.untrust] end if untrust
|
1348
|
+
expect result.tainted? do '%p'.u % ['abc'.taint] end
|
1349
|
+
expect result.not.untrusted? do '%p'.u % ['abc'.untrust] end if untrust
|
1350
|
+
|
1351
|
+
expect '"abc".u'.u do "abc".u.dump end
|
1352
|
+
expect '"\u{e4}bc".u'.u do "äbc".u.dump end
|
1353
|
+
expect '"\xC3".u'.u do "\xC3".u.dump end
|
1354
|
+
expect '"\xF1\x80\x80".u'.u do "\xF1\x80\x80".u.dump end
|
1355
|
+
expect '"\"\\\\\n\r\t\f\v\b\a\e".u'.u do "\"\\\n\r\t\f\v\b\a\e".u.dump end
|
1356
|
+
expect '"\#$\#@\#{}".u'.u do '#$#@#{}'.u.dump end
|
1357
|
+
expect result.tainted? do ''.u.taint.dump end
|
1358
|
+
expect result.untrusted? do ''.u.untrust.dump end if untrust
|
1359
|
+
|
1360
|
+
expect '"abc".u'.u do "abc".u.inspect end
|
1361
|
+
expect '"äbc".u'.u do "äbc".u.inspect end
|
1362
|
+
expect '"\xC3".u'.u do "\xC3".u.inspect end
|
1363
|
+
expect result.not.print? do [0x007F].pack('U').u end
|
1364
|
+
expect '"\u007F".u'.u do [0x007F].pack('U').u.inspect end
|
1365
|
+
expect result.not.print? do [0x110BD].pack('U').u end
|
1366
|
+
expect '"\u{110BD}".u'.u do [0x110BD].pack('U').u.inspect end
|
1367
|
+
expect '"\"\\\\\n\r\t\f\v\b\a\e".u'.u do "\"\\\n\r\t\f\v\b\a\e".u.inspect end
|
1368
|
+
expect '"#\xC3".u'.u do "#\xC3".u.inspect end
|
1369
|
+
expect '"\#$\#@\#{}".u'.u do '#$#@#{}'.u.inspect end
|
1370
|
+
expect result.tainted? do ''.u.taint.inspect end
|
1371
|
+
expect result.untrusted? do ''.u.untrust.inspect end if untrust
|
1372
|
+
|
1373
|
+
expect true do 'hëllö'.u.hash == 'hëllö'.u.hash end
|
1374
|
+
expect false do 'hëllö'.u.hash == 'hëlLÖ'.u.hash end
|
1375
|
+
expect false do 'a'.u.hash == "a\0".u.hash end
|
1376
|
+
|
1377
|
+
expect 255 do '0xff'.u.hex end
|
1378
|
+
expect(-255) do '-0xff'.u.hex end
|
1379
|
+
expect 255 do 'ff'.u.hex end
|
1380
|
+
expect(-255) do '-ff'.u.hex end
|
1381
|
+
expect 0 do '-ralph'.u.hex end
|
1382
|
+
expect(-15) do '-fred'.u.hex end
|
1383
|
+
expect 15 do 'fred'.u.hex end
|
1384
|
+
# TODO Add tests for Unicode digit values.
|
1385
|
+
|
1386
|
+
# TODO: Add tests for Unicode digit values.
|
1387
|
+
expect 255 do '0377'.u.oct end
|
1388
|
+
expect 255 do '377'.u.oct end
|
1389
|
+
expect(-255) do '-0377'.u.oct end
|
1390
|
+
expect(-255) do '-377'.u.oct end
|
1391
|
+
expect 0 do '00'.u.oct end
|
1392
|
+
expect 24 do '030OO'.u.oct end
|
1393
|
+
|
1394
|
+
expect 1480 do '1480ft/sec'.u.to_i end
|
1395
|
+
expect 0 do 'speed of sound in water @20C = 1480ft/sec'.u.to_i end
|
1396
|
+
expect 0 do ' 0'.u.to_i end
|
1397
|
+
expect 0 do '+0'.u.to_i end
|
1398
|
+
expect 0 do '-0'.u.to_i end
|
1399
|
+
expect 0 do '--0'.u.to_i end
|
1400
|
+
expect 16 do '0x10'.u.to_i(0) end
|
1401
|
+
expect 16 do '0X10'.u.to_i(0) end
|
1402
|
+
expect 2 do '0b10'.u.to_i(0) end
|
1403
|
+
expect 2 do '0B10'.u.to_i(0) end
|
1404
|
+
expect 8 do '0o10'.u.to_i(0) end
|
1405
|
+
expect 8 do '0O10'.u.to_i(0) end
|
1406
|
+
expect 10 do '0d10'.u.to_i(0) end
|
1407
|
+
expect 10 do '0D10'.u.to_i(0) end
|
1408
|
+
expect 8 do '010'.u.to_i(0) end
|
1409
|
+
expect ArgumentError do '010'.u.to_i(-10) end
|
1410
|
+
expect ArgumentError do '0'.u.to_i(1) end
|
1411
|
+
expect ArgumentError do '0'.u.to_i(37) end
|
1412
|
+
expect 0 do 'z'.u.to_i(10) end
|
1413
|
+
expect 35 do 'z'.u.to_i(36) end
|
1414
|
+
expect 12 do '1_2'.u.to_i(10) end
|
1415
|
+
expect 0x4000_0000 do '1073741824'.u.to_i(10) end
|
1416
|
+
expect 0x4000_0000_0000_0000 do '4611686018427387904'.u.to_i(10) end
|
1417
|
+
expect 1 do '1__2'.u.to_i(10) end
|
1418
|
+
expect 1 do '1_z'.u.to_i(10) end
|
1419
|
+
expect 1 do '١'.u.to_i end
|
1420
|
+
|
1421
|
+
expect String do ''.u.to_str end
|
1422
|
+
expect '' do ''.u.to_str end
|
1423
|
+
if defined? Encoding
|
1424
|
+
expect Encoding::UTF_8 do ''.u.to_str.encoding end
|
1425
|
+
expect Encoding::UTF_8 do ''.encode(Encoding::ASCII).u.to_str.encoding end
|
1426
|
+
end
|
1427
|
+
|
1428
|
+
if defined? Encoding
|
1429
|
+
expect Encoding::ASCII_8BIT do ''.u.b.encoding end
|
1430
|
+
end
|
1431
|
+
|
1432
|
+
expect :koala do 'koala'.u.to_sym end
|
1433
|
+
expect :'köälä' do 'köälä'.u.to_sym end
|
1434
|
+
|
1435
|
+
expect :koala do 'koala'.u.intern end
|
1436
|
+
expect :'köälä' do 'köälä'.u.intern end
|
1437
|
+
|
1438
|
+
expect ''.u do |o| o.u end
|
1439
|
+
end
|