bd0c1b71a7e53f090aff6e4b7e1433edf4d7166d
[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 << '../src'
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_equal(23383, "字字".ucs) #エラーが発生する
27     assert_equal(25991, "文".ucs)
28     #assert_equal(25991, @str.ucs) #エラーが発生する
29   end
30   def test_er
31     @char = @str.char_at(1)
32     assert_equal(@char, Character.get("&J90-3B7A;").to_s, "jisx0208")
33     assert_equal("字", Character.get("&J90-3B7A;").to_s, "jisx0208")
34     assert_equal("字", "&J90-3B7A;".de_er, "jisx0208")
35     assert_equal("文字", "文&J90-3B7A;".de_er, "with other character, at the bottom")
36     assert_equal("字文", "&J90-3B7A;文".de_er, "at the top")
37     assert_equal("文字字", "文&J90-3B7A;&J90-3B7A;".de_er, "two ERs")
38     assert_equal("文字文字", "文&J90-3B7A;文&J90-3B7A;".de_er, "two ERs")
39     assert_equal("文字", "文&MCS-00005B57;".de_er, "mcs")
40     assert_equal("文字", "文&M-06942;".de_er, "morohashi")
41     assert_equal("字", "字".de_er)
42
43     str = "文&J90-3B7A;"
44     str2 = str.de_er #本体に変更無し
45     assert_equal("文&J90-3B7A;", str)
46     assert_equal("文字", str2)
47     str3 = str.de_er! #本体が変わります
48     assert_equal("文字", str)
49     assert_equal("文字", str3)
50
51     assert_equal("字", "&MCS-00005B57;".de_er)
52     assert_equal("字", "&U-5B57;".de_er)
53     assert_equal("字", "&U+5B57;".de_er)
54 #    assert_equal("", "&nosucher;".de_er)
55     assert_equal("字", "&U-5b57;".de_er)
56   end
57   def test_method
58     str = @str.map_char {|ch|
59       ch+ch
60     }
61     assert_equal("文文字字列列", str)
62     assert_equal("文字列", @str)
63     str = @str.map_char! {|ch|
64       ch+ch
65     }
66     assert_equal("文文字字列列", str)
67     assert_equal("文文字字列列", @str)
68     assert_equal("文文字字列列", @str)
69
70 #    assert_equal("<文,C1-4546>", "文".inspect_x)
71 #    assert_equal("<字,J90-3B7A>", "字".inspect_x)
72 #    assert_equal("<列,J90-4E73>", "列".inspect_x)
73 #    assert_equal("<文,C1-4546><字,J90-3B7A><列,J90-4E73>", "文字列".inspect_x)
74
75     ins = "字".inspect_all
76 #    assert_match(/^<字,J90-3B7A,/, ins)
77     assert_match(/chinese-big5:42610/, ins)
78     assert_match(/chinese-cns11643-1:18291/, ins)
79     assert_match(/chinese-gb2312:22358/, ins)
80     assert_match(/chinese-isoir165:22358/, ins)
81     assert_match(/ideograph-daikanwa:6942/, ins)
82     assert_match(/ideographic-radical:39/, ins)
83     assert_match(/ideographic-strokes:3/, ins)
84     assert_match(/korean-ksc5601:27950/, ins)
85     assert_match(/shinjigen-2:1777/, ins)
86     assert_match(/total-strokes:6/, ins)
87     assert_match(/ucs:23383/, ins)
88   end
89 end
90
91 #----------------------------------------------------------------------end.