require 'test/unit' class TestString < Test::Unit::TestCase def check_sum(str, bits=16) sum = 0 str.each_byte {|c| sum += c} sum = sum & ((1 << bits) - 1) if bits != 0 assert_equal(sum, str.sum(bits)) end def test_sum assert_equal(0, "".sum) assert_equal(294, "abc".sum) check_sum("abc") check_sum("\x80") 8.upto(70) {|bits| check_sum("xyz", bits) } end end