update.
[chise/ruby.git] / test / test-chisedb.rb
index f52547a..02d9f2c 100755 (executable)
 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