6 class TestTryopen < Test::Unit::TestCase
8 def test_tryopen_success
9 tmp = Kgio.tryopen(__FILE__)
10 assert_kind_of File, tmp
11 assert_equal File.read(__FILE__), tmp.read
12 assert_equal __FILE__, tmp.path
13 assert_equal __FILE__, tmp.to_path
14 assert_nothing_raised { tmp.close }
17 def test_tryopen_ENOENT
18 tmp = Tempfile.new "tryopen"
21 tmp = Kgio.tryopen(path)
22 assert_equal :ENOENT, tmp
25 def test_tryopen_EPERM
26 tmp = Tempfile.new "tryopen"
27 File.chmod 0000, tmp.path
28 tmp = Kgio.tryopen(tmp.path)
29 assert_equal :EACCES, tmp
32 def test_tryopen_readwrite
33 tmp = Tempfile.new "tryopen"
34 file = Kgio.tryopen(tmp.path, IO::RDWR)
36 assert_equal "FOO", tmp.sysread(3)
40 tmp = Tempfile.new "tryopen"
43 file = Kgio.tryopen(path, IO::RDWR|IO::CREAT, 0000)
44 assert_equal 0100000, File.stat(path).mode
52 tmp = Tempfile.new('tryopen')
55 x.report("tryopen (OK)") do
56 nr.times { Kgio.tryopen(file).close }
58 x.report("open (OK)") do
59 nr.times { File.readable?(file) && File.open(file).close }
63 assert_equal :ENOENT, Kgio.tryopen(file)
65 x.report("tryopen (ENOENT)") do
66 nr.times { Kgio.tryopen(file) }
68 x.report("open (ENOENT)") do
69 nr.times { File.readable?(file) && File.open(file) }
72 end if ENV["BENCHMARK"]