--- /dev/null
+#!/usr/bin/env ruby
+# Copyright (C) 2002-2004 Kouichirou Eto, All rights reserved.
+
+require "common"
+
+class TestChiseDB < Test::Unit::TestCase
+ def test_libchise_r
+ db_dir = CHISE::DataSource::DB_DIR
+ assert_match(/chise-db\Z/, db_dir)
+
+ @ds = CHISE::DataSource.new(CHISE::DataSource::Berkeley_DB, db_dir, 0, 0755)
+ assert_instance_of(CHISE::DataSource, @ds)
+
+ @ct = @ds.get_ccs("=daikanwa")
+ assert_instance_of(CHISE::CCS, @ct)
+ char_id = @ct.decode(364) # get a character by Daikanwa number 364.
+ assert_equal(20175, char_id)
+ #str = format_char_id(20175)
+ #assert_equal("?\344\273\217", str)
+
+ char_id = @ds.decode_char("=daikanwa", 364)
+ assert_equal(20175, char_id)
+
+ @ft = @ds.get_feature("ideographic-structure")
+ assert_instance_of(CHISE::Feature, @ft)
+ value = @ft.get_value(char_id)
+ assert_instance_of(String, value)
+ assert_equal("(?\342\277\260 ?\344\272\273 ?\345\216\266)", value)
+
+ value = @ds.load_feature(char_id, "ideographic-structure")
+ assert_equal("(?\342\277\260 ?\344\272\273 ?\345\216\266)", value)
+ return
+
+ @ds.each_feature_name {|f|
+ assert_instance_of(String, f)
+ ft = @ds.get_feature(f)
+ v = ft.get_value(23383)
+ #ft.close
+ }
+
+ @ft.each_char {|k, v|
+ assert_kind_of(Integer, k)
+ assert_instance_of(String, v)
+ }
+
+ ft = @ds.get_feature("numeric-value")
+ ft.each {|k, v|
+ assert_kind_of(Integer, k)
+ assert_instance_of(String, v)
+ }
+ end
+
+ def nu_test_each_ccs
+ @ds = CHISE::DataSource.new
+ @ds.each_ccs {|ccs|
+ assert_instance_of(String, ccs)
+ ct = @ds.get_ccs(ccs)
+ assert_instance_of(CHISE::CCSTable, ct)
+ }
+
+ ct = @ds.get_ccs("=ucs")
+ ct.each {|k, v|
+ assert_kind_of(Integer, k)
+ assert_kind_of(Integer, v)
+ }
+ #ct.close
+ end
+
+ def test_error
+ db_dir = CHISE::DataSource::DB_DIR
+ @ds = CHISE::DataSource.new(CHISE::DataSource::Berkeley_DB, db_dir, 0, 0755)
+ @ft = @ds.get_feature("nosuchfeature")
+ v = @ft.get_value(20175)
+ assert_equal(nil, v)
+ end
+
+ def test_chisedb
+ @cd = CHISE::ChiseDB.instance
+
+ char_id = @cd.decode_char("=daikanwa", 364)
+ assert_equal(20175, char_id)
+
+ value = @cd.load_feature(char_id, "ideographic-structure")
+ assert_equal("(?\342\277\260 ?\344\272\273 ?\345\216\266)", value)
+
+ value = @cd.load_feature(char_id, "=ucs")
+ assert_equal("20175", value)
+
+ @cd.each_feature_name {|f|
+ assert_instance_of(String, f)
+ }
+
+ ft = @cd.get_feature("numeric-value")
+ ft.each_char {|k, v|
+ assert_kind_of(Integer, k)
+ assert_instance_of(String, v)
+ }
+ end
+
+ def test_ascii
+ @cd = CHISE::ChiseDB.instance
+ ct = @cd.get_ccs("ascii")
+ char_id = ct.decode(65)
+ assert_equal(65, char_id)
+ assert_equal("A", CHISE::Character.get(char_id).to_s)
+# assert_equal("A", char.to_s)
+ end
+
+ def test_put
+ @cd = CHISE::ChiseDB.instance
+ char_id = "字".char.char_id
+ ft = @cd.get_feature("test")
+ ft.setup_db(1)
+ ft.set_value(char_id, "test1")
+ assert_equal("test1", ft.get_value(char_id))
+ ft.sync
+
+ ds = @cd.instance_eval { @ds }
+ path = CHISE::DataSource::DB_DIR.path+"character/feature/test"
+ assert_equal(true, path.exist?)
+ end
+end