summaryrefslogtreecommitdiff
path: root/spec/ruby/core/regexp
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/core/regexp')
-rw-r--r--spec/ruby/core/regexp/eql_spec.rb5
-rw-r--r--spec/ruby/core/regexp/equal_value_spec.rb31
-rw-r--r--spec/ruby/core/regexp/escape_spec.rb5
-rw-r--r--spec/ruby/core/regexp/quote_spec.rb41
-rw-r--r--spec/ruby/core/regexp/shared/equal_value.rb31
-rw-r--r--spec/ruby/core/regexp/shared/quote.rb41
6 files changed, 74 insertions, 80 deletions
diff --git a/spec/ruby/core/regexp/eql_spec.rb b/spec/ruby/core/regexp/eql_spec.rb
index bd5ae43eb2..5924333fbd 100644
--- a/spec/ruby/core/regexp/eql_spec.rb
+++ b/spec/ruby/core/regexp/eql_spec.rb
@@ -1,6 +1,7 @@
require_relative '../../spec_helper'
-require_relative 'shared/equal_value'
describe "Regexp#eql?" do
- it_behaves_like :regexp_eql, :eql?
+ it "is an alias of Regexp#==" do
+ Regexp.instance_method(:eql?).should == Regexp.instance_method(:==)
+ end
end
diff --git a/spec/ruby/core/regexp/equal_value_spec.rb b/spec/ruby/core/regexp/equal_value_spec.rb
index 5455a30598..ad8dc33222 100644
--- a/spec/ruby/core/regexp/equal_value_spec.rb
+++ b/spec/ruby/core/regexp/equal_value_spec.rb
@@ -1,6 +1,33 @@
require_relative '../../spec_helper'
-require_relative 'shared/equal_value'
describe "Regexp#==" do
- it_behaves_like :regexp_eql, :==
+ it "is true if self and other have the same pattern" do
+ (/abc/ == /abc/).should == true
+ (/abc/ == /abd/).should == false
+ end
+
+ not_supported_on :opal do
+ it "is true if self and other have the same character set code" do
+ (/abc/ == /abc/x).should == false
+ (/abc/x == /abc/x).should == true
+ (/abc/u == /abc/n).should == false
+ (/abc/u == /abc/u).should == true
+ (/abc/n == /abc/n).should == true
+ end
+ end
+
+ it "is true if other has the same #casefold? values" do
+ (/abc/ == /abc/i).should == false
+ (/abc/i == /abc/i).should == true
+ end
+
+ not_supported_on :opal do
+ it "is true if self does not specify /n option and other does" do
+ (// == //n).should == true
+ end
+
+ it "is true if self specifies /n option and other does not" do
+ (//n == //).should == true
+ end
+ end
end
diff --git a/spec/ruby/core/regexp/escape_spec.rb b/spec/ruby/core/regexp/escape_spec.rb
index 6b06ab1cbc..99e5eb71d6 100644
--- a/spec/ruby/core/regexp/escape_spec.rb
+++ b/spec/ruby/core/regexp/escape_spec.rb
@@ -1,6 +1,7 @@
require_relative '../../spec_helper'
-require_relative 'shared/quote'
describe "Regexp.escape" do
- it_behaves_like :regexp_quote, :escape
+ it "is an alias of Regexp.quote" do
+ Regexp.method(:escape).should == Regexp.method(:quote)
+ end
end
diff --git a/spec/ruby/core/regexp/quote_spec.rb b/spec/ruby/core/regexp/quote_spec.rb
index 370ab13e30..27fa0c0669 100644
--- a/spec/ruby/core/regexp/quote_spec.rb
+++ b/spec/ruby/core/regexp/quote_spec.rb
@@ -1,6 +1,43 @@
+# encoding: binary
+
require_relative '../../spec_helper'
-require_relative 'shared/quote'
describe "Regexp.quote" do
- it_behaves_like :regexp_quote, :quote
+ it "escapes any characters with special meaning in a regular expression" do
+ Regexp.quote('\*?{}.+^$[]()- ').should == '\\\\\*\?\{\}\.\+\^\$\[\]\(\)\-\\ '
+ Regexp.quote("\*?{}.+^$[]()- ").should == '\\*\\?\\{\\}\\.\\+\\^\\$\\[\\]\\(\\)\\-\\ '
+ Regexp.quote('\n\r\f\t').should == '\\\\n\\\\r\\\\f\\\\t'
+ Regexp.quote("\n\r\f\t").should == '\\n\\r\\f\\t'
+ end
+
+ it "works with symbols" do
+ Regexp.quote(:symbol).should == 'symbol'
+ end
+
+ it "works with substrings" do
+ str = ".+[]()"[1...-1]
+ Regexp.quote(str).should == '\+\[\]\('
+ end
+
+ it "works for broken strings" do
+ Regexp.quote("a.\x85b.".dup.force_encoding("US-ASCII")).should =="a\\.\x85b\\.".dup.force_encoding("US-ASCII")
+ Regexp.quote("a.\x80".dup.force_encoding("UTF-8")).should == "a\\.\x80".dup.force_encoding("UTF-8")
+ end
+
+ it "sets the encoding of the result to US-ASCII if there are only US-ASCII characters present in the input String" do
+ str = "abc".dup.force_encoding("euc-jp")
+ Regexp.quote(str).encoding.should == Encoding::US_ASCII
+ end
+
+ it "sets the encoding of the result to the encoding of the String if any non-US-ASCII characters are present in an input String with valid encoding" do
+ str = "ありがとう".dup.force_encoding("utf-8")
+ str.valid_encoding?.should == true
+ Regexp.quote(str).encoding.should == Encoding::UTF_8
+ end
+
+ it "sets the encoding of the result to BINARY if any non-US-ASCII characters are present in an input String with invalid encoding" do
+ str = "\xff".dup.force_encoding "us-ascii"
+ str.valid_encoding?.should == false
+ Regexp.quote("\xff").encoding.should == Encoding::BINARY
+ end
end
diff --git a/spec/ruby/core/regexp/shared/equal_value.rb b/spec/ruby/core/regexp/shared/equal_value.rb
deleted file mode 100644
index 803988de9e..0000000000
--- a/spec/ruby/core/regexp/shared/equal_value.rb
+++ /dev/null
@@ -1,31 +0,0 @@
-describe :regexp_eql, shared: true do
- it "is true if self and other have the same pattern" do
- /abc/.send(@method, /abc/).should == true
- /abc/.send(@method, /abd/).should == false
- end
-
- not_supported_on :opal do
- it "is true if self and other have the same character set code" do
- /abc/.send(@method, /abc/x).should == false
- /abc/x.send(@method, /abc/x).should == true
- /abc/u.send(@method, /abc/n).should == false
- /abc/u.send(@method, /abc/u).should == true
- /abc/n.send(@method, /abc/n).should == true
- end
- end
-
- it "is true if other has the same #casefold? values" do
- /abc/.send(@method, /abc/i).should == false
- /abc/i.send(@method, /abc/i).should == true
- end
-
- not_supported_on :opal do
- it "is true if self does not specify /n option and other does" do
- //.send(@method, //n).should == true
- end
-
- it "is true if self specifies /n option and other does not" do
- //n.send(@method, //).should == true
- end
- end
-end
diff --git a/spec/ruby/core/regexp/shared/quote.rb b/spec/ruby/core/regexp/shared/quote.rb
deleted file mode 100644
index 083f12d78c..0000000000
--- a/spec/ruby/core/regexp/shared/quote.rb
+++ /dev/null
@@ -1,41 +0,0 @@
-# encoding: binary
-
-describe :regexp_quote, shared: true do
- it "escapes any characters with special meaning in a regular expression" do
- Regexp.send(@method, '\*?{}.+^$[]()- ').should == '\\\\\*\?\{\}\.\+\^\$\[\]\(\)\-\\ '
- Regexp.send(@method, "\*?{}.+^$[]()- ").should == '\\*\\?\\{\\}\\.\\+\\^\\$\\[\\]\\(\\)\\-\\ '
- Regexp.send(@method, '\n\r\f\t').should == '\\\\n\\\\r\\\\f\\\\t'
- Regexp.send(@method, "\n\r\f\t").should == '\\n\\r\\f\\t'
- end
-
- it "works with symbols" do
- Regexp.send(@method, :symbol).should == 'symbol'
- end
-
- it "works with substrings" do
- str = ".+[]()"[1...-1]
- Regexp.send(@method, str).should == '\+\[\]\('
- end
-
- it "works for broken strings" do
- Regexp.send(@method, "a.\x85b.".dup.force_encoding("US-ASCII")).should =="a\\.\x85b\\.".dup.force_encoding("US-ASCII")
- Regexp.send(@method, "a.\x80".dup.force_encoding("UTF-8")).should == "a\\.\x80".dup.force_encoding("UTF-8")
- end
-
- it "sets the encoding of the result to US-ASCII if there are only US-ASCII characters present in the input String" do
- str = "abc".dup.force_encoding("euc-jp")
- Regexp.send(@method, str).encoding.should == Encoding::US_ASCII
- end
-
- it "sets the encoding of the result to the encoding of the String if any non-US-ASCII characters are present in an input String with valid encoding" do
- str = "ありがとう".dup.force_encoding("utf-8")
- str.valid_encoding?.should == true
- Regexp.send(@method, str).encoding.should == Encoding::UTF_8
- end
-
- it "sets the encoding of the result to BINARY if any non-US-ASCII characters are present in an input String with invalid encoding" do
- str = "\xff".dup.force_encoding "us-ascii"
- str.valid_encoding?.should == false
- Regexp.send(@method, "\xff").encoding.should == Encoding::BINARY
- end
-end