@@ -403,6 +403,40 @@ def test_utf_16
403403 assert_equal ( expected_xml , actual_xml )
404404 end
405405 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
406440 end
407441 end
408442end
0 commit comments