Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
require 'test/unit'
require 'fox16'
require 'tempfile'
include Fox
class TC_FXFileStream < Test::Unit::TestCase
def setup
@filestream = FXFileStream.new
end
def test_container
assert_nil(@filestream.container)
end
def test_open_non_existing_file
assert_equal(FXStreamDead, @filestream.direction)
status = @filestream.open("non_existing_file", FXStreamLoad)
assert(!status)
assert_equal(FXStreamDead, @filestream.direction)
end
def test_open_existing_file
assert_equal(FXStreamDead, @filestream.direction)
status = @filestream.open("README", FXStreamLoad)
assert(status)
assert_equal(FXStreamLoad, @filestream.direction)
status = @filestream.close
assert(status)
assert_equal(FXStreamDead, @filestream.direction)
end
def test_open_new_file
assert_equal(FXStreamDead, @filestream.direction)
status = @filestream.open("goobers", FXStreamSave)
assert(status)
assert_equal(FXStreamSave, @filestream.direction)
status = @filestream.close
assert(status)
assert_equal(FXStreamDead, @filestream.direction)
end
def test_status
assert_equal(FXStreamOK, @filestream.status)
@filestream.open("README", FXStreamLoad)
assert_equal(FXStreamOK, @filestream.status)
@filestream.close
assert_equal(FXStreamOK, @filestream.status)
end
def test_position
@filestream.open("README", FXStreamLoad)
assert_equal(0, @filestream.position)
@filestream.position = 500
assert_equal(500, @filestream.position)
@filestream.close
end
def test_exceptions
# Non-existing file
assert_raises(FXStreamNoReadError) {
FXFileStream.open("non_existing_file", FXStreamLoad) { |s| }
}
# Write-only file (i.e. no read permissions)
tf = Tempfile.new("write_only_file")
tf.puts("junk")
tf.close
File.chmod(0222, tf.path) # --w--w--w-
assert_raises(FXStreamNoReadError) {
FXFileStream.open(tf.path, FXStreamLoad) { |s| }
}
# Read-only file
tf = Tempfile.new("read_only_file")
tf.puts("junk")
tf.close
File.chmod(0444, tf.path) # -r--r--r--
assert_raises(FXStreamNoWriteError) {
FXFileStream.open(tf.path, FXStreamSave) { |s| }
}
end
def teardown
if File.exists?("goobers")
FileUtils.rm_f("goobers")