Skip to content

Commit 8d1ae07

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

File tree

6 files changed

+713
-0
lines changed

6 files changed

+713
-0
lines changed

core/io/buffer/external_spec.rb

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

core/io/buffer/internal_spec.rb

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

core/io/buffer/mapped_spec.rb

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

0 commit comments

Comments
 (0)