4c64dc4459be876c269e8d713a325a5d35a07403
[chise/ruby.git] / test / test-db.rb
1 #!/usr/bin/env ruby
2 # Copyright (C) 2002-2004 Kouichirou Eto, All rights reserved.
3 # This file is in SJIS charset.  Japanese Character -> \8a¿\8e\9a.
4
5 require "common"
6
7 class TestBDB < Test::Unit::TestCase
8 #class TestBDB
9   def test_bdb
10     @config = CHISE::Config.instance
11     dir = @config.db_dir
12     assert_match(%r|/chise/char-db\Z|, dir)
13
14     file = dir+"/=jis-x0208/system-char-id"
15 #   db = BDB::Hash.open(file, nil, BDB::CREATE | BDB::EXCL)
16     db = BDB::Hash.open(file, nil, 0)
17 #   qp db
18   end
19
20   def test_db
21 #    @cdb = CHISE::CharDB.instance
22 #   @sdb = CHISE::CodesysDB.instance
23   end
24
25   def test_codesys
26     @db = CHISE::CodesysDB.instance
27   end
28 end
29
30 #class TC_DB < Test::Unit::TestCase
31 class TestDataBase
32   def setup
33     @cdb = CHISE::CharDB.instance
34     @sdb = CHISE::CodesysDB.instance
35   end
36
37   def test_db
38     assert_equal("()+!", CHISE::DB.unix_to_win("<>*?"))
39     assert_equal("<>*?", CHISE::DB.win_to_unix("()+!"))
40   end
41
42   def test_each_db(db)
43     assert_instance_of(Array, db.keys)
44   end
45
46   def test_make_db(db)
47     h = {"a" => 1, "b" => 2, "c" => 3}
48     db.remove_db("test-db") #\82Ü\82¸\8dÅ\8f\89\82É\8fÁ\82µ\82Ä\82¨\82­
49     assert_not_nil(db.make_db("test-db", h))
50     assert_not_nil(db.open_db("test-db"))
51     assert_equal(1, db.get("test-db", "a"))
52     assert_equal(2, db.get("test-db", "b"))
53     assert_equal(3, db.get("test-db", "c"))
54     db.remove_db("test-db") #\8dÅ\8cã\82É\82Ü\82½\8fÁ\82µ\82Ä\82¨\82­
55   end
56
57   def test_dbs
58     test_each_db(@cdb)
59     test_each_db(@sdb)
60 #    test_make_db(@cdb)
61 #    test_make_db(@sdb)
62   end
63
64   def test_db_put
65     char = "\8e\9a".char
66     char.put_char_attribute("test-attribute", "test")
67     assert_equal("test", char.test_attribute)
68   end
69
70 end
71
72 class TestCodesys < Test::Unit::TestCase
73 #class TestCodesys
74   def setup
75 #    @db = CHISE::CodesysDB.instance
76   end
77
78   def test_dummy
79   end
80
81   def nu_test_db_length
82     assert_equal(6287, @db.get("=jis-x0208").keys.length, "keys")
83     assert_equal(590,  @db.get("japanese-jisx0208").keys.length, "keys")
84     assert_equal(499,  @db.get("japanese-jisx0208-1978").keys.length, "keys")
85     assert_equal(593,  @db.get("japanese-jisx0208-1990").keys.length, "keys")
86     assert_equal(6067, @db.get("japanese-jisx0212").keys.length, "keys")
87     assert_equal(1697, @db.get("japanese-jisx0213-1").keys.length, "keys")
88     assert_equal(2345, @db.get("japanese-jisx0213-2").keys.length, "keys")
89     assert_equal(4270, @db.get("ucs-jis").keys.length, "keys")
90   end
91
92   def nutest_db
93     keys = @db.keys
94     assert_instance_of(Array, @db.keys, "db.keys")
95     db = @db.get("ascii")
96     assert_equal(128, db.keys.length, "can get keys")
97     assert_equal(63,   @db.get("katakana-jisx0201").keys.length, "keys")
98     assert_equal(94,   @db.get("latin-jisx0201").keys.length, "keys")
99
100     counter = 0
101     @db.each("=jis-x0208"){|k, v| #\88ø\90\94\82ÌCodesys\83f\81[\83^\83x\81[\83X\82Ì\82»\82ê\82¼\82ê\82É\91Î\82µ\82Ä\8eÀ\8ds\82·\82é
102       er0 = sprintf("&J90-%04X;", k)
103       er1 = CHISE::Character.new(v).to_er
104       counter += 1; break if 10 < counter
105     }
106   end
107
108   def nutest_ascii
109     db = CHISE::CodesysDB.instance
110     codesys = db.get_codesys("ascii")
111     char = codesys.get(65)
112     assert_equal("A", char.to_s)
113     assert_equal(128, codesys.keys.length)
114     ks = codesys.keys
115   end
116
117   def nutest_jis_codesys
118     db = CHISE::CodesysDB.instance
119     codesys = db.get_codesys("=jis-x0208")
120     ks = codesys.keys.sort #\82Æ\82·\82é\82±\82Æ\82É\82æ\82Á\82Ä\81AJISX0208 1990\82Ì\8fW\8d\87\91S\95\94\82Ìkeys\82ª\93¾\82ç\82ê\82é
121 #    assert_equal(6880, ks.length)
122     assert_equal(8481, ks.first)
123     assert_equal(29566, ks.last)
124     char = codesys.get(15226) #"\8e\9a"
125     assert_equal("\8e\9a".su, char.to_s)
126
127     assert_equal("\88\9f".su, codesys.get(12321))
128     jis = "\88\9f".su.char.japanese_jisx0208_1990
129 #    assert_equal("\88\9f", codesys.get(jis))
130 #    assert_equal("\88\9f", sprintf("&J90-%04X;", jis).de_er)
131
132 #    codesys = db.get_codesys("japanese-jisx0208-1990") #\8b\8c\96¼
133     codesys = db.get_codesys("=jis-x0208-1990")
134     assert_equal(8481, ks.first)
135     assert_equal(29566, ks.last)
136   end
137
138 end