# frozen_string_literal: false require_relative "rexml_test_utils" module REXMLTests class TestDocTypeAccessor < Test::Unit::TestCase def setup @sysid = "urn:x-test:sysid1" @notation_id1 = "urn:x-test:notation1" @notation_id2 = "urn:x-test:notation2" xml_system = <<-XML ]> XML @doc_type_system = REXML::Document.new(xml_system).doctype @pubid = "TEST_ID" xml_public = <<-XML XML @doc_type_public = REXML::Document.new(xml_public).doctype xml_public_system = <<-XML XML @doc_type_public_system = REXML::Document.new(xml_public_system).doctype end def test_public assert_equal([ nil, @pubid, @pubid, ], [ @doc_type_system.public, @doc_type_public.public, @doc_type_public_system.public, ]) end def test_to_s assert_equal("", @doc_type_public_system.to_s) end def test_to_s_apostrophe @doc_type_public_system.parent.context[:prologue_quote] = :apostrophe assert_equal("", @doc_type_public_system.to_s) end def test_system assert_equal([ @sysid, nil, @sysid, ], [ @doc_type_system.system, @doc_type_public.system, @doc_type_public_system.system, ]) end def test_notation assert_equal([ @notation_id1, @notation_id2, ], [ @doc_type_system.notation("n1").system, @doc_type_system.notation("n2").system, ]) end def test_notations notations = @doc_type_system.notations assert_equal([ @notation_id1, @notation_id2, ], notations.collect(&:system)) end end class TestNotationDeclPublic < Test::Unit::TestCase def setup @name = "vrml" @id = "VRML 1.0" @uri = "http://www.web3d.org/" end def test_to_s assert_equal("", decl(@id, nil).to_s) end def test_to_s_with_uri assert_equal("", decl(@id, @uri).to_s) end def test_to_s_apostrophe document = REXML::Document.new(<<-XML) XML document.context[:prologue_quote] = :apostrophe notation = document.doctype.notations[0] assert_equal("", notation.to_s) end private def decl(id, uri) REXML::NotationDecl.new(@name, "PUBLIC", id, uri) end end class TestNotationDeclSystem < Test::Unit::TestCase def setup @name = "gif" @id = "gif viewer" end def test_to_s assert_equal("", decl(@id).to_s) end def test_to_s_apostrophe document = REXML::Document.new(<<-XML) XML document.context[:prologue_quote] = :apostrophe notation = document.doctype.notations[0] assert_equal("", notation.to_s) end private def decl(id) REXML::NotationDecl.new(@name, "SYSTEM", id, nil) end end end