@@ -36,9 +36,7 @@ def test_cgi_escape_with_unreserved_characters
36
36
end
37
37
38
38
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" ) ) )
42
40
end
43
41
44
42
def test_cgi_escape_preserve_encoding
@@ -191,3 +189,32 @@ def test_cgi_unescapeElement
191
189
assert_equal ( '<BR><A HREF="url"></A>' , unescape_element ( escapeHTML ( '<BR><A HREF="url"></A>' ) , [ "A" , "IMG" ] ) )
192
190
end
193
191
end
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