require "common"
class TestChiseDB < Test::Unit::TestCase
- def test_libchise_r
- db_dir = CHISE::DataSource::DB_DIR
- assert_match(/chise-db\Z/, db_dir)
+ def test_chisedb
+ @cd = CHISE::ChiseDB.instance
- @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)
+ @cd.each_feature_name {|f|
+ assert_instance_of(String, f)
+ }
- value = @ds.load_feature(char_id, "ideographic-structure")
+ # get a feature value
+ char_id = 0x4ECF
+ feature = @cd.get_feature("ideographic-structure")
+ assert_instance_of(CHISE::FeatureDB, feature)
+ #assert_equal(true, feature.setup_db(0))
+ #assert_equal(true, feature.sync)
+ value = feature.get_value(char_id)
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
- }
+ # shortcut
+ value = @cd.load_feature(char_id, "ideographic-structure")
+ assert_equal("(?\342\277\260 ?\344\272\273 ?\345\216\266)", value)
- @ft.each_char {|k, v|
- assert_kind_of(Integer, k)
- assert_instance_of(String, v)
+ # set a value
+ feature = @cd.get_feature("test-chisedb")
+ assert_instance_of(CHISE::FeatureDB, feature)
+ v = "testvalue"+$$.to_s
+ assert_equal(true, feature.set_value(char_id, v))
+ assert_equal(v, feature.get_value(char_id))
+
+ # each char
+ feature = @cd.get_feature("numeric-value")
+ feature.each_char {|cid, valdatum|
+ assert_kind_of(Numeric, cid)
+ #assert_instance_of(String, valdatum)
}
- ft = @ds.get_feature("numeric-value")
- ft.each {|k, v|
- assert_kind_of(Integer, k)
- assert_instance_of(String, v)
- }
- end
+ # get a character by Daikanwa number 364.
+ ccs = @cd.get_ccs("=daikanwa")
+ assert_instance_of(CHISE::CCS_DB, ccs)
+ #assert_equal(true, ccs.setup_db(0))
+ #assert_equal(true, ccs.sync)
+ char_id = ccs.decode(364)
+ assert_equal(0x4ECF, char_id)
- 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)
- }
+ # shortcut
+ char_id = @cd.decode_char("=daikanwa", 364)
+ assert_equal(0x4ECF, char_id)
- ct = @ds.get_ccs("=ucs")
- ct.each {|k, v|
- assert_kind_of(Integer, k)
- assert_kind_of(Integer, v)
- }
- #ct.close
- end
+ # set a code_point
+ ccs = @cd.get_ccs("test-ccs")
+ assert_instance_of(CHISE::CCS_DB, ccs)
+ assert_equal(true, ccs.set($$, 0x4ECF))
+ assert_equal(0x4ECF, ccs.decode($$))
- 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)
+ @cd.close
end
- def test_chisedb
+ def test_chisedb2
@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)
-
+ char_id = 0x4ECF
value = @cd.load_feature(char_id, "=ucs")
- assert_equal("20175", value)
-
- @cd.each_feature_name {|f|
- assert_instance_of(String, f)
- }
+ assert_equal(20175, value)
+ end
- ft = @cd.get_feature("numeric-value")
- ft.each_char {|k, v|
- assert_kind_of(Integer, k)
- assert_instance_of(String, v)
+ def test_each_ccs
+ @cd = CHISE::ChiseDB.instance
+ @cd.each_ccs {|ccs|
+ assert_instance_of(String, ccs)
+ ccsdb = @cd.get_ccs(ccs)
+ assert_instance_of(CHISE::CCS_DB, ccsdb)
}
end
- def test_ascii
+ def test_ccs_each_char
@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)
+ ccs = @cd.get_ccs("=ucs")
+ ccs.each_char {|code_point, cid|
+ assert_kind_of(Integer, code_point)
+ assert_kind_of(Integer, cid)
+ }
end
- def test_put
+ def test_set
@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
+ feature = @cd.get_feature("test")
+ feature.setup_db(1) # writable
+ feature.set_value(char_id, "test1")
+ assert_equal("test1", feature.get_value(char_id))
+ #feature.sync
ds = @cd.instance_eval { @ds }
path = CHISE::DataSource::DB_DIR.path+"character/feature/test"
assert_equal(true, path.exist?)
end
+
+ def test_error
+ db_dir = CHISE::DataSource::DB_DIR
+ @ds = CHISE::DataSource.new(CHISE::DataSource::Berkeley_DB, db_dir, 0, 0755)
+ @feature = @ds.get_feature("nosuchfeature")
+ v = @feature.get_value(20175)
+ assert_equal(nil, v)
+ end
+
+ def test_ascii
+ @cd = CHISE::ChiseDB.instance
+ char_id = @cd.decode_char("ascii", 65)
+ assert_equal(65, char_id)
+ assert_equal("A", CHISE::Character.get(char_id).to_s)
+ end
end