@@ -403,6 +403,40 @@ def test_utf_16
403
403
assert_equal ( expected_xml , actual_xml )
404
404
end
405
405
end
406
+
407
+ class ReadUntilTest < Test ::Unit ::TestCase
408
+ def test_utf_8
409
+ xml = <<-EOX . force_encoding ( "ASCII-8BIT" )
410
+ <?xml version="1.0" encoding="UTF-8"?>
411
+ <message testing=">">Hello world!</message>
412
+ EOX
413
+ document = REXML ::Document . new ( xml )
414
+ assert_equal ( "UTF-8" , document . encoding )
415
+ assert_equal ( ">" , REXML ::XPath . match ( document , "/message" ) [ 0 ] . attribute ( "testing" ) . value )
416
+ end
417
+
418
+ def test_utf_16le
419
+ xml = <<-EOX . encode ( "UTF-16LE" ) . force_encoding ( "ASCII-8BIT" )
420
+ <?xml version="1.0" encoding="UTF-16"?>
421
+ <message testing=">">Hello world!</message>
422
+ EOX
423
+ bom = "\ufeff " . encode ( "UTF-16LE" ) . force_encoding ( "ASCII-8BIT" )
424
+ document = REXML ::Document . new ( bom + xml )
425
+ assert_equal ( "UTF-16" , document . encoding )
426
+ assert_equal ( ">" , REXML ::XPath . match ( document , "/message" ) [ 0 ] . attribute ( "testing" ) . value )
427
+ end
428
+
429
+ def test_utf_16be
430
+ xml = <<-EOX . encode ( "UTF-16BE" ) . force_encoding ( "ASCII-8BIT" )
431
+ <?xml version="1.0" encoding="UTF-16"?>
432
+ <message testing=">">Hello world!</message>
433
+ EOX
434
+ bom = "\ufeff " . encode ( "UTF-16BE" ) . force_encoding ( "ASCII-8BIT" )
435
+ document = REXML ::Document . new ( bom + xml )
436
+ assert_equal ( "UTF-16" , document . encoding )
437
+ assert_equal ( ">" , REXML ::XPath . match ( document , "/message" ) [ 0 ] . attribute ( "testing" ) . value )
438
+ end
439
+ end
406
440
end
407
441
end
408
442
end
0 commit comments