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