зеркало из https://github.com/github/ruby.git
Add a test for r35863.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@35867 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
Родитель
866761d2e8
Коммит
d054eb9631
|
@ -0,0 +1,29 @@
|
|||
#include "ruby/ruby.h"
|
||||
#include "ruby/encoding.h"
|
||||
|
||||
static VALUE sym_7bit, sym_valid, sym_unknown, sym_broken;
|
||||
static VALUE
|
||||
str_coderange(VALUE str)
|
||||
{
|
||||
switch (ENC_CODERANGE(str)) {
|
||||
case ENC_CODERANGE_7BIT:
|
||||
return sym_7bit;
|
||||
case ENC_CODERANGE_VALID:
|
||||
return sym_valid;
|
||||
case ENC_CODERANGE_UNKNOWN:
|
||||
return sym_unknown;
|
||||
case ENC_CODERANGE_BROKEN:
|
||||
return sym_broken;
|
||||
}
|
||||
UNREACHABLE;
|
||||
}
|
||||
|
||||
void
|
||||
Init_coderange(VALUE klass)
|
||||
{
|
||||
sym_7bit = ID2SYM(rb_intern("7bit"));
|
||||
sym_valid = ID2SYM(rb_intern("valid"));
|
||||
sym_unknown = ID2SYM(rb_intern("unknown"));
|
||||
sym_broken = ID2SYM(rb_intern("broken"));
|
||||
rb_define_method(klass, "coderange", str_coderange, 0);
|
||||
}
|
|
@ -0,0 +1,14 @@
|
|||
#include "ruby/ruby.h"
|
||||
#include "ruby/encoding.h"
|
||||
|
||||
static VALUE
|
||||
enc_str_buf_cat(VALUE str, VALUE str2)
|
||||
{
|
||||
return rb_enc_str_buf_cat(str, RSTRING_PTR(str2), RSTRING_LEN(str2), rb_enc_get(str2));
|
||||
}
|
||||
|
||||
void
|
||||
Init_enc_str_buf_cat(VALUE klass)
|
||||
{
|
||||
rb_define_method(klass, "enc_str_buf_cat", enc_str_buf_cat, 1);
|
||||
}
|
|
@ -0,0 +1,15 @@
|
|||
require 'test/unit'
|
||||
require "-test-/string/string"
|
||||
|
||||
class Test_StringEncStrBufCat < Test::Unit::TestCase
|
||||
Bug6509 = '[ruby-dev:45688]'
|
||||
|
||||
def test_unknown
|
||||
a8_str = "a\xBE".force_encoding(Encoding::ASCII_8BIT)
|
||||
cr_unknown_str = [0x62].pack('C*')
|
||||
assert_equal(true, a8_str.valid_encoding?, "an assertion for following tests")
|
||||
assert_equal(:valid, Bug::String.new(a8_str).coderange, "an assertion for following tests")
|
||||
assert_equal(:unknown, Bug::String.new(cr_unknown_str).coderange, "an assertion for following tests")
|
||||
assert_equal(:valid, Bug::String.new(a8_str).enc_str_buf_cat(cr_unknown_str).coderange, Bug6509)
|
||||
end
|
||||
end
|
Загрузка…
Ссылка в новой задаче