Updated RubySpec submodule to 9f66d0b1.
[rbx.git] / test / rubygems / test_gem_package_tar_reader_entry.rb
blob7e25143a85f97ac772e0f47aacadeba55f8711f8
1 #--
2 # Copyright 2006 by Chad Fowler, Rich Kilmer, Jim Weirich and others.
3 # All rights reserved.
4 # See LICENSE.txt for permissions.
5 #++
7 require File.join(File.expand_path(File.dirname(__FILE__)),
8                   'gem_package_tar_test_case')
9 require 'rubygems/package'
11 class TestGemPackageTarReaderEntry < TarTestCase
13   def setup
14     super
16     @contents = ('a'..'z').to_a.join * 100
18     @tar = ''
19     @tar << tar_file_header("lib/foo", "", 0, @contents.size)
20     @tar << @contents
21     @tar << "\0" * (512 - (@tar.size % 512))
23     @entry = util_entry @tar
24   end
26   def test_bytes_read
27     assert_equal 0, @entry.bytes_read
29     @entry.getc
31     assert_equal 1, @entry.bytes_read
32   end
34   def test_close
35     @entry.close
37     assert @entry.bytes_read
39     e = assert_raise IOError do @entry.eof? end
40     assert_equal 'closed Gem::Package::TarReader::Entry', e.message
42     e = assert_raise IOError do @entry.getc end
43     assert_equal 'closed Gem::Package::TarReader::Entry', e.message
45     e = assert_raise IOError do @entry.pos end
46     assert_equal 'closed Gem::Package::TarReader::Entry', e.message
48     e = assert_raise IOError do @entry.read end
49     assert_equal 'closed Gem::Package::TarReader::Entry', e.message
51     e = assert_raise IOError do @entry.rewind end
52     assert_equal 'closed Gem::Package::TarReader::Entry', e.message
53   end
55   def test_closed_eh
56     @entry.close
58     assert @entry.closed?
59   end
61   def test_eof_eh
62     @entry.read
64     assert @entry.eof?
65   end
67   def test_full_name
68     assert_equal 'lib/foo', @entry.full_name
69   end
71   def test_getc
72     assert_equal ?a, @entry.getc
73   end
75   def test_directory_eh
76     assert_equal false, @entry.directory?
77     assert_equal true, util_dir_entry.directory?
78   end
80   def test_file_eh
81     assert_equal true, @entry.file?
82     assert_equal false, util_dir_entry.file?
83   end
85   def test_pos
86     assert_equal 0, @entry.pos
88     @entry.getc
90     assert_equal 1, @entry.pos
91   end
93   def test_read
94     assert_equal @contents, @entry.read
95   end
97   def test_read_big
98     assert_equal @contents, @entry.read(@contents.size * 2)
99   end
101   def test_read_small
102     assert_equal @contents[0...100], @entry.read(100)
103   end
105   def test_rewind
106     char = @entry.getc
108     @entry.rewind
110     assert_equal 0, @entry.pos
112     assert_equal char, @entry.getc
113   end