summaryrefslogtreecommitdiff
path: root/spec/ruby/library/erb/util
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/library/erb/util')
-rw-r--r--spec/ruby/library/erb/util/h_spec.rb7
-rw-r--r--spec/ruby/library/erb/util/html_escape_spec.rb8
-rw-r--r--spec/ruby/library/erb/util/shared/html_escape.rb42
-rw-r--r--spec/ruby/library/erb/util/shared/url_encode.rb50
-rw-r--r--spec/ruby/library/erb/util/u_spec.rb8
-rw-r--r--spec/ruby/library/erb/util/url_encode_spec.rb7
6 files changed, 122 insertions, 0 deletions
diff --git a/spec/ruby/library/erb/util/h_spec.rb b/spec/ruby/library/erb/util/h_spec.rb
new file mode 100644
index 0000000000..ba36574433
--- /dev/null
+++ b/spec/ruby/library/erb/util/h_spec.rb
@@ -0,0 +1,7 @@
+require 'erb'
+require File.expand_path('../../../../spec_helper', __FILE__)
+require File.expand_path('../shared/html_escape', __FILE__)
+
+describe "ERB::Util.h" do
+ it_behaves_like :erb_util_html_escape, :h
+end
diff --git a/spec/ruby/library/erb/util/html_escape_spec.rb b/spec/ruby/library/erb/util/html_escape_spec.rb
new file mode 100644
index 0000000000..9bc9359f2c
--- /dev/null
+++ b/spec/ruby/library/erb/util/html_escape_spec.rb
@@ -0,0 +1,8 @@
+require 'erb'
+require File.expand_path('../../../../spec_helper', __FILE__)
+require File.expand_path('../shared/html_escape', __FILE__)
+
+describe "ERB::Util.html_escape" do
+ it_behaves_like :erb_util_html_escape, :html_escape
+end
+
diff --git a/spec/ruby/library/erb/util/shared/html_escape.rb b/spec/ruby/library/erb/util/shared/html_escape.rb
new file mode 100644
index 0000000000..71b378755e
--- /dev/null
+++ b/spec/ruby/library/erb/util/shared/html_escape.rb
@@ -0,0 +1,42 @@
+describe :erb_util_html_escape, shared: true do
+ it "escape (& < > \" ') to (&amp; &lt; &gt; &quot; &#39;)" do
+ input = '& < > " \''
+ expected = '&amp; &lt; &gt; &quot; &#39;'
+ ERB::Util.__send__(@method, input).should == expected
+ end
+
+ it "not escape characters except (& < > \" ')" do
+ input = (0x20..0x7E).to_a.collect {|ch| ch.chr}.join('')
+ expected = input.
+ gsub(/&/,'&amp;').
+ gsub(/</,'&lt;').
+ gsub(/>/,'&gt;').
+ gsub(/'/,'&#39;').
+ gsub(/"/,'&quot;')
+ ERB::Util.__send__(@method, input).should == expected
+ end
+
+ it "return empty string when argument is nil" do
+ input = nil
+ expected = ''
+ ERB::Util.__send__(@method, input).should == expected
+ end
+
+ it "returns string when argument is number" do
+ input = 123
+ expected = '123'
+ ERB::Util.__send__(@method, input).should == expected
+ input = 3.14159
+ expected = '3.14159'
+ ERB::Util.__send__(@method, input).should == expected
+ end
+
+ it "returns string when argument is boolean" do
+ input = true
+ expected = 'true'
+ ERB::Util.__send__(@method, input).should == expected
+ input = false
+ expected = 'false'
+ ERB::Util.__send__(@method, input).should == expected
+ end
+end
diff --git a/spec/ruby/library/erb/util/shared/url_encode.rb b/spec/ruby/library/erb/util/shared/url_encode.rb
new file mode 100644
index 0000000000..5ac6215523
--- /dev/null
+++ b/spec/ruby/library/erb/util/shared/url_encode.rb
@@ -0,0 +1,50 @@
+describe :erb_util_url_encode, shared: true do
+ it "encode characters" do
+ #input = (0x20..0x7E).to_a.collect{|ch| ch.chr}.join
+ input = " !\"\#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}"
+ expected = "%20%21%22%23%24%25%26%27%28%29%2A%2B%2C-.%2F0123456789%3A%3B%3C%3D%3E%3F%40ABCDEFGHIJKLMNOPQRSTUVWXYZ%5B%5C%5D%5E_%60abcdefghijklmnopqrstuvwxyz%7B%7C%7D"
+ ERB::Util.__send__(@method, input).should == expected
+ end
+
+ ruby_version_is ""..."2.5" do
+ it "escapes tilde" do
+ ERB::Util.__send__(@method, "~").should == "%7E"
+ end
+ end
+
+ ruby_version_is "2.5" do
+ it "does not escape tilde" do
+ ERB::Util.__send__(@method, "~").should == "~"
+ end
+ end
+
+ it "encode unicode string" do
+ input = "http://ja.wikipedia.org/wiki/\343\203\255\343\203\240\343\202\271\343\202\253\343\203\273\343\203\221\343\203\255\343\203\273\343\202\246\343\203\253\343\203\273\343\203\251\343\203\224\343\203\245\343\202\277"
+ expected = 'http%3A%2F%2Fja.wikipedia.org%2Fwiki%2F%E3%83%AD%E3%83%A0%E3%82%B9%E3%82%AB%E3%83%BB%E3%83%91%E3%83%AD%E3%83%BB%E3%82%A6%E3%83%AB%E3%83%BB%E3%83%A9%E3%83%94%E3%83%A5%E3%82%BF'
+ ERB::Util.__send__(@method, input).should == expected
+ end
+
+ it "returns empty string when argument is nil" do
+ input = nil
+ expected = ''
+ ERB::Util.__send__(@method, input).should == expected
+ end
+
+ it "returns string when argument is number" do
+ input = 123
+ expected = '123'
+ ERB::Util.__send__(@method, input).should == expected
+ input = 3.14159
+ expected = '3.14159'
+ ERB::Util.__send__(@method, input).should == expected
+ end
+
+ it "returns string when argument is boolean" do
+ input = true
+ expected = 'true'
+ ERB::Util.__send__(@method, input).should == expected
+ input = false
+ expected = 'false'
+ ERB::Util.__send__(@method, input).should == expected
+ end
+end
diff --git a/spec/ruby/library/erb/util/u_spec.rb b/spec/ruby/library/erb/util/u_spec.rb
new file mode 100644
index 0000000000..9200244c8e
--- /dev/null
+++ b/spec/ruby/library/erb/util/u_spec.rb
@@ -0,0 +1,8 @@
+require 'erb'
+require File.expand_path('../../../../spec_helper', __FILE__)
+require File.expand_path('../shared/url_encode', __FILE__)
+
+describe "ERB::Util.u" do
+ it_behaves_like :erb_util_url_encode, :u
+end
+
diff --git a/spec/ruby/library/erb/util/url_encode_spec.rb b/spec/ruby/library/erb/util/url_encode_spec.rb
new file mode 100644
index 0000000000..303a2e3cd7
--- /dev/null
+++ b/spec/ruby/library/erb/util/url_encode_spec.rb
@@ -0,0 +1,7 @@
+require 'erb'
+require File.expand_path('../../../../spec_helper', __FILE__)
+require File.expand_path('../shared/url_encode', __FILE__)
+
+describe "ERB::Util.url_encode" do
+ it_behaves_like :erb_util_url_encode, :url_encode
+end