Skip to content

Commit b027cd1

Browse files
committed
Add specs for other flag-checking methods of IO::Buffer
1 parent b8f5b80 commit b027cd1

File tree

6 files changed

+695
-0
lines changed

6 files changed

+695
-0
lines changed

core/io/buffer/external_spec.rb

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
require_relative '../../../spec_helper'
2+
3+
describe "IO::Buffer#external?" do
4+
after :each do
5+
@buffer&.free
6+
@buffer = nil
7+
end
8+
9+
context "with a buffer created with .new" do
10+
it "is false for an internal buffer" do
11+
@buffer = IO::Buffer.new(4)
12+
@buffer.external?.should be_false
13+
end
14+
15+
it "is false for a mapped buffer" do
16+
@buffer = IO::Buffer.new(4, IO::Buffer::MAPPED)
17+
@buffer.external?.should be_false
18+
end
19+
end
20+
21+
context "with a file-backed buffer created with .map" do
22+
it "is true for a regular mapping" do
23+
File.open(__FILE__, "r") do |file|
24+
@buffer = IO::Buffer.map(file, nil, 0, IO::Buffer::READONLY)
25+
@buffer.external?.should be_true
26+
end
27+
end
28+
29+
ruby_version_is "3.3" do
30+
it "is false for a private mapping" do
31+
File.open(__FILE__, "r") do |file|
32+
@buffer = IO::Buffer.map(file, nil, 0, IO::Buffer::READONLY | IO::Buffer::PRIVATE)
33+
@buffer.external?.should be_false
34+
end
35+
end
36+
end
37+
end
38+
39+
context "with a String-backed buffer created with .for" do
40+
it "is true for a buffer created without a block" do
41+
@buffer = IO::Buffer.for("test")
42+
@buffer.external?.should be_true
43+
end
44+
45+
it "is true for a buffer created with a block" do
46+
IO::Buffer.for(+"test") do |buffer|
47+
buffer.external?.should be_true
48+
end
49+
end
50+
end
51+
52+
ruby_version_is "3.3" do
53+
context "with a String-backed buffer created with .string" do
54+
it "is true" do
55+
IO::Buffer.string(4) do |buffer|
56+
buffer.external?.should be_true
57+
end
58+
end
59+
end
60+
end
61+
62+
# Always false for slices
63+
context "with a slice of a buffer" do
64+
context "created with .new" do
65+
it "is false when slicing an internal buffer" do
66+
@buffer = IO::Buffer.new(4)
67+
@buffer.slice.external?.should be_false
68+
end
69+
70+
it "is false when slicing a mapped buffer" do
71+
@buffer = IO::Buffer.new(4, IO::Buffer::MAPPED)
72+
@buffer.slice.external?.should be_false
73+
end
74+
end
75+
76+
context "created with .map" do
77+
it "is false" do
78+
File.open(__FILE__, "r") do |file|
79+
@buffer = IO::Buffer.map(file, nil, 0, IO::Buffer::READONLY)
80+
@buffer.slice.external?.should be_false
81+
end
82+
end
83+
end
84+
85+
context "created with .for" do
86+
it "is false when slicing a buffer created without a block" do
87+
@buffer = IO::Buffer.for("test")
88+
@buffer.slice.external?.should be_false
89+
end
90+
91+
it "is false when slicing a buffer created with a block" do
92+
IO::Buffer.for(+"test") do |buffer|
93+
buffer.slice.external?.should be_false
94+
end
95+
end
96+
end
97+
98+
ruby_version_is "3.3" do
99+
context "created with .string" do
100+
it "is false" do
101+
IO::Buffer.string(4) do |buffer|
102+
buffer.slice.external?.should be_false
103+
end
104+
end
105+
end
106+
end
107+
end
108+
end

core/io/buffer/internal_spec.rb

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
require_relative '../../../spec_helper'
2+
3+
describe "IO::Buffer#internal?" do
4+
after :each do
5+
@buffer&.free
6+
@buffer = nil
7+
end
8+
9+
context "with a buffer created with .new" do
10+
it "is true for an internal buffer" do
11+
@buffer = IO::Buffer.new(4)
12+
@buffer.internal?.should be_true
13+
end
14+
15+
it "is false for a mapped buffer" do
16+
@buffer = IO::Buffer.new(4, IO::Buffer::MAPPED)
17+
@buffer.internal?.should be_false
18+
end
19+
end
20+
21+
context "with a file-backed buffer created with .map" do
22+
it "is false for a regular mapping" do
23+
File.open(__FILE__, "r") do |file|
24+
@buffer = IO::Buffer.map(file, nil, 0, IO::Buffer::READONLY)
25+
@buffer.internal?.should be_false
26+
end
27+
end
28+
29+
ruby_version_is "3.3" do
30+
it "is false for a private mapping" do
31+
File.open(__FILE__, "r") do |file|
32+
@buffer = IO::Buffer.map(file, nil, 0, IO::Buffer::READONLY | IO::Buffer::PRIVATE)
33+
@buffer.internal?.should be_false
34+
end
35+
end
36+
end
37+
end
38+
39+
context "with a String-backed buffer created with .for" do
40+
it "is false for a buffer created without a block" do
41+
@buffer = IO::Buffer.for("test")
42+
@buffer.internal?.should be_false
43+
end
44+
45+
it "is false for a buffer created with a block" do
46+
IO::Buffer.for(+"test") do |buffer|
47+
buffer.internal?.should be_false
48+
end
49+
end
50+
end
51+
52+
ruby_version_is "3.3" do
53+
context "with a String-backed buffer created with .string" do
54+
it "is false" do
55+
IO::Buffer.string(4) do |buffer|
56+
buffer.internal?.should be_false
57+
end
58+
end
59+
end
60+
end
61+
62+
# Always false for slices
63+
context "with a slice of a buffer" do
64+
context "created with .new" do
65+
it "is false when slicing an internal buffer" do
66+
@buffer = IO::Buffer.new(4)
67+
@buffer.slice.internal?.should be_false
68+
end
69+
70+
it "is false when slicing a mapped buffer" do
71+
@buffer = IO::Buffer.new(4, IO::Buffer::MAPPED)
72+
@buffer.slice.internal?.should be_false
73+
end
74+
end
75+
76+
context "created with .map" do
77+
it "is false" do
78+
File.open(__FILE__, "r") do |file|
79+
@buffer = IO::Buffer.map(file, nil, 0, IO::Buffer::READONLY)
80+
@buffer.slice.internal?.should be_false
81+
end
82+
end
83+
end
84+
85+
context "created with .for" do
86+
it "is false when slicing a buffer created without a block" do
87+
@buffer = IO::Buffer.for("test")
88+
@buffer.slice.internal?.should be_false
89+
end
90+
91+
it "is false when slicing a buffer created with a block" do
92+
IO::Buffer.for(+"test") do |buffer|
93+
buffer.slice.internal?.should be_false
94+
end
95+
end
96+
end
97+
98+
ruby_version_is "3.3" do
99+
context "created with .string" do
100+
it "is false" do
101+
IO::Buffer.string(4) do |buffer|
102+
buffer.slice.internal?.should be_false
103+
end
104+
end
105+
end
106+
end
107+
end
108+
end

core/io/buffer/mapped_spec.rb

Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
require_relative '../../../spec_helper'
2+
3+
describe "IO::Buffer#mapped?" do
4+
after :each do
5+
@buffer&.free
6+
@buffer = nil
7+
end
8+
9+
context "with a buffer created with .new" do
10+
it "is false for an internal buffer" do
11+
@buffer = IO::Buffer.new(4)
12+
@buffer.mapped?.should be_false
13+
end
14+
15+
it "is true for a mapped buffer" do
16+
@buffer = IO::Buffer.new(4, IO::Buffer::MAPPED)
17+
@buffer.mapped?.should be_true
18+
end
19+
end
20+
21+
context "with a file-backed buffer created with .map" do
22+
it "is true for a regular mapping" do
23+
File.open(__FILE__, "r") do |file|
24+
@buffer = IO::Buffer.map(file, nil, 0, IO::Buffer::READONLY)
25+
@buffer.mapped?.should be_true
26+
end
27+
end
28+
29+
ruby_version_is "3.3" do
30+
it "is true for a private mapping" do
31+
File.open(__FILE__, "r") do |file|
32+
@buffer = IO::Buffer.map(file, nil, 0, IO::Buffer::READONLY | IO::Buffer::PRIVATE)
33+
@buffer.mapped?.should be_true
34+
end
35+
end
36+
end
37+
end
38+
39+
context "with a String-backed buffer created with .for" do
40+
it "is false for a buffer created without a block" do
41+
@buffer = IO::Buffer.for("test")
42+
@buffer.mapped?.should be_false
43+
end
44+
45+
it "is false for a buffer created with a block" do
46+
IO::Buffer.for(+"test") do |buffer|
47+
buffer.mapped?.should be_false
48+
end
49+
end
50+
end
51+
52+
ruby_version_is "3.3" do
53+
context "with a String-backed buffer created with .string" do
54+
it "is false" do
55+
IO::Buffer.string(4) do |buffer|
56+
buffer.mapped?.should be_false
57+
end
58+
end
59+
end
60+
end
61+
62+
# Always false for slices
63+
context "with a slice of a buffer" do
64+
context "created with .new" do
65+
it "is false when slicing an internal buffer" do
66+
@buffer = IO::Buffer.new(4)
67+
@buffer.slice.mapped?.should be_false
68+
end
69+
70+
it "is false when slicing a mapped buffer" do
71+
@buffer = IO::Buffer.new(4, IO::Buffer::MAPPED)
72+
@buffer.slice.mapped?.should be_false
73+
end
74+
end
75+
76+
context "created with .map" do
77+
it "is false" do
78+
File.open(__FILE__, "r") do |file|
79+
@buffer = IO::Buffer.map(file, nil, 0, IO::Buffer::READONLY)
80+
@buffer.slice.mapped?.should be_false
81+
end
82+
end
83+
end
84+
85+
context "created with .for" do
86+
it "is false when slicing a buffer created without a block" do
87+
@buffer = IO::Buffer.for("test")
88+
@buffer.slice.mapped?.should be_false
89+
end
90+
91+
it "is false when slicing a buffer created with a block" do
92+
IO::Buffer.for(+"test") do |buffer|
93+
buffer.slice.mapped?.should be_false
94+
end
95+
end
96+
end
97+
98+
ruby_version_is "3.3" do
99+
context "created with .string" do
100+
it "is false" do
101+
IO::Buffer.string(4) do |buffer|
102+
buffer.slice.mapped?.should be_false
103+
end
104+
end
105+
end
106+
end
107+
end
108+
end

0 commit comments

Comments
 (0)