i
[chise/ruby.git] / test / test-str.rb
1 #!/usr/bin/env ruby
2 # Copyright (C) 2002-2004 Kouichirou Eto, All rights reserved.
3
4 require "common"
5
6 class TestString < Test::Unit::TestCase
7   def setup
8     @str = "文字列"
9   end
10
11   def test_str
12     ar = []
13     @str.each_char {|char| ar << char }
14     assert_equal(["文","字","列"], ar)
15     assert_equal(["文","字","列"], @str.to_a)
16     assert_equal("文", @str.char_at(0))
17     assert_equal("字", @str.char_at(1))
18     assert_equal("列", @str.char_at(2))
19     assert_equal(nil, @str.char_at(3))
20     assert_equal("列", @str.char_at(-1))
21   end
22
23   def test_attributes
24     assert_equal(23383, "字".ucs)
25     assert_raises(NameError, message=""){
26       assert_equal(23383, "字字".ucs) #エラーが発生する
27     }
28     assert_equal(25991, "文".ucs)
29     assert_raises(NameError, message=""){
30       assert_equal(25991, @str.ucs) #エラーが発生する
31     }
32   end
33
34   def test_er
35     @char = @str.char_at(1)
36     assert_equal(@char, Character.get("&J90-3B7A;").to_s, "jisx0208")
37     assert_equal("字", Character.get("&J90-3B7A;").to_s, "jisx0208")
38     assert_equal("字", "&J90-3B7A;".de_er, "jisx0208")
39     assert_equal("文字", "文&J90-3B7A;".de_er, "with other character, at the bottom")
40     assert_equal("字文", "&J90-3B7A;文".de_er, "at the top")
41     assert_equal("文字字", "文&J90-3B7A;&J90-3B7A;".de_er, "two ERs")
42     assert_equal("文字文字", "文&J90-3B7A;文&J90-3B7A;".de_er, "two ERs")
43     assert_equal("文字", "文&MCS-00005B57;".de_er, "mcs")
44     assert_equal("文字", "文&M-06942;".de_er, "morohashi")
45     assert_equal("字", "字".de_er)
46
47     str = "文&J90-3B7A;"
48     str2 = str.de_er #本体に変更無し
49     assert_equal("文&J90-3B7A;", str)
50     assert_equal("文字", str2)
51     str3 = str.de_er! #本体が変わります
52     assert_equal("文字", str)
53     assert_equal("文字", str3)
54
55     assert_equal("字", "&MCS-00005B57;".de_er)
56     assert_equal("字", "&U-5B57;".de_er)
57     assert_equal("字", "&U+5B57;".de_er)
58 #    assert_equal("", "&nosucher;".de_er)
59     assert_equal("字", "&U-5b57;".de_er)
60   end
61
62   def test_method
63     str = @str.map_char {|ch|
64       ch+ch
65     }
66     assert_equal("文文字字列列", str)
67     assert_equal("文字列", @str)
68     str = @str.map_char! {|ch|
69       ch+ch
70     }
71     assert_equal("文文字字列列", str)
72     assert_equal("文文字字列列", @str)
73     assert_equal("文文字字列列", @str)
74
75 #    assert_equal("<文,C1-4546>", "文".inspect_x)
76 #    assert_equal("<字,J90-3B7A>", "字".inspect_x)
77 #    assert_equal("<列,J90-4E73>", "列".inspect_x)
78 #    assert_equal("<文,C1-4546><字,J90-3B7A><列,J90-4E73>", "文字列".inspect_x)
79
80     ins = "字".inspect_all
81 #    assert_match(/^<字,J90-3B7A,/, ins)
82     assert_match(/^<字,#x5b57,/, ins)
83     assert_match(/=big5:42610/, ins)
84     assert_match(/=cns11643-1:18291/, ins)
85     assert_match(/=gb2312:22358/, ins)
86     assert_match(/=daikanwa:6942/, ins)
87     assert_match(/ideographic-radical:39/, ins)
88     assert_match(/ideographic-strokes:3/, ins)
89     assert_match(/=ks-x1001:27950/, ins)
90     assert_match(/shinjigen-2:1777/, ins)
91     assert_match(/total-strokes:6/, ins)
92     assert_match(/=ucs:23383/, ins)
93     assert_match(/=gt:8734/, ins)
94     assert_match(/=gt-k:1624/, ins)
95     assert_match(/=gt-pj-1:15226/, ins)
96     assert_match(/=jis-x0208:15226/, ins)
97   end
98
99 end