9 class TC_Character < Test::Unit::TestCase
10 def setup() @char = Character.get("字") end #UTF8で与えること
12 assert_equal(23383, char.char_id, "translate to char_id")
13 assert_equal(6, char.get_char_attribute('total_strokes'), "get total strokes by XEmacs UTF-2000 like method")
14 assert_equal(6, char['total_strokes'], "get total strokes by Hash like method") if char.is_a? Character
15 assert_equal(6, char.total_strokes, "get total strokes by method")
16 assert_equal(23383, char.ucs, "translate to ucs")
17 assert_equal(22358, char.chinese_gb2312, "get character code in chinese GB2312")
18 assert_equal(1777, char.shinjigen_2, "get shinjigen 2")
19 assert_equal(3, char.ideographic_strokes, "get")
20 assert_equal(39, char.ideographic_radical, "get")
23 test_char(Character.get("字"))
24 test_char(Character.new("字"))
28 assert_equal(23383, Character.parse_char_id("字"))
30 def test_put_attributes
31 @char.put_char_attribute('test_attribute', 'test')
32 assert_equal('test', @char.get_char_attribute('test_attribute'), "put, get")
33 @char['test_attribute'] = 'test'
34 assert_equal('test', @char['test_attribute'], "[]=, []")
37 assert_instance_of(Hash, @char.char_attribute_alist, "returns Hash")
38 assert_instance_of(Hash, @char.alist, ".alist returns Hash")
39 assert_instance_of(Array, @char.char_attribute_list, "returns Array")
40 assert_instance_of(Array, @char.list, ".list returns Array")
41 assert_instance_of(String, @char.inspect)
44 assert_equal(Character.get("&J90-3B7A;"), @char, "jisx0208")
45 # assert_equal("&J90-3B7A;", @char.to_er, "jisx0208")
46 assert_equal(Character.get("&MCS-00005B57;"), @char, "mcs")
47 assert_equal(Character.get("&M-06942;"), @char, "ideograph-daikanwa, Morohashi")
50 char = Character.get("A")
51 assert_equal(char.ascii, 65, "ascii")
52 assert_equal(char.bidi_category, "L", "bidi")
53 assert_equal(char.name, "LATIN CAPITAL LETTER A", "name")
54 assert_equal(char.ucs, 65, "ucs")
55 assert_equal(char.latin_jisx0201, 65, "jisx0201")
56 assert_equal(char.latin_viscii, 65, "viscii") #って何?
57 #->fullwidth: (((name . "FULLWIDTH LATIN CAPITAL LETTER A") (ucs . 65313)))
58 #->lowercase: (((name . "LATIN SMALL LETTER A") (ucs . 97)))
59 #general-category: (letter uppercase)
60 #このへんのS式の展開が必要なものは、また後程扱うべし。
63 char = Character.get("⿰")
64 assert_equal(char.name, "IDEOGRAPHIC DESCRIPTION CHARACTER LEFT TO RIGHT", "ids name")
65 assert_equal(char.to_er, "&U+2FF0;", "ids er")
66 assert_equal(char.bidi_category, "ON", "ids bidi")
69 char = Character.get("逢")
70 assert_instance_of(String, char.get_attributes)
71 char = Character.get("学")
72 assert_instance_of(String, char.get_attributes)
75 char1 = Character.new("字")
76 char2 = Character.new("字") #.newで生成した場合は別々のinstanceになるのだ
77 assert_equal(char1, char2) #==ではある
78 assert_not_same(char1, char2) #equal?かというと違う
80 cf = CharacterFactory.instance
83 assert_equal(char1, char2, "factory") #==である
84 assert_same(char1, char2, "factory") #かつ同じinstanceであることが保証される
86 char1 = Character.get("字") #Character.newの代りにCharacter.getを使うとCharacterFactoryを使ったのと同じ効果がある。
87 char2 = Character.get("字")
88 assert_equal(char1, char2) #==ではある
89 assert_same(char1, char2) #equal?かというと違う
92 p er.de_er.char.inspect_all
94 def nu_test_has_attribute
95 assert("&J90-4833;".de_er.char.has_attribute?) #罪
96 assert(! "&MCS-00E06E9B;;".de_er.char.has_attribute?) #罪のisolated character, attributeを持ってない
97 assert("&C1-602E;".de_er.char.has_attribute?) #渡
98 assert("&J90-454F;".de_er.char.has_attribute?) #渡
101 p_er("&J83-4D63;") #翼
103 p_er("&J83-3958;") #購
106 def teardown() @char = nil end
109 #===== PRINT_ALL [字] MCS-00005B57 &J90-3B7A; =====
110 #chinese-gb2312: 0x5756
111 #chinese-isoir165: 0x5756
112 #korean-ksc5601: 0x6D2E
114 #chinese-cns11643-1: 0x4773
115 #chinese-big5: 0xA672
117 # test_print(Character.get("&CDP-8B42;"))
118 # test_print(Character.get("&I-CDP-8AF6;"))
119 #===== PRINT_ALL [舛] MCS-00ECA524 &K0-743F; =====
121 #----------------------------------------------------------------------end.