1
0
Fork 0
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:
naruse 2016-01-27 11:37:02 +00:00
parent a7c987968d
commit d14f0cfd16
2 changed files with 35 additions and 0 deletions

View 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);
}

View 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