Skip to content

Commit 7bb821a

Browse files
committed
Add tests for read-only methods on frozen StringIO
See #120
1 parent b946d46 commit 7bb821a

File tree

1 file changed

+83
-15
lines changed

1 file changed

+83
-15
lines changed

test/stringio/test_stringio.rb

Lines changed: 83 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,9 @@ def test_open
330330

331331
def test_isatty
332332
assert_equal(false, StringIO.new("").isatty)
333+
assert_equal(false, StringIO.new("").tty?)
334+
assert_nothing_raised { StringIO.new("").freeze.isatty}
335+
assert_nothing_raised { StringIO.new("").freeze.tty?}
333336
end
334337

335338
def test_fsync
@@ -339,6 +342,7 @@ def test_fsync
339342
def test_sync
340343
assert_equal(true, StringIO.new("").sync)
341344
assert_equal(false, StringIO.new("").sync = false)
345+
assert_nothing_raised { StringIO.new("").freeze.sync}
342346
end
343347

344348
def test_set_fcntl
@@ -391,8 +395,8 @@ def test_closed
391395
assert_equal(false, f.closed?)
392396
f.close
393397
assert_equal(true, f.closed?)
394-
ensure
395-
f.close unless f.closed?
398+
f.freeze
399+
assert_nothing_raised { f.closed? }
396400
end
397401

398402
def test_closed_read
@@ -402,8 +406,8 @@ def test_closed_read
402406
assert_equal(false, f.closed_read?)
403407
f.close_read
404408
assert_equal(true, f.closed_read?)
405-
ensure
406-
f.close unless f.closed?
409+
f.freeze
410+
assert_nothing_raised { f.closed_read? }
407411
end
408412

409413
def test_closed_write
@@ -413,8 +417,8 @@ def test_closed_write
413417
assert_equal(false, f.closed_write?)
414418
f.close_write
415419
assert_equal(true, f.closed_write?)
416-
ensure
417-
f.close unless f.closed?
420+
f.freeze
421+
assert_nothing_raised { f.closed_write? }
418422
end
419423

420424
def test_dup
@@ -440,8 +444,8 @@ def test_lineno
440444
f.lineno = 1000
441445
assert_equal([1000, "baz\n"], [f.lineno, f.gets])
442446
assert_equal([1001, nil], [f.lineno, f.gets])
443-
ensure
444-
f.close unless f.closed?
447+
f.freeze
448+
assert_nothing_raised { f.lineno }
445449
end
446450

447451
def test_pos
@@ -454,8 +458,8 @@ def test_pos
454458
assert_equal([4, "bar\n"], [f.pos, f.gets])
455459
assert_equal([8, "baz\n"], [f.pos, f.gets])
456460
assert_equal([12, nil], [f.pos, f.gets])
457-
ensure
458-
f.close unless f.closed?
461+
f.freeze
462+
assert_nothing_raised { f.pos }
459463
end
460464

461465
def test_reopen
@@ -479,13 +483,10 @@ def test_seek
479483
assert_raise(Errno::EINVAL) { f.seek(1, 3) }
480484
f.close
481485
assert_raise(IOError) { f.seek(0) }
482-
ensure
483-
f.close unless f.closed?
484-
end
485-
486-
def test_seek_frozen_string
487486
f = StringIO.new(-"1234")
488487
assert_nothing_raised { f.seek(0) }
488+
ensure
489+
f.close unless f.closed?
489490
end
490491

491492
def test_each_byte
@@ -808,11 +809,17 @@ def test_pread
808809
buf = "stale".b
809810
assert_equal "stale".b, StringIO.new("").pread(0, 0, buf)
810811
assert_equal "stale".b, buf
812+
813+
assert_nothing_raised { StringIO.new("pread").freeze.pread(3, 0)}
811814
end
812815

813816
def test_size
814817
f = StringIO.new("1234")
815818
assert_equal(4, f.size)
819+
assert_equal(4, f.length)
820+
f.freeze
821+
assert_nothing_raised { f.size }
822+
assert_nothing_raised { f.length }
816823
end
817824

818825
# This test is should in ruby/test_method.rb
@@ -1055,6 +1062,67 @@ def test_chilled_string_string_set
10551062
end
10561063
end
10571064

1065+
def test_eof
1066+
f = StringIO.new
1067+
assert_equal(true, f.eof)
1068+
assert_equal(true, f.eof?)
1069+
f.ungetc("1234")
1070+
assert_equal(false, f.eof)
1071+
assert_equal(false, f.eof?)
1072+
f.freeze
1073+
assert_nothing_raised { f.eof }
1074+
assert_nothing_raised { f.eof? }
1075+
end
1076+
1077+
def test_pid
1078+
f = StringIO.new
1079+
assert_equal(nil, f.pid)
1080+
f.freeze
1081+
assert_nothing_raised { f.pid }
1082+
end
1083+
1084+
def test_fileno
1085+
f = StringIO.new
1086+
assert_equal(nil, f.fileno)
1087+
f.freeze
1088+
assert_nothing_raised { f.fileno }
1089+
end
1090+
1091+
def test_external_encoding
1092+
f = StringIO.new
1093+
assert_equal(Encoding.find("external"), f.external_encoding)
1094+
f = StringIO.new("1234".encode("UTF-16BE"))
1095+
assert_equal(Encoding::UTF_16BE, f.external_encoding)
1096+
f.freeze
1097+
assert_nothing_raised { f.external_encoding }
1098+
end
1099+
1100+
def test_string
1101+
f = StringIO.new
1102+
assert_equal("", f.string)
1103+
f = StringIO.new("1234")
1104+
assert_equal("1234", f.string)
1105+
f.freeze
1106+
assert_nothing_raised { f.string }
1107+
end
1108+
1109+
def test_initialize_copy
1110+
f = StringIO.new("1234")
1111+
f.read(1)
1112+
f2 = f.dup
1113+
assert_equal(1, f2.pos)
1114+
f.read(1)
1115+
assert_equal(2, f2.pos)
1116+
f.ungetc("56")
1117+
assert_equal(0, f2.pos)
1118+
assert_equal("5634", f2.string)
1119+
f.freeze
1120+
assert_nothing_raised do
1121+
f2 = f.dup
1122+
assert_true(f2.frozen?)
1123+
end
1124+
end
1125+
10581126
private
10591127

10601128
def assert_string(content, encoding, str, mesg = nil)

0 commit comments

Comments
 (0)