Watson1978
4/8/2011 - 12:00 AM

test_stringio_gets.rb

require 'test/unit/assertions.rb'
include Test::Unit::Assertions
require 'stringio'

f = StringIO.new("foo\nbar\nbaz\n")
assert_equal("fo", f.gets(nil, 2))
assert_equal("o\n", f.gets('', 2))
assert_equal(4, f.tell)

f = StringIO.new("foo\nbar\n\nbaz\n")
assert_equal("fo", f.gets('', 2))
assert_equal("o\nba", f.gets('a', 10))
assert_equal(6, f.tell)
assert_equal("r\n", f.gets('x', 2))

f = StringIO.new("a\nb")
assert_equal("a\n", f.gets)
assert_equal("b", f.gets('aa', 2))
assert_equal(nil, f.gets('aa', 2))

f = StringIO.new("foo\nbar\n\n\nbaz\n\n\n\n")
assert_equal("fo", f.gets('', 2))
assert_equal("o\n", f.gets('', 2))
assert_equal("ba", f.gets('', 2))

f = StringIO.new("this>is>an>example")
assert_equal("this>", f.gets("is>"))
assert_equal("is>an>", f.gets("an>"))
assert_equal("example", f.gets("example"))
assert_equal(nil, f.gets("ple"))

f = StringIO.new("a\nb")
assert_equal("a\n", f.gets(2))
assert_equal("", f.gets(0))

f = StringIO.new("\npara1\npara2\n\n\n\n\npara3\n\n")
assert_equal("para1\npara2\n\n", f.gets(''))
assert_equal(14, f.tell)
assert_equal("para3\n\n", f.gets(''))
assert_equal(24, f.tell)

f = StringIO.new("foo\n\n\nbar\n\n")
assert_equal("foo\n\n", f.gets('', 4))
assert_equal(5, f.tell)
assert_equal("bar\n\n", f.gets(''))
assert_equal(11, f.tell)

f = StringIO.new("\nfoo\n\n\nbar\n\n")
assert_equal("foo\n\n", f.gets('', 5))
assert_equal(6, f.tell)
assert_equal("bar\n\n", f.gets(''))
assert_equal(12, f.tell)

f = StringIO.new("\nfoo\nbar\n\n")
assert_equal("foo\n", f.gets('', 5))
assert_equal(5, f.tell)
assert_equal("bar\n\n", f.gets(''))
assert_equal(10, f.tell)

f = StringIO.new("\nfoo\n\n\nbar")
assert_equal("foo", f.gets('', 4))
assert_equal(4, f.tell)
assert_equal("bar", f.gets(''))
assert_equal(10, f.tell)

puts :ok