61 lines
1.3 KiB
Ruby
61 lines
1.3 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
require 'test_helper'
|
||
|
require 'zip/filesystem'
|
||
|
|
||
|
class DirectoryIteratorTest < MiniTest::Test
|
||
|
FILENAME_ARRAY = %w[f1 f2 f3 f4 f5 f6].freeze
|
||
|
|
||
|
def setup
|
||
|
@dir_iter = ::Zip::FileSystem::DirectoryIterator.new(FILENAME_ARRAY)
|
||
|
end
|
||
|
|
||
|
def test_close
|
||
|
@dir_iter.close
|
||
|
assert_raises(IOError, 'closed directory') do
|
||
|
@dir_iter.each { |e| p e }
|
||
|
end
|
||
|
assert_raises(IOError, 'closed directory') do
|
||
|
@dir_iter.read
|
||
|
end
|
||
|
assert_raises(IOError, 'closed directory') do
|
||
|
@dir_iter.rewind
|
||
|
end
|
||
|
assert_raises(IOError, 'closed directory') do
|
||
|
@dir_iter.seek(0)
|
||
|
end
|
||
|
assert_raises(IOError, 'closed directory') do
|
||
|
@dir_iter.tell
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def test_each
|
||
|
# Tested through Enumerable.entries
|
||
|
assert_equal(FILENAME_ARRAY, @dir_iter.entries)
|
||
|
end
|
||
|
|
||
|
def test_read
|
||
|
FILENAME_ARRAY.size.times do |i|
|
||
|
assert_equal(FILENAME_ARRAY[i], @dir_iter.read)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
def test_rewind
|
||
|
@dir_iter.read
|
||
|
@dir_iter.read
|
||
|
assert_equal(FILENAME_ARRAY[2], @dir_iter.read)
|
||
|
@dir_iter.rewind
|
||
|
assert_equal(FILENAME_ARRAY[0], @dir_iter.read)
|
||
|
end
|
||
|
|
||
|
def test_tell_seek
|
||
|
@dir_iter.read
|
||
|
@dir_iter.read
|
||
|
pos = @dir_iter.tell
|
||
|
value = @dir_iter.read
|
||
|
@dir_iter.read
|
||
|
@dir_iter.seek(pos)
|
||
|
assert_equal(value, @dir_iter.read)
|
||
|
end
|
||
|
end
|