From 29b8959851c55b317b5d801e85a55f7b623508c1 Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Thu, 18 Aug 2011 18:29:09 +0000 Subject: test_tdb_hash_functions: add distribution tests Just in case something was horribly wrong in my C++ -> C ports. --- test/test_tdb_hash_functions.rb | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/test/test_tdb_hash_functions.rb b/test/test_tdb_hash_functions.rb index 86c599a..cd43326 100644 --- a/test/test_tdb_hash_functions.rb +++ b/test/test_tdb_hash_functions.rb @@ -12,4 +12,34 @@ class TestHashFunctions < Test::Unit::TestCase assert_kind_of Integer, __send__("tdb_hash_#{name}", "hello") end end + + def test_distro_sequential + TDB::HASHES.each do |name,_| + next if :default == name + m = method "tdb_hash_#{name}" + tmp = Hash.new { |h,k| h[k] = 0 } + (1..100000).each do |s| + tmp[m.call(s.to_s) % 7] += 1 + end + assert_equal 7, tmp.size + tmp.each_value do |v| + assert_in_delta 100000/7.0, v, 1000 + end + end + end + + def test_distro_random + TDB::HASHES.each do |name,_| + next if :default == name + m = method "tdb_hash_#{name}" + tmp = Hash.new { |h,k| h[k] = 0 } + 100000.times do + tmp[m.call(rand.to_s) % 7] += 1 + end + assert_equal 7, tmp.size + tmp.each_value do |v| + assert_in_delta 100000/7.0, v, 1000 + end + end + end end -- cgit v1.2.3-24-ge0c7