diff options
author | duerst <duerst@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-06-07 07:13:39 +0000 |
---|---|---|
committer | duerst <duerst@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2016-06-07 07:13:39 +0000 |
commit | b1b4d25bb966d4f2e8c98a1f92ed4c91a81e336c (patch) | |
tree | 22f04b0ad45de47dd39798a2a3f22683298cffd3 /test/ruby/enc | |
parent | 67b1723f28d1f694b7049f252e1c1e99bbf63834 (diff) | |
download | ruby-b1b4d25bb966d4f2e8c98a1f92ed4c91a81e336c.tar.gz |
* test/ruby/enc/test_case_comprehensive: Add regression tests for
current ASCII-only case conversion.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@55307 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/ruby/enc')
-rw-r--r-- | test/ruby/enc/test_case_comprehensive.rb | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/test/ruby/enc/test_case_comprehensive.rb b/test/ruby/enc/test_case_comprehensive.rb index f040e6be83..bb767f1ea9 100644 --- a/test/ruby/enc/test_case_comprehensive.rb +++ b/test/ruby/enc/test_case_comprehensive.rb @@ -127,6 +127,56 @@ class TestComprehensiveCaseFold < Test::Unit::TestCase end end + # temporary test to avoid regression when switching to primitives + def self.generate_ascii_only_case_mapping_tests (encoding) + all_tests + # preselect codepoints to speed up testing for small encodings + codepoints = @@codepoints.select do |code| + begin + code.encode(encoding) + true + rescue Encoding::UndefinedConversionError + false + end + end + define_method "test_#{encoding}_upcase" do + codepoints.each do |code| + begin + source = code.encode(encoding) * 5 + target = source.tr 'a-z', 'A-Z' + result = source.upcase + assert_equal target, result, + "from #{code*5} (#{source.dump}) expected #{target.dump} but was #{result.dump}" + rescue Encoding::UndefinedConversionError + end + end + end + define_method "test_#{encoding}_downcase" do + codepoints.each do |code| + begin + source = code.encode(encoding) * 5 + target = source.tr 'A-Z', 'a-z' + result = source.downcase + assert_equal target, result, + "from #{code*5} (#{source.dump}) expected #{target.dump} but was #{result.dump}" + rescue Encoding::UndefinedConversionError + end + end + end + define_method "test_#{encoding}_capitalize" do + codepoints.each do |code| + begin + source = code.encode(encoding) * 5 + target = source[0].tr('a-z', 'A-Z') + source[1..-1].tr('A-Z', 'a-z') + result = source.capitalize + assert_equal target, result, + "from #{code*5} (#{source.dump}) expected #{target.dump} but was #{result.dump}" + rescue Encoding::UndefinedConversionError + end + end + end + end + def check_file_available(filename) expanded = self.class.expand_filename(filename) assert File.exist?(expanded), "File #{expanded} missing." @@ -136,6 +186,39 @@ class TestComprehensiveCaseFold < Test::Unit::TestCase %w[UnicodeData CaseFolding SpecialCasing].each { |f| check_file_available f } end + generate_ascii_only_case_mapping_tests 'ISO-8859-1' + generate_ascii_only_case_mapping_tests 'ISO-8859-2' + generate_ascii_only_case_mapping_tests 'ISO-8859-3' + generate_ascii_only_case_mapping_tests 'ISO-8859-4' + generate_ascii_only_case_mapping_tests 'ISO-8859-5' + generate_ascii_only_case_mapping_tests 'ISO-8859-6' + generate_ascii_only_case_mapping_tests 'ISO-8859-7' + generate_ascii_only_case_mapping_tests 'ISO-8859-8' + generate_ascii_only_case_mapping_tests 'ISO-8859-9' + generate_ascii_only_case_mapping_tests 'ISO-8859-10' + generate_ascii_only_case_mapping_tests 'ISO-8859-11' + generate_ascii_only_case_mapping_tests 'ISO-8859-13' + generate_ascii_only_case_mapping_tests 'ISO-8859-14' + generate_ascii_only_case_mapping_tests 'ISO-8859-15' + generate_ascii_only_case_mapping_tests 'ISO-8859-16' + generate_ascii_only_case_mapping_tests 'KOI8-R' + generate_ascii_only_case_mapping_tests 'KOI8-U' + generate_ascii_only_case_mapping_tests 'Big5' + generate_ascii_only_case_mapping_tests 'EUC-JP' + generate_ascii_only_case_mapping_tests 'EUC-KR' + generate_ascii_only_case_mapping_tests 'GB18030' + generate_ascii_only_case_mapping_tests 'GB2312' + generate_ascii_only_case_mapping_tests 'GBK' + generate_ascii_only_case_mapping_tests 'Shift_JIS' + generate_ascii_only_case_mapping_tests 'Windows-31J' + generate_ascii_only_case_mapping_tests 'Windows-1250' + generate_ascii_only_case_mapping_tests 'Windows-1251' + generate_ascii_only_case_mapping_tests 'Windows-1252' + generate_ascii_only_case_mapping_tests 'Windows-1253' + generate_ascii_only_case_mapping_tests 'Windows-1254' + generate_ascii_only_case_mapping_tests 'Windows-1255' + generate_ascii_only_case_mapping_tests 'Windows-1256' + generate_ascii_only_case_mapping_tests 'Windows-1257' generate_case_mapping_tests 'US-ASCII' generate_case_mapping_tests 'ASCII-8BIT' generate_case_mapping_tests 'UTF-8' |