i
[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   def test_bdb
9     @config = CHISE::Config.instance
10     dir = @config.db_dir
11     assert_match(%r|/chise/char-db\Z|, dir)
12
13     file = dir+"/=jis-x0208/system-char-id"
14     db = BDB::Hash.open(file, nil, 0)
15   end
16
17   def test_db
18 #   @cdb = CHISE::CharDB.instance
19 #   @sdb = CHISE::CodesysDB.instance
20   end
21
22   def test_codesys
23     @db = CHISE::CodesysDB.instance
24   end
25 end
26
27 class TestCodesys < Test::Unit::TestCase
28   def nusetup
29     @db = CHISE::CodesysDB.instance
30   end
31
32   def test_dummy
33   end
34
35   def nu_test_db_length
36     assert_equal(6287, @db.get("=jis-x0208").keys.length, "keys")
37     assert_equal(590,  @db.get("japanese-jisx0208").keys.length, "keys")
38     assert_equal(499,  @db.get("japanese-jisx0208-1978").keys.length, "keys")
39     assert_equal(593,  @db.get("japanese-jisx0208-1990").keys.length, "keys")
40     assert_equal(6067, @db.get("japanese-jisx0212").keys.length, "keys")
41     assert_equal(1697, @db.get("japanese-jisx0213-1").keys.length, "keys")
42     assert_equal(2345, @db.get("japanese-jisx0213-2").keys.length, "keys")
43     assert_equal(4270, @db.get("ucs-jis").keys.length, "keys")
44   end
45
46   def nutest_db
47     keys = @db.keys
48     assert_instance_of(Array, @db.keys, "db.keys")
49     db = @db.get("ascii")
50     assert_equal(128, db.keys.length, "can get keys")
51     assert_equal(63,   @db.get("katakana-jisx0201").keys.length, "keys")
52     assert_equal(94,   @db.get("latin-jisx0201").keys.length, "keys")
53
54     counter = 0
55     @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é
56       er0 = sprintf("&J90-%04X;", k)
57       er1 = CHISE::Character.new(v).to_er
58       counter += 1; break if 10 < counter
59     }
60   end
61
62   def nutest_ascii
63     db = CHISE::CodesysDB.instance
64     codesys = db.get_codesys("ascii")
65     char = codesys.get(65)
66     assert_equal("A", char.to_s)
67     assert_equal(128, codesys.keys.length)
68     ks = codesys.keys
69   end
70
71   def nutest_jis_codesys
72     db = CHISE::CodesysDB.instance
73     codesys = db.get_codesys("=jis-x0208")
74     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é
75 #    assert_equal(6880, ks.length)
76     assert_equal(8481, ks.first)
77     assert_equal(29566, ks.last)
78     char = codesys.get(15226) #"\8e\9a"
79     assert_equal("\8e\9a".su, char.to_s)
80
81     assert_equal("\88\9f".su, codesys.get(12321))
82     jis = "\88\9f".su.char.japanese_jisx0208_1990
83 #    assert_equal("\88\9f", codesys.get(jis))
84 #    assert_equal("\88\9f", sprintf("&J90-%04X;", jis).de_er)
85
86 #    codesys = db.get_codesys("japanese-jisx0208-1990") #\8b\8c\96¼
87     codesys = db.get_codesys("=jis-x0208-1990")
88     assert_equal(8481, ks.first)
89     assert_equal(29566, ks.last)
90   end
91 end