1 # $Id: test_misc.rb 1 2005-03-26 01:45:38Z tilman $
15 class MiscTest < Test::Unit::TestCase
17 @keys = ["key_foo", "key_bar", "key_baz"].sort
18 @dest = __FILE__.sub(/\.rb$/, ".eet")
19 @foo_data = Foo.new.to_eet
21 assert_not_nil(@foo_data)
25 Eet::File.open(@dest, "w") do |ef|
27 assert(ef.write(k, @foo_data) > 0)
32 def test_stream_chunks
35 assert_nothing_raised do
36 stream = Eet::Stream.deserialize(@foo_data)
39 assert_equal(1, stream.length)
40 assert_equal("Foo", stream.first.tag)
42 assert_nothing_raised do
43 stream = Eet::Stream.deserialize(stream.first.data)
46 assert_equal(3, stream.length)
47 ["foo", "bar", "baz"].each do |tag|
48 found = stream.find { |c| c.tag == tag }
54 assert_raise(RuntimeError) do
55 Eet::File.open("/foo/bar/baz/xyzzy", "w") { |ef| }
59 def test_catch_invalid_open_mode
60 assert_raise(ArgumentError) do
61 Eet::File.open(@dest, @keys[0]) { |ef| }
66 assert_raise(IOError) do
67 Eet::File.open(@dest, "w") do |ef|
73 def test_open_existing_ro
74 # if mode isn't specified, the file must be opened read-only.
75 # assert that we cannot write in read-only mode.
76 Eet::File.open(@dest) do |ef|
77 assert_raise(IOError) do
78 ef.write("xyzzy", "data")
83 def test_open_existing_w
84 # if the file is opened in write-only or read-write mode,
85 # we must be able to write to it.
86 ["w", "r+"].each do |mode|
87 Eet::File.open(@dest, mode) do |ef|
88 assert_equal(4, ef.write("xyzzy", "data"))
93 def test_accessing_closed_file
94 ef = Eet::File.open(@dest, "r")
97 assert_raise(IOError) do
102 def test_delete_entry_ro
103 assert_raise(IOError) do
104 Eet::File.open(@dest, "r") do |ef|
110 def test_delete_nonexisting_entry
111 assert_raise(IOError) do
112 Eet::File.open(@dest, "w") do |ef|
113 ef.delete("nonexistingkey")
119 Eet::File.open(@dest, "r") do |ef|
121 assert_equal(@foo_data, ef.read(k))
125 assert_raise(IOError) do
126 Eet::File.open(@dest, "w") do |ef|
133 ["r", "r+"].each do |mode|
134 Eet::File.open(@dest, mode) do |ef|
135 assert_equal(@keys, ef.list.sort)
136 assert_equal(@keys, ef.list("*").sort, @keys)
137 assert_equal([@keys[0]], ef.list(@keys[0]))
141 assert_raise(IOError) do
142 Eet::File.open(@dest, "w") do |ef|
149 assert_nothing_raised do
150 Eet::File.open(@dest, "r+") do |ef|
155 Eet::File.open(@dest) do |ef|
157 assert_equal(@keys, ef.list.sort)
163 Eet::File.open(@dest, "r+") do |ef|
164 assert_raise(ArgumentError) do
168 assert_raise(ArgumentError) do
169 ef.write("key_\0foo", "data")
172 assert_raise(ArgumentError) do
173 ef.delete("key_\0foo")