[#12312] Need Japanese Help - VRuby & new One-Click Ruby Installer with patch 110 — "Curt Hibbs" <curt.hibbs@...>
I'm trying to build a new release of the One-Click Ruby Installer for
Hello,
Hello,
[#12328] Dir.chdir patch for MS Windows — "Berger, Daniel" <Daniel.Berger@...>
Hi,
[#12344] patch to implement Array.permutation — David Flanagan <david@...>
Hi,
[#12372] Release compatibility/train — Prashant Srinivasan <Prashant.Srinivasan@...>
Hello all,
Hi,
Yukihiro Matsumoto wrote:
Hi,
Yukihiro Matsumoto wrote:
Hi,
Yukihiro Matsumoto wrote:
Hi,
Hi --
On 10/3/07, David A. Black <dblack@rubypal.com> wrote:
Rick DeNatale wrote:
[#12383] Include Rake in Ruby 1.9 — "NAKAMURA, Hiroshi" <nakahiro@...>
-----BEGIN PGP SIGNED MESSAGE-----
On 10/3/07, NAKAMURA, Hiroshi <nakahiro@sarion.co.jp> wrote:
On Oct 3, 2007, at 08:59 , Jacob Fugal wrote:
-----BEGIN PGP SIGNED MESSAGE-----
On 10/15/07, NAKAMURA, Hiroshi <nakahiro@sarion.co.jp> wrote:
[#12539] Ordered Hashes in 1.9? — Michael Neumann <mneumann@...>
Hi all,
Hi,
Yukihiro Matsumoto wrote:
[#12568] $" and require — "Tim Morgan" <tmorgan99@...>
Hello!
[#12578] Possible memory leak in ruby-1.8.6-p110?? — "M. Edward (Ed) Borasky" <znmeb@...>
I haven't had a chance to narrow this down in enough detail yet, but
M. Edward (Ed) Borasky wrote:
On Thu, 11 Oct 2007, M. Edward (Ed) Borasky wrote:
[#12579] iconv enhancement in Ruby 1.9 — "Eugene Ossintsev" <eugoss@...>
Hi,
[#12587] Confusion about arities — Charles Oliver Nutter <charles.nutter@...>
It seems like a number of methods have unexpected arities. For example,
On Oct 10, 2007, at 22:44 , Charles Oliver Nutter wrote:
Eric Hodel wrote:
[#12588] MatchData#select rdoc and arity incorrect — Charles Oliver Nutter <charles.nutter@...>
Rdoc is here:
[#12617] Question about heap_slots in gc.c — Hongli Lai <h.lai@...>
I'm trying to modify the Ruby interpreter's garbage collector. At the
[#12618] StringIO is not IO? — Hongli Lai <h.lai@...>
According to irb,
[#12629] file encoding comments and a patch to parse.y — David Flanagan <david@...>
Matz, Nobu:
[#12632] Defining unicode methods — "Daniel Berger" <djberg96@...>
Hi all,
[#12670] Bug in Numeric#divmod — "Dirk Traulsen" <dirk.traulsen@...>
Hi all!
[#12681] Unicode: Progress? — murphy <murphy@...>
Hello!
murphy schrieb:
Hi,
Yukihiro Matsumoto wrote:
[#12693] retry: revised 1.9 http patch — Hugh Sasse <hgs@...>
I'm reposting this because I've had little response to this version
On Tue, Oct 16, 2007 at 01:32:42AM +0900, Hugh Sasse wrote:
Would this require that zlib be installed? I know that it's possible to
On Wed, 31 Oct 2007, Roger Pack wrote:
-----BEGIN PGP SIGNED MESSAGE-----
[#12697] Range.first is incompatible with Enumerable.first — David Flanagan <david@...>
The new Enumerable.first method is a generalization of Array.first to
Hi,
[#12703] Long encoding names with -K and bad error message — David Flanagan <david@...>
I noticed the following line in the change log:
Hi,
Nobuyoshi Nakada wrote:
Nobu,
At 16:04 07/10/17, David Flanagan wrote:
[#12706] Re: A couple of bugs? — "Gavin Kistner" <gavin.kistner@...>
From: John Lam (DLR) [mailto:jflam@microsoft.com]=20
On Wed, Oct 17, 2007 at 03:10:07AM +0900, Gavin Kistner wrote:
Well, that's interesting. Then this seems to be the only assignment that ha=
[#12710] enum.c patch: fixes Enumerable.cycle and rdoc bugs — David Flanagan <david@...>
The attached patch fixes:
Hi,
[#12714] Re: A couple of bugs? — "Gavin Kistner" <gavin.kistner@...>
> Well, that's interesting. Then this seems to be the only=20
[#12754] Improving 'syntax error, unexpected $end, expecting kEND'? — Hugh Sasse <hgs@...>
I've had a look at this, but can't see how to do it: When I get
On Fri, Oct 19, 2007 at 03:01:55AM +0900, Hugh Sasse wrote:
The patch below changes this message to:
At 04:15 07/10/24, David Flanagan wrote:
Thanks for filling these in Martin. I worry that this is such a simple
At 16:57 07/10/24, David Flanagan wrote:
Martin Duerst schrieb:
Hi,
[#12758] Encoding::primary_encoding — David Flanagan <david@...>
Hi,
Hi,
Nobuyoshi Nakada schrieb:
Hi,
Nobuyoshi Nakada schrieb:
Hi,
Nobuyoshi Nakada schrieb:
T24gMjIvMTAvMjAwNywgV29sZmdhbmcgTsOhZGFzaS1Eb25uZXIgPGVkLm9kYW5vd0B3b25hZG8u
Michal Suchanek schrieb:
Hi,
Nobuyoshi Nakada schrieb:
I made some tests with UFT-8, option "-Ku", option "-Ka" and both types of magic
[#12767] \u escapes in string literals: proof of concept implementation — David Flanagan <david@...>
Back at the end of August, Matz wrote (see
Hi,
Nobuyoshi Nakada wrote:
Hi,
Yukihiro Matsumoto wrote:
At 04:19 07/10/23, David Flanagan wrote:
Martin Duerst wrote:
Hi,
At 13:10 07/10/23, David Flanagan wrote:
Martin Duerst wrote:
Hi,
Yukihiro Matsumoto wrote:
Hi,
Nobuyoshi Nakada wrote:
Hi,
At 16:46 07/10/29, Nobuyoshi Nakada wrote:
Hi,
At 11:29 07/11/06, Nobuyoshi Nakada wrote:
Hi,
Yukihiro Matsumoto wrote:
[#12787] How to specify in Ruby 1.9 the expected file encoding — =?ISO-8859-15?Q?Wolfgang_N=E1dasi-Donner?= <ed.odanow@...>
Dear Ruby developers!
Wolfgang N疆asi-Donner wrote:
Gonzalo Garramu schrieb:
Hi,
Yukihiro Matsumoto schrieb:
I wouldn't want a program to write a BOM at the start of a file
[#12795] patch for String.concat — David Flanagan <david@...>
I don't think that String.<< currently handles appending codepoints
[#12825] clarification of ruby libraries installation paths? — Lucas Nussbaum <lucas@...>
Hi,
On Mon, Oct 22, 2007, Lucas Nussbaum wrote:
On 23/10/07 at 00:13 +0900, Ben Bleything wrote:
On 10/22/07, Lucas Nussbaum <lucas@lucas-nussbaum.net> wrote:
On 23/10/07 at 01:55 +0900, Austin Ziegler wrote:
Lucas Nussbaum wrote:
On 24/10/07 at 05:14 +0900, Gonzalo Garramu wrote:
Lucas Nussbaum wrote:
On 30/10/07 at 07:28 +0900, Gonzalo Garramu wrote:
On 10/29/07, Lucas Nussbaum <lucas@lucas-nussbaum.net> wrote:
Austin Ziegler wrote:
On 10/30/07, Mathieu Blondel <mblondel@rubyforge.org> wrote:
On Tue, Oct 23, 2007 at 01:55:29AM +0900, Austin Ziegler wrote:
On 10/22/07, Sam Roberts <sroberts@uniserve.com> wrote:
Austin Ziegler wrote:
On 10/28/07, Bob Proulx <bob@proulx.com> wrote:
Austin,
On 10/29/07, Lucas Nussbaum <lucas@lucas-nussbaum.net> wrote:
On 10/29/07, Luis Lavena <luislavena@gmail.com> wrote:
On 10/30/07, Austin Ziegler <halostatue@gmail.com> wrote:
Do we think that maybe, just maybe, things went off the rails when the
On 10/30/07, Rick Bradley <rick@rickbradley.com> wrote:
On Tue, 30 Oct 2007 22:52:29 +0900, "Luis Lavena" <luislavena@gmail.com> wrote:
[#12849] Problem reported in Rdoc (Ruby 1.9) Rdoc for Ruby 1.8 works — =?ISO-8859-15?Q?Wolfgang_N=E1dasi-Donner?= <ed.odanow@...>
Hi!
[#12867] constant lookup rules in 1.9 — David Flanagan <david@...>
Hi,
[#12895] OSX patches — "Laurent Sansonetti" <laurent.sansonetti@...>
Hi ruby-core,
[#12900] Hopefully Complete List of Possible Encoding Specifications - Existing Ones — Wolfgang Nádasi-Donner <ed.odanow@...>
Dear Ruby 1.9 architects, developers, and testers!
Hi,
Yukihiro Matsumoto schrieb:
Hi,
Yukihiro Matsumoto schrieb:
I have a (hopefully) final question before testing all
Hi,
Wolfgang N叩dasi-Donner wrote:
David Flanagan schrieb:
At 10:30 07/10/26, Nobuyoshi Nakada wrote:
Yukihiro Matsumoto wrote:
On 10/25/07, Yukihiro Matsumoto <matz@ruby-lang.org> wrote:
[#12951] Fluent programming in Ruby — David Flanagan <david@...>
From the ChangeLog:
At 14:01 07/10/26, David Flanagan wrote:
Martin Duerst schrieb:
[#12971] Re: Fluent programming in Ruby — Brent Roman <brent@...>
I suppose you could have irb require a terminating ';'
> -----Original Message-----
On 10/26/07, Berger, Daniel <Daniel.Berger@qwest.com> wrote:
[#12996] General hash keys for colon notation — murphy <murphy@...>
Dear language designer(s) and parser wizards,
On 10/28/07, murphy <murphy@rubychan.de> wrote:
On 10/28/07, Rick DeNatale <rick.denatale@gmail.com> wrote:
Rick DeNatale wrote:
[#13027] Implementation of "guessUTF" method - final questions — Wolfgang Nádasi-Donner <ed.odanow@...>
Dear Ruby designers, developers, and testers!
On 10/29/07, Wolfgang N=E1dasi-Donner <ed.odanow@wonado.de> wrote:
Nikolai Weibull schrieb:
On 10/29/07, Wolfgang N=E1dasi-Donner <ed.odanow@wonado.de> wrote:
Nikolai Weibull schrieb:
Hello Wolfgang,
At 17:50 07/10/29, Nikolai Weibull wrote:
On 10/29/07, Martin Duerst <duerst@it.aoyama.ac.jp> wrote:
[#13069] new Enumerable.butfirst method — David Flanagan <david@...>
Matz,
Hi,
Yukihiro Matsumoto wrote:
Hi,
[#13083] Didn't find String#subseq — Wolfgang Nádasi-Donner <ed.odanow@...>
Hi!
[#13096] 1.8.6 gc.c thoughts — "Roger Pack" <rogerpack2005@...>
After examining how the 1.8.6 gc works, I had a few thoughts:
[#13107] %s and utf8 ? — hadmut@... (Hadmut Danisch)
Hi,
[#13135] patch for lib/net/http.rb, self['User-Agent'] ||= 'Ruby' — Stephen Bannasch <stephen.bannasch@...>
I posted this patch before in the middle of another thread and didn't
Hi Stephen,
In article <9079DC13-476F-4C12-922E-E197BD5AAA5C@loveruby.net>,
[#13139] Required Space for Unicode Character Attribute Tables — Wolfgang Nádasi-Donner <ed.odanow@...>
Hi!
[#13143] Two Issues (open-uri's respond_to? and autoload's require) — Trans <transfire@...>
Hi--
-----BEGIN PGP SIGNED MESSAGE-----
Re: Unicode: Progress?
Hi,
At Mon, 15 Oct 2007 20:18:03 +0900,
Yukihiro Matsumoto wrote in [ruby-core:12687]:
> |The knowledge about lower/upper case also seems to be included in 1.9's
> |Oniguruma, since /[[:upper:]]/u works as expected for me.
>
> Oniguruma does case normalization. Case conversion both way is more
> difficult. I don't say it's impossible, but please allow us more
> time.
How about this patch?
Index: encoding.c
===================================================================
--- encoding.c (revision 13717)
+++ encoding.c (working copy)
@@ -461,4 +461,23 @@ rb_enc_tolower(int c, rb_encoding *enc)
}
+int
+rb_enc_casefold(char *to, const char *p, const char *e, rb_encoding *enc)
+{
+ OnigCaseFoldCodeItem items[ONIGENC_GET_CASE_FOLD_CODES_MAX_NUM];
+ int i, n;
+
+ n = ONIGENC_GET_CASE_FOLD_CODES_BY_STR(enc, 0, (const UChar *)p, (const UChar *)e, items);
+ for (i = 0; i < n; ++i) {
+ if (items[i].code_len == 1) {
+ rb_enc_mbcput(items[i].code[0], to, enc);
+ return items[i].byte_len;
+ }
+ }
+ for (n = i = 0; i < items[0].code_len; ++i) {
+ n += rb_enc_mbcput(items[0].code[i], to + n, enc);
+ }
+ return items[0].byte_len;
+}
+
static VALUE
enc_to_s(VALUE self)
Index: string.c
===================================================================
--- string.c (revision 13717)
+++ string.c (working copy)
@@ -3048,4 +3071,68 @@ rb_str_dump(VALUE str)
+#define CHANGECASE_SETUP() \
+ rb_encoding *enc; \
+ char *s, *send, *t, *b; \
+ long len; \
+ int modify = 0, n, c, asciicompat; \
+ VALUE str = *strp, str2 = str_new(0, 0, RSTRING_LEN(str)); \
+ \
+ *strp = str2; \
+ enc = rb_enc_get(str); \
+ asciicompat = rb_enc_asciicompat(enc); \
+ rb_enc_associate(str2, enc); \
+ s = RSTRING_PTR(str); send = RSTRING_END(str); \
+ b = s; \
+ len = 0
+
+#define CHANGECASE_FINISH() \
+ if (s > b) { \
+ MAKEROOM(s - b); \
+ } \
+ STR_SET_LEN(str2, len); \
+ RSTRING_PTR(str2)[len] = 0; \
+ if (modify) return str2; \
+ return Qnil
+
+#define MAKEROOM(n) do { \
+ RESIZE_CAPA(str2, len + (s - b) + (n)); \
+ t = RSTRING_PTR(str2); \
+ MEMCPY(t + len, b, char, s - b); \
+ len += s - b; \
+ } while (0)
+
+#define SWAPCASE(c) ((c) ^ 0x20)
+
+#define CHANGECASE(ct) \
+ c = rb_enc_codepoint(s, send, enc); \
+ if (asciicompat && isascii(c) && ct(c)) { \
+ MAKEROOM(1); \
+ t[len++] = SWAPCASE(c); \
+ b = ++s; \
+ modify = 1; \
+ } \
+ else if (rb_enc_##ct(c, enc)) { \
+ MAKEROOM(ONIGENC_CODE_TO_MBC_MAXLEN); \
+ n = rb_enc_casefold(t + len, s, send, enc); \
+ if (n > 0) len += n; \
+ s += rb_enc_codelen(c, enc); \
+ b = s; \
+ modify = 1; \
+ } \
+ else { \
+ s += rb_enc_codelen(c, enc); \
+ }
+
+static VALUE
+str_upcase(VALUE *strp)
+{
+ CHANGECASE_SETUP();
+ while (s < send) {
+ CHANGECASE(islower);
+ }
+ CHANGECASE_FINISH();
+}
+
+
/*
* call-seq:
@@ -3060,24 +3147,9 @@ static VALUE
rb_str_upcase_bang(VALUE str)
{
- rb_encoding *enc;
- char *s, *send;
- int modify = 0;
-
+ VALUE str2 = str;
rb_str_modify(str);
- enc = rb_enc_get(str);
- s = RSTRING_PTR(str); send = RSTRING_END(str);
- while (s < send) {
- int c = rb_enc_codepoint(s, send, enc);
-
- if (rb_enc_islower(c, enc)) {
- /* assuming toupper returns codepoint with same size */
- rb_enc_mbcput(rb_enc_toupper(c, enc), s, enc);
- modify = 1;
- }
- s += rb_enc_codelen(c, enc);
- }
-
- if (modify) return str;
- return Qnil;
+ if (NIL_P(str_upcase(&str2))) return Qnil;
+ rb_str_replace(str, str2);
+ return str;
}
@@ -3098,10 +3170,22 @@ static VALUE
rb_str_upcase(VALUE str)
{
- str = rb_str_dup(str);
- rb_str_upcase_bang(str);
+ VALUE klass = RBASIC(str)->klass;
+ str_upcase(&str);
+ RBASIC(str)->klass = klass;
return str;
}
+static VALUE
+str_downcase(VALUE *strp)
+{
+ CHANGECASE_SETUP();
+ while (s < send) {
+ CHANGECASE(isupper);
+ }
+ CHANGECASE_FINISH();
+}
+
+
/*
* call-seq:
@@ -3116,24 +3200,9 @@ static VALUE
rb_str_downcase_bang(VALUE str)
{
- rb_encoding *enc;
- char *s, *send;
- int modify = 0;
-
+ VALUE str2 = str;
rb_str_modify(str);
- enc = rb_enc_get(str);
- s = RSTRING_PTR(str); send = RSTRING_END(str);
- while (s < send) {
- int c = rb_enc_codepoint(s, send, enc);
-
- if (rb_enc_isupper(c, enc)) {
- /* assuming toupper returns codepoint with same size */
- rb_enc_mbcput(rb_enc_tolower(c, enc), s, enc);
- modify = 1;
- }
- s += rb_enc_codelen(c, enc);
- }
-
- if (modify) return str;
- return Qnil;
+ if (NIL_P(str_downcase(&str2))) return Qnil;
+ rb_str_replace(str, str2);
+ return str;
}
@@ -3154,10 +3223,23 @@ static VALUE
rb_str_downcase(VALUE str)
{
- str = rb_str_dup(str);
- rb_str_downcase_bang(str);
+ VALUE klass = RBASIC(str)->klass;
+ str_downcase(&str);
+ RBASIC(str)->klass = klass;
return str;
}
+static VALUE
+str_capitalize(VALUE *strp)
+{
+ CHANGECASE_SETUP();
+ CHANGECASE(islower);
+ while (s < send) {
+ CHANGECASE(isupper);
+ }
+ CHANGECASE_FINISH();
+}
+
+
/*
* call-seq:
@@ -3177,30 +3259,9 @@ static VALUE
rb_str_capitalize_bang(VALUE str)
{
- rb_encoding *enc;
- char *s, *send;
- int modify = 0;
- int c;
-
+ VALUE str2 = str;
rb_str_modify(str);
- enc = rb_enc_get(str);
- if (RSTRING_LEN(str) == 0 || !RSTRING_PTR(str)) return Qnil;
- s = RSTRING_PTR(str); send = RSTRING_END(str);
-
- c = rb_enc_codepoint(s, send, enc);
- if (rb_enc_islower(c, enc)) {
- rb_enc_mbcput(rb_enc_toupper(c, enc), s, enc);
- modify = 1;
- }
- s += rb_enc_codelen(c, enc);
- while (s < send) {
- c = rb_enc_codepoint(s, send, enc);
- if (rb_enc_isupper(c, enc)) {
- rb_enc_mbcput(rb_enc_tolower(c, enc), s, enc);
- modify = 1;
- }
- s += rb_enc_codelen(c, enc);
- }
- if (modify) return str;
- return Qnil;
+ if (NIL_P(str_capitalize(&str2))) return Qnil;
+ rb_str_replace(str, str2);
+ return str;
}
@@ -3222,10 +3283,22 @@ static VALUE
rb_str_capitalize(VALUE str)
{
- str = rb_str_dup(str);
- rb_str_capitalize_bang(str);
+ VALUE klass = RBASIC(str)->klass;
+ str_capitalize(&str);
+ RBASIC(str)->klass = klass;
return str;
}
+static VALUE
+str_swapcase(VALUE *strp)
+{
+ CHANGECASE_SETUP();
+ while (s < send) {
+ CHANGECASE(isalpha);
+ }
+ CHANGECASE_FINISH();
+}
+
+
/*
* call-seq:
@@ -3240,29 +3313,9 @@ static VALUE
rb_str_swapcase_bang(VALUE str)
{
- rb_encoding *enc;
- char *s, *send;
- int modify = 0;
-
+ VALUE str2 = str;
rb_str_modify(str);
- enc = rb_enc_get(str);
- s = RSTRING_PTR(str); send = RSTRING_END(str);
- while (s < send) {
- int c = rb_enc_codepoint(s, send, enc);
-
- if (rb_enc_isupper(c, enc)) {
- /* assuming toupper returns codepoint with same size */
- rb_enc_mbcput(rb_enc_tolower(c, enc), s, enc);
- modify = 1;
- }
- else if (rb_enc_islower(c, enc)) {
- /* assuming toupper returns codepoint with same size */
- rb_enc_mbcput(rb_enc_toupper(c, enc), s, enc);
- modify = 1;
- }
- s += rb_enc_codelen(c, enc);
- }
-
- if (modify) return str;
- return Qnil;
+ if (NIL_P(str_swapcase(&str2))) return Qnil;
+ rb_str_replace(str, str2);
+ return str;
}
@@ -3283,6 +3336,7 @@ static VALUE
rb_str_swapcase(VALUE str)
{
- str = rb_str_dup(str);
- rb_str_swapcase_bang(str);
+ VALUE klass = RBASIC(str)->klass;
+ str_swapcase(&str);
+ RBASIC(str)->klass = klass;
return str;
}
Index: include/ruby/encoding.h
===================================================================
--- include/ruby/encoding.h (revision 13717)
+++ include/ruby/encoding.h (working copy)
@@ -95,4 +95,5 @@ int rb_enc_codelen(int, rb_encoding*);
#define rb_enc_asciicompat(enc) (rb_enc_mbminlen(enc)==1)
+int rb_enc_casefold(char *to, const char *p, const char *e, rb_encoding *enc);
int rb_enc_toupper(int c, rb_encoding *enc);
int rb_enc_tolower(int c, rb_encoding *enc);
Index: test/ruby/test_encoding.rb
===================================================================
--- test/ruby/test_encoding.rb (revision 13717)
+++ test/ruby/test_encoding.rb (working copy)
@@ -26,3 +26,66 @@ class TestEncoding < Test::Unit::TestCas
end
end
+
+ # lettercase
+ UPSTR = "R\303\234BY".force_encoding("utf-8")
+ LOWSTR = "r\303\274by".force_encoding("utf-8")
+ CAPSTR = "R\303\274by".force_encoding("utf-8")
+ MIXSTR = "r\303\234By".force_encoding("utf-8")
+ MIX2STR = "R\303\274bY".force_encoding("utf-8")
+
+ def test_upcase
+ assert_equal(UPSTR, UPSTR.upcase)
+ assert_equal(UPSTR, LOWSTR.upcase)
+ assert_equal(UPSTR, CAPSTR.upcase)
+ assert_equal(UPSTR, MIXSTR.upcase)
+ end
+
+ def test_downcase
+ assert_equal(LOWSTR, UPSTR.downcase)
+ assert_equal(LOWSTR, LOWSTR.downcase)
+ assert_equal(LOWSTR, CAPSTR.downcase)
+ assert_equal(LOWSTR, MIXSTR.downcase)
+ end
+
+ def test_capitalize
+ assert_equal(CAPSTR, UPSTR.capitalize)
+ assert_equal(CAPSTR, LOWSTR.capitalize)
+ assert_equal(CAPSTR, CAPSTR.capitalize)
+ assert_equal(CAPSTR, MIXSTR.capitalize)
+ end
+
+ def test_swapcase
+ assert_equal(LOWSTR, UPSTR.swapcase)
+ assert_equal(UPSTR, LOWSTR.swapcase)
+ assert_equal(MIX2STR, MIXSTR.swapcase)
+ assert_equal(MIXSTR, MIX2STR.swapcase)
+ end
+
+ def test_upcase!
+ assert_nil(UPSTR.dup.upcase!)
+ assert_equal(UPSTR, LOWSTR.dup.upcase!)
+ assert_equal(UPSTR, CAPSTR.dup.upcase!)
+ assert_equal(UPSTR, MIXSTR.dup.upcase!)
+ end
+
+ def test_downcase!
+ assert_equal(LOWSTR, UPSTR.dup.downcase!)
+ assert_nil(LOWSTR.dup.downcase!)
+ assert_equal(LOWSTR, CAPSTR.dup.downcase!)
+ assert_equal(LOWSTR, MIXSTR.dup.downcase!)
+ end
+
+ def test_capitalize!
+ assert_equal(CAPSTR, UPSTR.dup.capitalize!)
+ assert_equal(CAPSTR, LOWSTR.dup.capitalize!)
+ assert_nil(CAPSTR.dup.capitalize!)
+ assert_equal(CAPSTR, MIXSTR.dup.capitalize!)
+ end
+
+ def test_swapcase!
+ assert_equal(LOWSTR, UPSTR.dup.swapcase!)
+ assert_equal(UPSTR, LOWSTR.dup.swapcase!)
+ assert_equal(MIX2STR, MIXSTR.dup.swapcase!)
+ assert_equal(MIXSTR, MIX2STR.dup.swapcase!)
+ end
end
--
Nobu Nakada