[前][次][番号順一覧][スレッド一覧]

ruby-changes:41597

From: naruse <ko1@a...>
Date: Wed, 27 Jan 2016 20:36:08 +0900 (JST)
Subject: [ruby-changes:41597] naruse:r53671 (trunk): Add tests about String's internal capacity

naruse	2016-01-27 20:37:02 +0900 (Wed, 27 Jan 2016)

  New Revision: 53671

  https://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=revision&revision=53671

  Log:
    Add tests about String's internal capacity

  Added files:
    trunk/ext/-test-/string/capacity.c
    trunk/test/-ext-/string/test_capacity.rb
Index: ext/-test-/string/capacity.c
===================================================================
--- ext/-test-/string/capacity.c	(revision 0)
+++ ext/-test-/string/capacity.c	(revision 53671)
@@ -0,0 +1,17 @@ https://github.com/ruby/ruby/blob/trunk/ext/-test-/string/capacity.c#L1
+#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);
+}
Index: test/-ext-/string/test_capacity.rb
===================================================================
--- test/-ext-/string/test_capacity.rb	(revision 0)
+++ test/-ext-/string/test_capacity.rb	(revision 53671)
@@ -0,0 +1,18 @@ https://github.com/ruby/ruby/blob/trunk/test/-ext-/string/test_capacity.rb#L1
+# 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

--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]