mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Add tests about String's internal capacity
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53671 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
a7c987968d
commit
d14f0cfd16
2 changed files with 35 additions and 0 deletions
17
ext/-test-/string/capacity.c
Normal file
17
ext/-test-/string/capacity.c
Normal file
|
@ -0,0 +1,17 @@
|
|||
#include "ruby.h"
|
||||
#include "internal.h"
|
||||
|
||||
static VALUE
|
||||
bug_str_capacity(VALUE klass, VALUE str)
|
||||
{
|
||||
return
|
||||
STR_EMBED_P(str) ? INT2FIX(RSTRING_EMBED_LEN_MAX) : \
|
||||
STR_SHARED_P(str) ? INT2FIX(0) : \
|
||||
LONG2FIX(RSTRING(str)->as.heap.aux.capa);
|
||||
}
|
||||
|
||||
void
|
||||
Init_capacity(VALUE klass)
|
||||
{
|
||||
rb_define_singleton_method(klass, "capacity", bug_str_capacity, 1);
|
||||
}
|
18
test/-ext-/string/test_capacity.rb
Normal file
18
test/-ext-/string/test_capacity.rb
Normal file
|
@ -0,0 +1,18 @@
|
|||
# frozen_string_literal: true
|
||||
require 'test/unit'
|
||||
require '-test-/string'
|
||||
|
||||
class Test_StringCapacity < Test::Unit::TestCase
|
||||
def test_capacity_embeded
|
||||
size = RbConfig::SIZEOF['void*'] * 3 - 1
|
||||
assert_equal size, Bug::String.capacity('foo')
|
||||
end
|
||||
|
||||
def test_capacity_shared
|
||||
assert_equal 0, Bug::String.capacity(:abcdefghijklmnopqrstuvwxyz.to_s)
|
||||
end
|
||||
|
||||
def test_capacity_normal
|
||||
assert_equal 128, Bug::String.capacity('1'*128)
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue