update.
[chise/ruby.git] / 0ext / test.rb
index c7ddf0c..5abd33b 100755 (executable)
@@ -1,20 +1,59 @@
 #!/usr/bin/env ruby
 # Copyright (C) 2002-2004 Kouichirou Eto, All rights reserved.
 
-require "chise"
-$KCODE = "u"
+$VERBOSE = true
+$LOAD_PATH.unshift("..")
+require "test/unit"
+require "libchise_c"
+require "chise/qp"
 
-#dir = "/usr/local/lib/chise/char-db"
-dir = "/cygdrive/c/chise/char-db"
-ds = CHISE::DataSource.new(CHISE::DataSource::Berkeley_DB, dir)
-p ds
+class TestLibChise < Test::Unit::TestCase
+  def test_libchise
+    db_dir = CHISE::DB_DIR
+    assert_equal("/cygdrive/c/chise/chise-db", db_dir)
 
-dt = ds.open_decoding_table("ideograph-daikanwa")
-char_id = dt.get_char(364) # 大漢和番号364の文字を持ってくる
+    @ds = CHISE::DataSource.new(CHISE::DataSource::Berkeley_DB, db_dir, 0, 0755)
+    assert_instance_of(CHISE::DataSource, @ds)
 
-ft = ds.open_feature_table("ideographic-structure")
-value = ft.get_value(char_id)
-printf("#x%X => %s\n", char_id, value.to_s)
-ft.close
+    char_id = @ds.decode_char("=daikanwa", 364)
+    assert_equal(0x4ECF, char_id)
 
-ds.close
+    ccs = @ds.get_ccs("=daikanwa")
+    assert_instance_of(CHISE::CCS, ccs)
+    char_id = ccs.decode(364)
+    assert_equal(0x4ECF, char_id)
+
+    feature = @ds.get_feature("ideographic-structure")
+    assert_instance_of(CHISE::Feature, feature)
+    value = feature.get_value(char_id)
+    assert_instance_of(CHISE::Value, value)
+    assert_equal("(?\342\277\260 ?\344\272\273 ?\345\216\266)", value.to_s)
+
+    @ds.each_feature_name {|name|
+      assert_instance_of(String, name)
+    }
+
+    feature = @ds.get_feature("numeric-value")
+    feature.each_char {|cid, valdatum|
+      assert_kind_of(Numeric, cid)
+      assert_instance_of(CHISE::Value, valdatum)
+
+      ucs = @ds.get_feature("=ucs").get_value(cid)
+      if ucs
+       assert_instance_of(CHISE::Value, ucs)
+      else
+       ucs = @ds.get_feature("=>ucs").get_value(cid)
+       if ucs
+         assert_instance_of(CHISE::Value, ucs)
+       end
+      end
+
+      name = @ds.get_feature("name").get_value(cid)
+      if name
+       assert_instance_of(CHISE::Value, name)
+      end
+    }
+
+    @ds.close
+  end
+end