diff options
Diffstat (limited to 'test/rexml')
-rw-r--r-- | test/rexml/test_contrib.rb | 16 | ||||
-rw-r--r-- | test/rexml/test_core.rb | 138 | ||||
-rw-r--r-- | test/rexml/test_encoding.rb | 22 |
3 files changed, 72 insertions, 104 deletions
diff --git a/test/rexml/test_contrib.rb b/test/rexml/test_contrib.rb index 3bbaa083b3..eb16b8946c 100644 --- a/test/rexml/test_contrib.rb +++ b/test/rexml/test_contrib.rb @@ -241,7 +241,7 @@ DELIMITER end doc = REXML::Document.new(source_iso) - assert_equal('ISO-8859-1', doc.xml_decl.encoding.to_s) + assert_equal('ISO-8859-1', doc.xml_decl.encoding) assert_equal(koln_utf, doc.root.text) doc.write(out="") assert_equal(source_iso, out ) @@ -255,23 +255,21 @@ DELIMITER <position><aktuell datum="01-10-11">Technik</aktuell></position> <hauptspalte> <headline>Technik</headline> -Die Technik ist das Rückgrat der meisten Geschäftsprozesse bei Home of the Brave. Deshalb sollen hier alle relevanten technischen Abläufe, Daten und Einrichtungen beschrieben werden, damit jeder im Bedarfsfall die nötigen Informationen, Anweisungen und Verhaltensempfehlungen nachlesen und/oder abrufen kann. +Die Technik ist das R\xFCckgrat der meisten Gesch\xFCftsprozesse bei Home of the Brave. Deshalb sollen hier alle relevanten technischen Abl\xFCufe, Daten und Einrichtungen beschrieben werden, damit jeder im Bedarfsfall die n\xFCtigen Informationen, Anweisungen und Verhaltensempfehlungen nachlesen und/oder abrufen kann. </hauptspalte> <nebenspalte> <link ziel="Flash/">Flash</link><umbruch/> - Nützliches von Flashern für Flasher.<umbruch/> + N\xFCtzliches von Flashern f\xFCr Flasher.<umbruch/> <link neu="ja" ziel="Cvs/">CVS-FAQ</link><umbruch/> FAQ zur Benutzung von CVS bei HOB </nebenspalte> </intranet> EOF tn = XPath.first(doc, "//nebenspalte/text()[2]") - expected_iso = "Nützliches von Flashern für Flasher." - expected_utf = expected_iso.unpack('C*').pack('U*') - if expected_utf.respond_to? :encode - expected_iso.force_encoding("iso-8859-1") - expected_utf.force_encoding(::Encoding::UTF_8) - end + expected_iso = "N\xFCtzliches von Flashern f\xFCr Flasher." + expected_utf = expected_iso.unpack('C*').pack('U*') + expected_iso.force_encoding(::Encoding::ISO_8859_1) + expected_utf.force_encoding(::Encoding::UTF_8) assert_equal(expected_utf, tn.to_s.strip) f = REXML::Formatters::Default.new f.write( tn, Output.new(o = "", "ISO-8859-1") ) diff --git a/test/rexml/test_core.rb b/test/rexml/test_core.rb index 90d83f11a5..d10c1bcc36 100644 --- a/test/rexml/test_core.rb +++ b/test/rexml/test_core.rb @@ -20,7 +20,7 @@ class Tester < Test::Unit::TestCase <?xsl stylesheet="blah.xsl"?> <!-- The first line tests the XMLDecl, the second tests PI. The next line tests DocType. This line tests comments. --> - <!DOCTYPE xsa PUBLIC + <!DOCTYPE xsa PUBLIC "-//LM Garshol//DTD XML Software Autoupdate 1.0//EN//XML" "http://www.garshol.priv.no/download/xsa/xsa.dtd"> @@ -80,7 +80,7 @@ class Tester < Test::Unit::TestCase # This because of a reported bug in attribute handling in 1.0a8 source = '<a att="A">blah</a>' doc = Document.new source - doc.elements.each do |a| + doc.elements.each do |a| a.attributes['att'] << 'B' assert_equal "AB", a.attributes['att'] a.attributes['att'] = 'C' @@ -155,11 +155,11 @@ class Tester < Test::Unit::TestCase assert_equal 3, doc.root.size assert_equal 1, doc.root.elements.size - text = " This is text + text = " This is text with a lot of whitespace " source = "<a>#{text}<b>#{text}</b><c>#{text}</c>#{text}</a>" - doc = Document.new( source, { + doc = Document.new( source, { :respect_whitespace => %w{ a c } } ) assert_equal text, doc.elements["//c"].text @@ -207,8 +207,8 @@ class Tester < Test::Unit::TestCase doc.write(test="") assert_equal(correct, test) - multi_line_source = '<!DOCTYPE xsa PUBLIC - "-//LM Garshol//DTD XML Software Autoupdate 1.0//EN//XML" + multi_line_source = '<!DOCTYPE xsa PUBLIC + "-//LM Garshol//DTD XML Software Autoupdate 1.0//EN//XML" "http://www.garshol.priv.no/download/xsa/xsa.dtd"> <a/>' d = Document.new( multi_line_source ) @@ -217,8 +217,8 @@ class Tester < Test::Unit::TestCase doc.write(test="") assert_equal(correct, test) - odd_space_source = ' <!DOCTYPE - xsa PUBLIC "-//LM Garshol//DTD XML Software Autoupdate 1.0//EN//XML" + odd_space_source = ' <!DOCTYPE + xsa PUBLIC "-//LM Garshol//DTD XML Software Autoupdate 1.0//EN//XML" "http://www.garshol.priv.no/download/xsa/xsa.dtd"> <a/>' d = Document.new( odd_space_source ) dt = d.doctype @@ -230,34 +230,12 @@ class Tester < Test::Unit::TestCase doc = Document.new(docin) doc.write(test="") assert_equal(31, doc.doctype.size) - - # Here's a little ditty from Tobias... - src = <<-EOL - <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN" - "http://www.w3.org/TR/SVG/DTD/svg10.dtd" - [ - <!-- <!ENTITY % fast-slow "0 0 .5 1">--> - <!--<!ENTITY % slow-fast ".5 0 1 1">--> - <!ENTITY hover_ani - '<animateTransform attributeName="transform" - type="scale" restart="whenNotActive" values="1;0.96" - dur="0.5s" calcMode="spline" keySplines="0 0 .5 1" - fill="freeze" begin="mouseover"/> - <animateTransform attributeName="transform" - type="scale" restart="whenNotActive" values="0.96;1" - dur="0.5s" calcMode="spline" keySplines=".5 0 1 1" - fill="freeze" begin="mouseover+0.5s"/>' - > - ] - > <a/> - EOL end def test_document # Testing cloning source = "<element/>" doc = Document.new source - doc2 = Document.new doc # Testing Root assert_equal doc.root.name.to_s, "element" @@ -266,7 +244,7 @@ class Tester < Test::Unit::TestCase source = @xsa_source doc = Document.new source assert_instance_of XMLDecl, doc.xml_decl - assert_instance_of DocType, doc.doctype + assert_instance_of DocType, doc.doctype assert_equal doc.version, "1.0" source = File.new(fixture_path("dash.xml")) @@ -383,7 +361,7 @@ class Tester < Test::Unit::TestCase assert_equal(string, text.to_s) string2 = "<a>#{string}</a>" - doc = Document.new( string2, { + doc = Document.new( string2, { :raw => %w{ a b } } ) f.write(doc,out="") @@ -463,7 +441,7 @@ class Tester < Test::Unit::TestCase assert_equal "Datasets", child.name } each_test(doc, "Project/Datasets/link", 2 ) - each_test(doc.root, "/Project/Description", 1) {|child| + each_test(doc.root, "/Project/Description", 1) {|child| assert_equal "Description", child.name } each_test(doc.root, "./Description",1 ) { |child| @@ -642,11 +620,10 @@ class Tester < Test::Unit::TestCase end def test_line - doc = Document.new File.new(fixture_path("bad.xml")) + Document.new File.new(fixture_path("bad.xml")) assert_fail "There should have been an error" rescue Exception # We should get here - er = $! assert($!.line == 5, "Should have been an error on line 5, "+ "but was reported as being on line #{$!.line}" ) end @@ -664,13 +641,11 @@ class Tester < Test::Unit::TestCase def test_exception source = SourceFactory.create_from "<a/>" p = ParseException.new( "dummy message", source ) - s = p.to_s begin raise "dummy" rescue Exception p.continued_exception = $! end - s = p.to_s end def test_bad_content @@ -682,7 +657,7 @@ class Tester < Test::Unit::TestCase assert_equal "content>content", tree_gt.elements[1].text # This isn't begin - tree_lt = Document.new in_lt + Document.new in_lt assert_fail "Should have gotten a parse error" rescue ParseException end @@ -766,7 +741,7 @@ class Tester < Test::Unit::TestCase doc.root.each_element_with_text( nil, 0, 'd', &block ) assert_equal 0, arry.size end - + def test_element_parse_stream s = Source.new( "<a>some text</a>" ) l = Listener.new @@ -810,7 +785,7 @@ EOL assert_equal('eeü'.force_encoding("UTF-8"), a.root.text) end - def test_element_decl + def test_element_decl element_decl = Source.new("<!DOCTYPE foo [ <!ELEMENT bar (#PCDATA)> ]>") @@ -824,7 +799,7 @@ EOL <!DOCTYPE blah [ <!ATTLIST blah xmlns CDATA "foo"> - <!ATTLIST a + <!ATTLIST a bar CDATA "gobble" xmlns:one CDATA "two" > @@ -855,17 +830,15 @@ EOL def test_attlist_write file=File.new(fixture_path("foo.xml")) - doc=Document.new file - root = doc.root - + doc=Document.new file out = '' - doc.write(out) + doc.write(out) end def test_more_namespaces - assert_raise( REXML::UndefinedNamespaceException, + assert_raise( REXML::UndefinedNamespaceException, %Q{Should have gotten an Undefined Namespace error} ) { - doc1 = Document.new("<r><p><n:c/></p></r>") + Document.new("<r><p><n:c/></p></r>") } doc2 = Document.new("<r xmlns:n='1'><p><n:c/></p></r>") es = XPath.match(doc2, '//c') @@ -916,7 +889,7 @@ EOL end def test_oses_with_bad_EOLs - d = Document.new("\n\n\n<?xml version='1.0'?>\n\n\n<a/>\n\n") + Document.new("\n\n\n<?xml version='1.0'?>\n\n\n<a/>\n\n") end # Contributed (with patch to fix bug) by Kouhei @@ -955,25 +928,25 @@ EOL end def test_accents - docs = [ + docs = [ %Q{<?xml version="1.0" encoding="ISO-8859-1"?> <gnuPod> <files> <file id="57" artist="Coralie Cl\357\277\275ent" /> </files> -</gnuPod>}, +</gnuPod>}, '<?xml version="1.0" encoding="ISO-8859-1"?> <gnuPod> <files> <file id="71" album="Astrakan Caf" /> </files> -</gnuPod>', +</gnuPod>', %Q{<?xml version="1.0" encoding="ISO-8859-1"?> <gnuPod> <files> <file id="71" album="Astrakan Caf\357\277\275eria" /> </files> -</gnuPod>}, +</gnuPod>}, %Q{<?xml version="1.0" encoding="ISO-8859-1"?> <gnuPod> <files> @@ -1024,7 +997,6 @@ EOL document.write(s) end - def test_write_cdata src = "<a>A</a>" doc = REXML::Document.new( src ) @@ -1045,15 +1017,15 @@ EOL <x:b x:n="foo"/> </a> EOL - d = REXML::Document.new( source ) + d = Document.new( source ) assert_equal( 'foo', REXML::XPath.first(d.root, "//x:b/@x:n").value ) assert_equal( nil, REXML::XPath.first(d.root, "//x:b/@x:n", {})) end def test_null_element_name - a = REXML::Document.new + a = REXML::Document.new assert_raise( RuntimeError ) { - a.add_element( nil ) + a.add_element( nil ) } end @@ -1095,22 +1067,22 @@ EOL # Ticket #44 t = REXML::Text.new( "&", false, nil, true ) assert_equal( "&", t.to_s ) - + t = REXML::Text.new("&", false, false) assert_equal( "&amp;", t.to_s ) end def test_to_xpath - doc = REXML::Document.new( %q{<tag1> - <tag2 name="tag2"/> - <tag2 name="tag2"/> - </tag1>}) + doc = REXML::Document.new( %q{<tag1> + <tag2 name="tag2"/> + <tag2 name="tag2"/> + </tag1>}) names = %w{ /tag1/tag2[1] /tag1/tag2[2] } - doc.root.elements.each_with_index {|el, i| + doc.root.elements.each_with_index {|el, i| assert_equal( names[i], el.xpath ) - } + } end - + def test_transitive doc = REXML::Document.new( "<a/>") s = "" @@ -1181,19 +1153,19 @@ EOL doc = REXML::Document.new doc << REXML::XMLDecl.default doc << REXML::Element.new("a") - + str = "" doc.write(str) - + assert_equal("<a/>", str) doc = REXML::Document.new doc << REXML::XMLDecl.new("1.0", "UTF-8") doc << REXML::Element.new("a") - + str = "" doc.write(str) - + assert_equal("<?xml version='1.0' encoding='UTF-8'?><a/>", str) end @@ -1212,7 +1184,7 @@ EOL def test_ticket_52 source = "<!-- this is a single line comment -->" - d = REXML::Document.new(source) + d = REXML::Document.new(source) d.write(k="") assert_equal( source, k ) @@ -1233,17 +1205,17 @@ EOL def test_ticket_21 src = "<foo bar=value/>" assert_raise( ParseException, "invalid XML should be caught" ) { - d = REXML::Document.new(src) + Document.new(src) } begin - d = REXML::Document.new(src) + Document.new(src) rescue assert_match( /missing attribute quote/, $!.message ) end end def test_ticket_63 - d = REXML::Document.new(File.new(fixture_path("t63-1.xml"))) + Document.new(File.new(fixture_path("t63-1.xml"))) end def test_ticket_75 @@ -1256,7 +1228,7 @@ EOL #- rexml sanity check (bugs in ruby 1.8.4, ruby 1.8.6) xmldoc = Document.new("<test/>") xmldoc << XMLDecl.new(XMLDecl::DEFAULT_VERSION, "UTF-8") - content = ['61c3a927223c3e26'].pack("H*") + content = ['61c3a927223c3e26'].pack("H*") content.force_encoding('UTF-8') if content.respond_to?(:force_encoding) #- is some UTF-8 text but just to make sure my editor won't magically convert.. xmldoc.root.add_attribute('attr', content) @@ -1272,14 +1244,14 @@ EOL assert_equal( sanity1, sanity2 ) end - + def test_ticket_88 doc = REXML::Document.new("<?xml version=\"1.0\" encoding=\"shift_jis\"?>") - assert_equal("<?xml version='1.0' encoding='Shift_JIS'?>", doc.to_s) + assert_equal("<?xml version='1.0' encoding='SHIFT_JIS'?>", doc.to_s) doc = REXML::Document.new("<?xml version = \"1.0\" encoding = \"shift_jis\"?>") - assert_equal("<?xml version='1.0' encoding='Shift_JIS'?>", doc.to_s) + assert_equal("<?xml version='1.0' encoding='SHIFT_JIS'?>", doc.to_s) end - + def test_ticket_85 xml = <<ENDXML <foo> @@ -1295,8 +1267,6 @@ ENDXML </bar> </foo>" - zml = "<foo><bar><bob name='jimmy'/></bar></foo>" - # The pretty printer ignores all whitespace, anyway so output1 == output2 f = REXML::Formatters::Pretty.new( 2 ) d = Document.new( xml, :ignore_whitespace_nodes=>:all ) @@ -1311,7 +1281,7 @@ ENDXML # The base case. d = Document.new(yml) f.write( d, output3="" ) - + assert_equal( output3.strip, output2.strip ) d = Document.new(yml) @@ -1355,10 +1325,10 @@ ENDXML end def test_ticket_14 - # Per .2.5 Node Tests of XPath spec - assert_raise( REXML::UndefinedNamespaceException, + # Per .2.5 Node Tests of XPath spec + assert_raise( REXML::UndefinedNamespaceException, %Q{Should have gotten an Undefined Namespace error} ) { - d = Document.new("<a><n:b/></a>") + Document.new("<a><n:b/></a>") } end @@ -1395,7 +1365,7 @@ ENDXML doc.add_element(bean_element) REXML::Formatters::Pretty.new(3).write( doc, out = "" ) - + assert_equal "<bean>\n <prop key='filter'>\n (&#38;(|(memberof=CN=somegroupabcdefgh,OU=OUsucks,DC=hookemhorns,DC=com)(mail=*someco.com))(acct=%u)(!(extraparameter:2.2.222.222222.2.2.222:=2)))\n </prop>\n</bean>", out end diff --git a/test/rexml/test_encoding.rb b/test/rexml/test_encoding.rb index e1f9296821..e359914b36 100644 --- a/test/rexml/test_encoding.rb +++ b/test/rexml/test_encoding.rb @@ -18,7 +18,7 @@ class EncodingTester < Test::Unit::TestCase def test_encoded_in_encoded_out doc = Document.new( @encoded ) doc.write( out="" ) - out.force_encoding('binary') if out.respond_to? :force_encoding + out.force_encoding(::Encoding::ASCII_8BIT) assert_equal( @encoded, out ) end @@ -26,12 +26,12 @@ class EncodingTester < Test::Unit::TestCase def test_encoded_in_change_out doc = Document.new( @encoded ) doc.xml_decl.encoding = "UTF-8" - assert_equal( ::Encoding::UTF_8, doc.encoding ) + assert_equal("UTF-8", doc.encoding) REXML::Formatters::Default.new.write( doc.root, out="" ) - out.force_encoding('binary') if out.respond_to? :force_encoding + out.force_encoding(::Encoding::ASCII_8BIT) assert_equal( @not_encoded, out ) char = XPath.first( doc, "/a/b/text()" ).to_s - char.force_encoding('binary') if char.respond_to? :force_encoding + char.force_encoding(::Encoding::ASCII_8BIT) assert_equal( "ĉ", char ) end @@ -39,7 +39,7 @@ class EncodingTester < Test::Unit::TestCase def test_encoded_in_different_out doc = Document.new( @encoded ) REXML::Formatters::Default.new.write( doc.root, Output.new( out="", "UTF-8" ) ) - out.force_encoding('binary') if out.respond_to? :force_encoding + out.force_encoding(::Encoding::ASCII_8BIT) assert_equal( @not_encoded, out ) end @@ -47,9 +47,9 @@ class EncodingTester < Test::Unit::TestCase def test_in_change_out doc = Document.new( @not_encoded ) doc.xml_decl.encoding = "ISO-8859-3" - assert_equal( ::Encoding::ISO_8859_3, doc.encoding ) + assert_equal("ISO-8859-3", doc.encoding) doc.write( out="" ) - out.force_encoding('binary') if out.respond_to? :force_encoding + out.force_encoding(::Encoding::ASCII_8BIT) assert_equal( @encoded, out ) end @@ -57,7 +57,7 @@ class EncodingTester < Test::Unit::TestCase def test_in_different_out doc = Document.new( @not_encoded ) doc.write( Output.new( out="", "ISO-8859-3" ) ) - out.force_encoding('binary') if out.respond_to? :force_encoding + out.force_encoding(::Encoding::ASCII_8BIT) assert_equal( @encoded, out ) end @@ -66,10 +66,10 @@ class EncodingTester < Test::Unit::TestCase def test_in_different_access doc = Document.new <<-EOL <?xml version='1.0' encoding='ISO-8859-1'?> - <a a="ÿ">ÿ</a> + <a a="\xFF">\xFF</a> EOL expect = "\303\277" - expect.force_encoding('UTF-8') if expect.respond_to? :force_encoding + expect.force_encoding(::Encoding::UTF_8) assert_equal( expect, doc.elements['a'].attributes['a'] ) assert_equal( expect, doc.elements['a'].text ) end @@ -86,7 +86,7 @@ class EncodingTester < Test::Unit::TestCase def test_ticket_110 utf16 = REXML::Document.new(File.new(fixture_path("ticket_110_utf16.xml"))) - assert_equal( ::Encoding::UTF_16BE, utf16.encoding ) + assert_equal(utf16.encoding, "UTF-16") assert( utf16[0].kind_of?(REXML::XMLDecl)) end end |