From 3255adcd0cb07c5bf4279ecbff1f2aeebdefeae4 Mon Sep 17 00:00:00 2001 From: ayumin Date: Sun, 25 Sep 2011 12:05:06 +0000 Subject: * test/syck/test/yamldbm.rb: add test for Syck::DBM. * test/psych/test_yamldbm.rb: add test for Psych::DBM. * test/psych/test_yamlstore.rb: add test for Psych::PStore. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@33330 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/psych/test_yamldbm.rb | 152 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 test/psych/test_yamldbm.rb (limited to 'test/psych/test_yamldbm.rb') diff --git a/test/psych/test_yamldbm.rb b/test/psych/test_yamldbm.rb new file mode 100644 index 0000000000..f1e4425686 --- /dev/null +++ b/test/psych/test_yamldbm.rb @@ -0,0 +1,152 @@ +# -*- coding: UTF-8 -*- +require 'test/unit' +require 'yaml/dbm' +Psych::DBM = YAML::DBM unless defined?(Psych::DBM) + +module Psych + class YAMLDBMTest < Test::Unit::TestCase + def setup + @engine, YAML::ENGINE.yamler = YAML::ENGINE.yamler, 'psych' + @yamldbm_file = "yamldbm.tmp.#{Process.pid}" + @yamldbm = YAML::DBM.new(@yamldbm_file) + end + + def teardown + YAML::ENGINE.yamler = @engine + File.unlink(@yamldbm_file + '.db') rescue nil + end + + def test_store + @yamldbm.store('a','b') + @yamldbm.store('c','d') + assert_equal 'b', @yamldbm['a'] + assert_equal 'd', @yamldbm['c'] + assert_nil @yamldbm['e'] + end + + def test_store_using_carret + @yamldbm['a'] = 'b' + @yamldbm['c'] = 'd' + assert_equal 'b', @yamldbm['a'] + assert_equal 'd', @yamldbm['c'] + assert_nil @yamldbm['e'] + end + + def test_to_a + @yamldbm['a'] = 'b' + @yamldbm['c'] = 'd' + assert_equal([['a','b'],['c','d']], @yamldbm.to_a) + end + + def test_to_hash + @yamldbm['a'] = 'b' + @yamldbm['c'] = 'd' + assert_equal({'a'=>'b','c'=>'d'}, @yamldbm.to_hash) + end + + def test_has_value? + @yamldbm['a'] = 'b' + @yamldbm['c'] = 'd' + assert_equal true, @yamldbm.has_value?('b') + assert_equal true, @yamldbm.has_value?('d') + assert_equal false, @yamldbm.has_value?('f') + end + + # Note: + # YAML::DBM#index makes warning from internal of ::DBM#index. + # It says 'DBM#index is deprecated; use DBM#key', but DBM#key + # behaves not same as DBM#index. + # + # def test_index + # @yamldbm['a'] = 'b' + # @yamldbm['c'] = 'd' + # assert_equal 'a', @yamldbm.index('b') + # assert_equal 'c', @yamldbm.index('d') + # assert_nil @yamldbm.index('f') + # end + + def test_key + @yamldbm['a'] = 'b' + @yamldbm['c'] = 'd' + assert_equal 'a', @yamldbm.key('b') + assert_equal 'c', @yamldbm.key('d') + assert_nil @yamldbm.key('f') + end + + def test_fetch + assert_equal('bar', @yamldbm['foo']='bar') + assert_equal('bar', @yamldbm.fetch('foo')) + assert_nil @yamldbm.fetch('bar') + assert_equal('baz', @yamldbm.fetch('bar', 'baz')) + assert_equal('foobar', @yamldbm.fetch('bar') {|key| 'foo' + key }) + end + + def test_shift + @yamldbm['a'] = 'b' + @yamldbm['c'] = 'd' + assert_equal(['a','b'], @yamldbm.shift) + assert_equal(['c','d'], @yamldbm.shift) + assert_nil @yamldbm.shift + end + + def test_invert + @yamldbm['a'] = 'b' + @yamldbm['c'] = 'd' + assert_equal({'b'=>'a','d'=>'c'}, @yamldbm.invert) + end + + def test_update + @yamldbm['a'] = 'b' + @yamldbm['c'] = 'd' + @yamldbm.update({'c'=>'d','e'=>'f'}) + assert_equal 'b', @yamldbm['a'] + assert_equal 'd', @yamldbm['c'] + assert_equal 'f', @yamldbm['e'] + end + + def test_replace + @yamldbm['a'] = 'b' + @yamldbm['c'] = 'd' + @yamldbm.replace({'c'=>'d','e'=>'f'}) + assert_nil @yamldbm['a'] + assert_equal 'd', @yamldbm['c'] + assert_equal 'f', @yamldbm['e'] + end + + def test_delete + @yamldbm['a'] = 'b' + @yamldbm['c'] = 'd' + assert_equal 'b', @yamldbm.delete('a') + assert_nil @yamldbm['a'] + assert_equal 'd', @yamldbm['c'] + assert_nil @yamldbm.delete('e') + end + + def test_delete_if + @yamldbm['a'] = 'b' + @yamldbm['c'] = 'd' + @yamldbm['e'] = 'f' + + @yamldbm.delete_if {|k,v| k == 'a'} + assert_nil @yamldbm['a'] + assert_equal 'd', @yamldbm['c'] + assert_equal 'f', @yamldbm['e'] + + @yamldbm.delete_if {|k,v| v == 'd'} + assert_nil @yamldbm['c'] + assert_equal 'f', @yamldbm['e'] + + @yamldbm.delete_if {|k,v| false } + assert_equal 'f', @yamldbm['e'] + end + + def test_reject + @yamldbm['a'] = 'b' + @yamldbm['c'] = 'd' + @yamldbm['e'] = 'f' + assert_equal({'c'=>'d','e'=>'f'}, @yamldbm.reject {|k,v| k == 'a'}) + assert_equal({'a'=>'b','e'=>'f'}, @yamldbm.reject {|k,v| v == 'd'}) + assert_equal({'a'=>'b','c'=>'d','e'=>'f'}, @yamldbm.reject {false}) + end + end +end -- cgit v1.2.3