@@ -36,9 +36,7 @@ def test_cgi_escape_with_unreserved_characters
3636 end
3737
3838 def test_cgi_escape_with_invalid_byte_sequence
39- assert_nothing_raised ( ArgumentError ) do
40- assert_equal ( '%C0%3C%3C' , CGI . escape ( "\xC0 \< \< " . dup . force_encoding ( "UTF-8" ) ) )
41- end
39+ assert_equal ( '%C0%3C%3C' , CGI . escape ( "\xC0 \< \< " . dup . force_encoding ( "UTF-8" ) ) )
4240 end
4341
4442 def test_cgi_escape_preserve_encoding
@@ -191,3 +189,32 @@ def test_cgi_unescapeElement
191189 assert_equal ( '<BR><A HREF="url"></A>' , unescape_element ( escapeHTML ( '<BR><A HREF="url"></A>' ) , [ "A" , "IMG" ] ) )
192190 end
193191end
192+
193+ class CGIUtilPureRubyTest < Test ::Unit ::TestCase
194+ def setup
195+ CGI ::Escape . module_eval do
196+ alias _escapeHTML escapeHTML
197+ remove_method :escapeHTML
198+ alias _unescapeHTML unescapeHTML
199+ remove_method :unescapeHTML
200+ end
201+ end
202+
203+ def teardown
204+ CGI ::Escape . module_eval do
205+ alias escapeHTML _escapeHTML
206+ remove_method :_escapeHTML
207+ alias unescapeHTML _unescapeHTML
208+ remove_method :_unescapeHTML
209+ end
210+ end
211+
212+ def test_cgi_escapeHTML_with_invalid_byte_sequence
213+ assert_equal ( "<\xA4 ??>" , CGI . escapeHTML ( %[<\xA4 ??>] ) )
214+ end
215+
216+ def test_cgi_unescapeHTML_with_invalid_byte_sequence
217+ input = "\xFF &"
218+ assert_equal ( input , CGI . unescapeHTML ( input ) )
219+ end
220+ end
0 commit comments