Skip to content

Commit 770744a

Browse files
trinistrandrykonchin
authored andcommitted
Add specs for IO::Buffer#empty? and #null?
1 parent d0c5c42 commit 770744a

File tree

3 files changed

+111
-0
lines changed

3 files changed

+111
-0
lines changed

core/io/buffer/empty_spec.rb

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
require_relative '../../../spec_helper'
2+
require_relative 'shared/null_and_empty'
3+
4+
describe "IO::Buffer#empty?" do
5+
after :each do
6+
@buffer&.free
7+
@buffer = nil
8+
end
9+
10+
it_behaves_like :io_buffer_null_and_empty, :empty?
11+
12+
it "is true for a 0-length String-backed buffer created with .for" do
13+
@buffer = IO::Buffer.for("")
14+
@buffer.empty?.should be_true
15+
end
16+
17+
ruby_version_is "3.3" do
18+
it "is true for a 0-length String-backed buffer created with .string" do
19+
IO::Buffer.string(0) do |buffer|
20+
buffer.empty?.should be_true
21+
end
22+
end
23+
end
24+
25+
it "is true for a 0-length slice of a buffer with size > 0" do
26+
@buffer = IO::Buffer.new(4)
27+
@buffer.slice(3, 0).empty?.should be_true
28+
end
29+
end

core/io/buffer/null_spec.rb

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
require_relative '../../../spec_helper'
2+
require_relative 'shared/null_and_empty'
3+
4+
describe "IO::Buffer#null?" do
5+
after :each do
6+
@buffer&.free
7+
@buffer = nil
8+
end
9+
10+
it_behaves_like :io_buffer_null_and_empty, :null?
11+
12+
it "is false for a 0-length String-backed buffer created with .for" do
13+
@buffer = IO::Buffer.for("")
14+
@buffer.null?.should be_false
15+
end
16+
17+
ruby_version_is "3.3" do
18+
it "is false for a 0-length String-backed buffer created with .string" do
19+
IO::Buffer.string(0) do |buffer|
20+
buffer.null?.should be_false
21+
end
22+
end
23+
end
24+
25+
it "is false for a 0-length slice of a buffer with size > 0" do
26+
@buffer = IO::Buffer.new(4)
27+
@buffer.slice(3, 0).null?.should be_false
28+
end
29+
end
Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
describe :io_buffer_null_and_empty, shared: true do
2+
it "is false for a buffer with size > 0" do
3+
@buffer = IO::Buffer.new(1)
4+
@buffer.send(@method).should be_false
5+
end
6+
7+
it "is false for a slice with length > 0" do
8+
@buffer = IO::Buffer.new(4)
9+
@buffer.slice(1, 2).send(@method).should be_false
10+
end
11+
12+
it "is false for a file-mapped buffer" do
13+
File.open(__FILE__, "rb") do |file|
14+
@buffer = IO::Buffer.map(file, nil, 0, IO::Buffer::READONLY)
15+
@buffer.send(@method).should be_false
16+
end
17+
end
18+
19+
it "is false for a non-empty String-backed buffer created with .for" do
20+
@buffer = IO::Buffer.for("test")
21+
@buffer.send(@method).should be_false
22+
end
23+
24+
ruby_version_is "3.3" do
25+
it "is false for a non-empty String-backed buffer created with .string" do
26+
IO::Buffer.string(4) do |buffer|
27+
buffer.send(@method).should be_false
28+
end
29+
end
30+
end
31+
32+
it "is true for a 0-sized buffer" do
33+
@buffer = IO::Buffer.new(0)
34+
@buffer.send(@method).should be_true
35+
end
36+
37+
it "is true for a slice of a 0-sized buffer" do
38+
@buffer = IO::Buffer.new(0)
39+
@buffer.slice(0, 0).send(@method).should be_true
40+
end
41+
42+
it "is true for a freed buffer" do
43+
@buffer = IO::Buffer.new(1)
44+
@buffer.free
45+
@buffer.send(@method).should be_true
46+
end
47+
48+
it "is true for a buffer resized to 0" do
49+
@buffer = IO::Buffer.new(1)
50+
@buffer.resize(0)
51+
@buffer.send(@method).should be_true
52+
end
53+
end

0 commit comments

Comments
 (0)