Implement File#sysseek

This commit is contained in:
Scott Taylor 2010-01-12 00:16:18 -05:00
parent 75e4eeff65
commit 01735bb17a
2 changed files with 47 additions and 2 deletions

View File

@ -239,8 +239,9 @@ module FakeFS
raise NotImplementedError
end
def sysseek(offset, whence = SEEK_SET)
raise NotImplementedError
def sysseek(position, whence = SEEK_SET)
seek(position, whence)
pos
end
alias_method :to_i, :fileno

View File

@ -0,0 +1,44 @@
require "test_helper"
class FileSysSeek < Test::Unit::TestCase
def setup
FakeFS.activate!
FakeFS::FileSystem.clear
end
def teardown
FakeFS.deactivate!
end
def test_should_seek_to_position
file = File.open("foo", "w") do |f|
f << "0123456789"
end
File.open("foo", "r") do |f|
f.sysseek(3)
assert_equal 3, f.pos
f.sysseek(0)
assert_equal 0, f.pos
end
end
def test_seek_returns_offset_into_file
File.open("foo", "w") do |f|
# 66 chars long
str = "0123456789" +
"0123456789" +
"0123456789" +
"0123456789" +
"0123456789" +
"0123456789" +
"012345"
f << str
end
f = File.open("foo")
assert_equal 53, f.sysseek(-13, IO::SEEK_END)
end
end