20 lines
413 B
Ruby
20 lines
413 B
Ruby
|
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
|