aboutsummaryrefslogtreecommitdiffstats
path: root/spec/ruby/core/dir/shared/pos.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/core/dir/shared/pos.rb')
-rw-r--r--spec/ruby/core/dir/shared/pos.rb51
1 files changed, 51 insertions, 0 deletions
diff --git a/spec/ruby/core/dir/shared/pos.rb b/spec/ruby/core/dir/shared/pos.rb
new file mode 100644
index 0000000000..2165932d99
--- /dev/null
+++ b/spec/ruby/core/dir/shared/pos.rb
@@ -0,0 +1,51 @@
+describe :dir_pos, shared: true do
+ before :each do
+ @dir = Dir.open DirSpecs.mock_dir
+ end
+
+ after :each do
+ @dir.close rescue nil
+ end
+
+ it "returns an Integer representing the current position in the directory" do
+ @dir.send(@method).should be_kind_of(Integer)
+ @dir.send(@method).should be_kind_of(Integer)
+ @dir.send(@method).should be_kind_of(Integer)
+ end
+
+ it "returns a different Integer if moved from previous position" do
+ a = @dir.send(@method)
+ @dir.read
+ b = @dir.send(@method)
+
+ a.should be_kind_of(Integer)
+ b.should be_kind_of(Integer)
+
+ a.should_not == b
+ end
+end
+
+describe :dir_pos_set, shared: true do
+ before :each do
+ @dir = Dir.open DirSpecs.mock_dir
+ end
+
+ after :each do
+ @dir.close
+ end
+
+ # NOTE: #seek/#pos= to a position not returned by #tell/#pos is undefined
+ # and should not be spec'd.
+
+ it "moves the read position to a previously obtained position" do
+ pos = @dir.pos
+ a = @dir.read
+ b = @dir.read
+ @dir.send @method, pos
+ c = @dir.read
+
+ a.should_not == b
+ b.should_not == c
+ c.should == a
+ end
+end