change directory
[chise/ruby.git] / t / tc_str.rb
1 #!/usr/bin/env ruby
2 # by eto 2003-0112
3
4 require 'test/unit'
5 $LOAD_PATH << '../lib'
6 require 'chise'
7 include CHISE
8
9 class TC_String < Test::Unit::TestCase
10   def setup
11     @str = "文字列"
12   end
13   def test_str
14     ar = []
15     @str.each_char {|char| ar << char }
16     assert_equal(["文","字","列"], ar)
17     assert_equal(["文","字","列"], @str.to_a)
18     assert_equal("文", @str.char_at(0))
19     assert_equal("字", @str.char_at(1))
20     assert_equal("列", @str.char_at(2))
21     assert_equal(nil, @str.char_at(3))
22     assert_equal("列", @str.char_at(-1))
23   end
24   def test_attributes
25     assert_equal(23383, "字".ucs)
26     assert_raises(NameError, message=""){
27       assert_equal(23383, "字字".ucs) #エラーが発生する
28     }
29     assert_equal(25991, "文".ucs)
30     assert_raises(NameError, message=""){
31       assert_equal(25991, @str.ucs) #エラーが発生する
32     }
33   end
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   def test_method
62     str = @str.map_char {|ch|
63       ch+ch
64     }
65     assert_equal("文文字字列列", str)
66     assert_equal("文字列", @str)
67     str = @str.map_char! {|ch|
68       ch+ch
69     }
70     assert_equal("文文字字列列", str)
71     assert_equal("文文字字列列", @str)
72     assert_equal("文文字字列列", @str)
73
74 #    assert_equal("<文,C1-4546>", "文".inspect_x)
75 #    assert_equal("<字,J90-3B7A>", "字".inspect_x)
76 #    assert_equal("<列,J90-4E73>", "列".inspect_x)
77 #    assert_equal("<文,C1-4546><字,J90-3B7A><列,J90-4E73>", "文字列".inspect_x)
78
79     ins = "字".inspect_all
80 #    assert_match(/^<字,J90-3B7A,/, ins)
81     assert_match(/^<字,#x5b57,/, ins)
82     assert_match(/=big5:42610/, ins)
83     assert_match(/=cns11643-1:18291/, ins)
84     assert_match(/=gb2312:22358/, ins)
85     assert_match(/=daikanwa:6942/, ins)
86     assert_match(/ideographic-radical:39/, ins)
87     assert_match(/ideographic-strokes:3/, ins)
88     assert_match(/=ks-x1001:27950/, ins)
89     assert_match(/shinjigen-2:1777/, ins)
90     assert_match(/total-strokes:6/, ins)
91     assert_match(/=ucs:23383/, ins)
92     assert_match(/=gt:8734/, ins)
93     assert_match(/=gt-k:1624/, ins)
94     assert_match(/=gt-pj-1:15226/, ins)
95     assert_match(/=jis-x0208:15226/, ins)
96   end
97 end
98
99 #----------------------------------------------------------------------end.