diff options
Diffstat (limited to 'trunk/test/scanf/test_scanfblocks.rb')
-rw-r--r-- | trunk/test/scanf/test_scanfblocks.rb | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/trunk/test/scanf/test_scanfblocks.rb b/trunk/test/scanf/test_scanfblocks.rb new file mode 100644 index 0000000000..907a3c2838 --- /dev/null +++ b/trunk/test/scanf/test_scanfblocks.rb @@ -0,0 +1,81 @@ +# $Id$ +# +# scanf for Ruby +# +# Some not very comprehensive tests of block behavior. + + +require 'test/unit' +require 'scanf' +require 'tmpdir' + +class TestScanfBlock < Test::Unit::TestCase + + def setup + @str = <<-EOS + Beethoven 1770 + Bach 1685 + Handel 1685 + Scarlatti 1685 + Brahms 1833 + EOS + end + +alias set_up setup + def test_str1 + res = @str.scanf("%s%d") { |name, year| "#{name} was born in #{year}." } + assert_equal(res, + [ "Beethoven was born in 1770.", + "Bach was born in 1685.", + "Handel was born in 1685.", + "Scarlatti was born in 1685.", + "Brahms was born in 1833." ]) + end + + def test_str2 + names = @str.scanf("%s%d") { |name, year| name.upcase } + assert_equal(names, ["BEETHOVEN", "BACH", "HANDEL", "SCARLATTI", "BRAHMS"]) + end + + def test_str3 + assert_equal("".scanf("%d%f%s") {}, []) + end + + def test_str4 + assert_equal("abc".scanf("%d%f%s") {}, []) + end + + def test_str5 + assert_equal("abc".scanf("") {}, []) + end + + def test_io1 + fn = "#{Dir.tmpdir}/iotest.dat.#{$$}" + File.open(fn, "w") { |fh| fh.puts(@str) } + fh = File.open(fn, "rb") + res = fh.scanf("%s%d") { |name, year| "#{name} was born in #{year}." } + + assert_equal( + [ "Beethoven was born in 1770.", + "Bach was born in 1685.", + "Handel was born in 1685.", + "Scarlatti was born in 1685.", + "Brahms was born in 1833." ],res) + fh.close + ensure + File.delete(fn) + end + + def test_io2 + fn = "#{Dir.tmpdir}/iotest.dat.#{$$}" + File.open(fn, "w").close + fh = File.open(fn,"rb") + assert_equal(fh.scanf("") {}, []) + fh.seek(0) + assert_equal(fh.scanf("%d%f%s") {}, []) + fh.close + ensure + File.delete(fn) + end + +end |