読者です 読者をやめる 読者になる 読者になる

cgi.rbのテスト

Ruby

以前にruby-devでmputさんがcgi.rbにはテストが未だに無いとおっしゃるので、
ちょっとずつ書いてみるプロジェクト。勝手に開始。
ただし、昼休みしかやらないので、ほんとにちょっとずつ。
手伝ってレスをくださるかたも募集しながら。

require 'cgi/session'

class TestCgi < Test::Unit::TestCase
  def test_escapeHTML
    assert_equal(CGI::escapeHTML('Usage: foo "bar" <baz>'),
      "Usage: foo &quot;bar&quot; &lt;baz&gt;")
  end
  def test_unescapeHTML
    assert_equal(CGI::unescapeHTML("Usage: foo &quot;bar&quot; &lt;baz&gt;"),
      "Usage: foo \"bar\" <baz>")
  end
  def test_escape
    assert_equal(CGI::escape("'Stop!' said Fred"),"%27Stop%21%27+said+Fred")
  end
  def test_unescape
    assert_equal(CGI::unescape("%27Stop%21%27+said+Fred"),"'Stop!' said Fred")
  end
  def test_escapeElement
    assert_equal(CGI::escapeElement('<BR><A HREF="url"></A>', "A", "IMG"),
      '<BR>&lt;A HREF=&quot;url&quot;&gt;&lt;/A&gt')
    assert_equal(CGI::escapeElement('<BR><A HREF="url"></A>', ["A", "IMG"]),
      '<BR>&lt;A HREF=&quot;url&quot;&gt;&lt;/A&gt')
  end
end

cgi.rbのusageを見ながらescapeElementまでやってみた。unescapeElementはまだ。
実行すると

fujioka@sv5:~/ruby-1.8.5-p2/test/cgi$ ruby test_cgi.rb
Loaded suite test_cgi
Started
.F...
Finished in 0.021225 seconds.

  1) Failure:
test_escapeElement(TestCgi) [test_cgi.rb:21]:
<"<BR>&lt;A HREF=&quot;url&quot;&gt;&lt;/A&gt;"> expected but was
<"<BR>&lt;A HREF=&quot;url&quot;&gt;&lt;/A&gt">.

5 tests, 5 assertions, 1 failures, 0 errors

わはは。usageが間違っている。タイポですな。最後の;を忘れているようです。

  def test_escapeElement
    assert_equal(CGI::escapeElement('<BR><A HREF="url"></A>', "A", "IMG"),
      '<BR>&lt;A HREF=&quot;url&quot;&gt;&lt;/A&gt;')
    assert_equal(CGI::escapeElement('<BR><A HREF="url"></A>', ["A", "IMG"]),
      '<BR>&lt;A HREF=&quot;url&quot;&gt;&lt;/A&gt;')
  end
end

に修正し、実行。

fujioka@sv5:~/ruby-1.8.5-p2/test/cgi$ ruby test_cgi.rb
Loaded suite test_cgi
Started
.....
Finished in 0.003767 seconds.

5 tests, 6 assertions, 0 failures, 0 errors

うまくいきました。