ruby-changes:3948
From: ko1@a...
Date: Tue, 12 Feb 2008 11:53:02 +0900 (JST)
Subject: [ruby-changes:3948] seki - Ruby:r15438 (ruby_1_8): TestERBCoRe: import from erb-2.0.4
seki 2008-02-12 11:52:43 +0900 (Tue, 12 Feb 2008)
New Revision: 15438
Added files:
branches/ruby_1_8/test/erb/hello.erb
Modified files:
branches/ruby_1_8/ChangeLog
branches/ruby_1_8/test/erb/test_erb.rb
Log:
TestERBCore: import from erb-2.0.4
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/test/erb/hello.erb?revision=15438&view=markup
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/ChangeLog?r1=15438&r2=15437&diff_format=u
http://svn.ruby-lang.org/cgi-bin/viewvc.cgi/branches/ruby_1_8/test/erb/test_erb.rb?r1=15438&r2=15437&diff_format=u
Index: ruby_1_8/ChangeLog
===================================================================
--- ruby_1_8/ChangeLog (revision 15437)
+++ ruby_1_8/ChangeLog (revision 15438)
@@ -1,3 +1,9 @@
+Tue Feb 12 11:33:26 2008 Masatoshi SEKI <m_seki@m...>
+
+ * test/erb/test_erb.rb(TestERBCore): import from erb-2.0.4.
+
+ * test/erb/hello.erb: ditto
+
Mon Feb 11 17:25:21 2008 Kouhei Sutou <kou@c...>
* lib/rss/rss.rb (RSS::VERSION), test/rss/test_version.rb, NEWS:
Index: ruby_1_8/test/erb/test_erb.rb
===================================================================
--- ruby_1_8/test/erb/test_erb.rb (revision 15437)
+++ ruby_1_8/test/erb/test_erb.rb (revision 15438)
@@ -38,3 +38,376 @@
assert_equal("test filename:1", e.backtrace[0])
end
end
+
+class TestERBCore < Test::Unit::TestCase
+ def setup
+ @erb = ERB
+ end
+
+ def test_01
+ _test_01(nil)
+ _test_01(0)
+ _test_01(1)
+ _test_01(2)
+ _test_01(3)
+ end
+
+ def _test_01(safe)
+ erb = @erb.new("hello")
+ assert_equal(erb.result, "hello")
+
+ erb = @erb.new("hello", safe, 0)
+ assert_equal(erb.result, "hello")
+
+ erb = @erb.new("hello", safe, 1)
+ assert_equal(erb.result, "hello")
+
+ erb = @erb.new("hello", safe, 2)
+ assert_equal(erb.result, "hello")
+
+ src = <<EOS
+%% hi
+= hello
+<% 3.times do |n| %>
+% n=0
+* <%= n %>
+<% end %>
+EOS
+
+ ans = <<EOS
+%% hi
+= hello
+
+% n=0
+* 0
+
+% n=0
+* 1
+
+% n=0
+* 2
+
+EOS
+ erb = @erb.new(src)
+ assert_equal(ans, erb.result)
+ erb = @erb.new(src, safe, 0)
+ assert_equal(ans, erb.result)
+ erb = @erb.new(src, safe, '')
+ assert_equal(ans, erb.result)
+
+ ans = <<EOS
+%% hi
+= hello
+% n=0
+* 0% n=0
+* 1% n=0
+* 2
+EOS
+ erb = @erb.new(src, safe, 1)
+ assert_equal(ans.chomp, erb.result)
+ erb = @erb.new(src, safe, '>')
+ assert_equal(ans.chomp, erb.result)
+
+ ans = <<EOS
+%% hi
+= hello
+% n=0
+* 0
+% n=0
+* 1
+% n=0
+* 2
+EOS
+
+ erb = @erb.new(src, safe, 2)
+ assert_equal(ans, erb.result)
+ erb = @erb.new(src, safe, '<>')
+ assert_equal(ans, erb.result)
+
+ ans = <<EOS
+% hi
+= hello
+
+* 0
+
+* 0
+
+* 0
+
+EOS
+ erb = @erb.new(src, safe, '%')
+ assert_equal(ans, erb.result)
+
+ ans = <<EOS
+% hi
+= hello
+* 0* 0* 0
+EOS
+ erb = @erb.new(src, safe, '%>')
+ assert_equal(ans.chomp, erb.result)
+
+ ans = <<EOS
+% hi
+= hello
+* 0
+* 0
+* 0
+EOS
+ erb = @erb.new(src, safe, '%<>')
+ assert_equal(ans, erb.result)
+ end
+
+ def test_02_safe_04
+ erb = @erb.new('<%=$SAFE%>', 4)
+ assert_equal(erb.result(TOPLEVEL_BINDING.taint), '4')
+ end
+
+ class Foo; end
+
+ def test_03_def_class
+ erb = @erb.new('hello')
+ cls = erb.def_class
+ assert_equal(Object, cls.superclass)
+ assert(cls.new.respond_to?('result'))
+ cls = erb.def_class(Foo)
+ assert_equal(Foo, cls.superclass)
+ assert(cls.new.respond_to?('result'))
+ cls = erb.def_class(Object, 'erb')
+ assert_equal(Object, cls.superclass)
+ assert(cls.new.respond_to?('erb'))
+ end
+
+ def test_04_percent
+ src = <<EOS
+%n = 1
+<%= n%>
+EOS
+ assert_equal("1\n", ERB.new(src, nil, '%').result)
+
+ src = <<EOS
+<%
+%>
+EOS
+ ans = "\n"
+ assert_equal(ans, ERB.new(src, nil, '%').result)
+
+ src = "<%\n%>"
+ # ans = "\n"
+ ans = ""
+ assert_equal(ans, ERB.new(src, nil, '%').result)
+
+ src = <<EOS
+<%
+n = 1
+%><%= n%>
+EOS
+ assert_equal("1\n", ERB.new(src, nil, '%').result)
+
+ src = <<EOS
+%n = 1
+%% <% n = 2
+n.times do |i|%>
+%% %%><%%<%= i%><%
+end%>
+EOS
+ ans = <<EOS
+%
+% %%><%0
+% %%><%1
+EOS
+ assert_equal(ans, ERB.new(src, nil, '%').result)
+ end
+
+ class Bar; end
+
+ def test_05_def_method
+ assert(! Bar.new.respond_to?('hello'))
+ Bar.module_eval do
+ extend ERB::DefMethod
+ fname = File.join(File.dirname(File.expand_path(__FILE__)), 'hello.erb')
+ def_erb_method('hello', fname)
+ end
+ assert(Bar.new.respond_to?('hello'))
+
+ assert(! Bar.new.respond_to?('hello_world'))
+ erb = @erb.new('hello, world')
+ Bar.module_eval do
+ def_erb_method('hello_world', erb)
+ end
+ assert(Bar.new.respond_to?('hello_world'))
+ end
+
+ def test_06_escape
+ src = <<EOS
+1.<%% : <%="<%%"%>
+2.%%> : <%="%%>"%>
+3.
+% x = "foo"
+<%=x%>
+4.
+%% print "foo"
+5.
+%% <%="foo"%>
+6.<%="
+% print 'foo'
+"%>
+7.<%="
+%% print 'foo'
+"%>
+EOS
+ ans = <<EOS
+1.<% : <%%
+2.%%> : %>
+3.
+foo
+4.
+% print "foo"
+5.
+% foo
+6.
+% print 'foo'
+
+7.
+%% print 'foo'
+
+EOS
+ assert_equal(ans, ERB.new(src, nil, '%').result)
+ end
+
+ def test_07_keep_lineno
+ src = <<EOS
+Hello,
+% x = "World"
+<%= x%>
+% raise("lineno")
+EOS
+
+ erb = ERB.new(src, nil, '%')
+ begin
+ erb.result
+ assert(false)
+ rescue
+ assert_equal("(erb):4", $@[0].to_s)
+ end
+
+ src = <<EOS
+%>
+Hello,
+<% x = "World%%>
+"%>
+<%= x%>
+EOS
+
+ ans = <<EOS
+%>Hello,
+World%>
+EOS
+ assert_equal(ans, ERB.new(src, nil, '>').result)
+
+ ans = <<EOS
+%>
+Hello,
+
+World%>
+EOS
+ assert_equal(ans, ERB.new(src, nil, '<>').result)
+
+ ans = <<EOS
+%>
+Hello,
+
+World%>
+
+EOS
+ assert_equal(ans, ERB.new(src).result)
+
+ src = <<EOS
+Hello,
+<% x = "World%%>
+"%>
+<%= x%>
+<% raise("lineno") %>
+EOS
+
+ erb = ERB.new(src)
+ begin
+ erb.result
+ assert(false)
+ rescue
+ assert_equal("(erb):5", $@[0].to_s)
+ end
+
+ erb = ERB.new(src, nil, '>')
+ begin
+ erb.result
+ assert(false)
+ rescue
+ assert_equal("(erb):5", $@[0].to_s)
+ end
+
+ erb = ERB.new(src, nil, '<>')
+ begin
+ erb.result
+ assert(false)
+ rescue
+ assert_equal("(erb):5", $@[0].to_s)
+ end
+
+ src = <<EOS
+% y = 'Hello'
+<%- x = "World%%>
+"-%>
+<%= x %><%- x = nil -%>
+<% raise("lineno") %>
+EOS
+
+ erb = ERB.new(src, nil, '-')
+ begin
+ erb.result
+ assert(false)
+ rescue
+ assert_equal("(erb):5", $@[0].to_s)
+ end
+
+ erb = ERB.new(src, nil, '%-')
+ begin
+ erb.result
+ assert(false)
+ rescue
+ assert_equal("(erb):5", $@[0].to_s)
+ end
+ end
+
+ def test_08_explicit
+ src = <<EOS
+<% x = %w(hello world) -%>
+NotSkip <%- y = x -%> NotSkip
+<% x.each do |w| -%>
+ <%- up = w.upcase -%>
+ * <%= up %>
+<% end -%>
+ <%- z = nil -%> NotSkip <%- z = x %>
+ <%- z.each do |w| -%>
+ <%- down = w.downcase -%>
+ * <%= down %>
+ <%- up = w.upcase -%>
+ * <%= up %>
+ <%- end -%>
+KeepNewLine <%- z = nil -%>
+EOS
+
+ ans = <<EOS
+NotSkip NotSkip
+ * HELLO
+ * WORLD
+ NotSkip
+ * hello
+ * HELLO
+ * world
+ * WORLD
+KeepNewLine
+EOS
+ assert_equal(ans, ERB.new(src, nil, '-').result)
+ assert_equal(ans, ERB.new(src, nil, '-%').result)
+ end
+end
Index: ruby_1_8/test/erb/hello.erb
===================================================================
--- ruby_1_8/test/erb/hello.erb (revision 0)
+++ ruby_1_8/test/erb/hello.erb (revision 15438)
@@ -0,0 +1,4 @@
+= hello
+<% 3.times do |n| %>
+* <%= n %>
+<% end %>
--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/