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
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…
x
Reference in New Issue
Block a user