1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
|
# frozen_string_literal: true
require "helper"
module Nokogiri
module XML
class TestElementDecl < Nokogiri::TestCase
def setup
super
@xml = Nokogiri::XML(<<~eoxml)
<?xml version="1.0"?><?TEST-STYLE PIDATA?>
<!DOCTYPE staff SYSTEM "staff.dtd" [
<!ELEMENT br EMPTY>
<!ELEMENT div1 (head, (p | list | note)*, div2*)>
<!ELEMENT my:way EMPTY>
<!ATTLIST br width CDATA "0">
<!ATTLIST br height CDATA "0">
]>
<root/>
eoxml
@elements = @xml.internal_subset.children.find_all do |x|
x.type == 15
end
end
def test_inspect
e = @elements.first
assert_equal(
"#<#{e.class.name}:#{format("0x%x", e.object_id)} #{e.to_s.inspect}>",
e.inspect
)
end
def test_prefix
assert_nil(@elements[1].prefix)
assert_equal("my", @elements[2].prefix)
end
def test_line
assert_raises(NoMethodError) do
@elements.first.line
end
end
def test_namespace
assert_raises(NoMethodError) do
@elements.first.namespace
end
end
def test_namespace_definitions
assert_raises(NoMethodError) do
@elements.first.namespace_definitions
end
end
def test_element_type
assert_equal(1, @elements.first.element_type)
end
def test_type
assert_equal(15, @elements.first.type)
end
def test_class
assert_instance_of(Nokogiri::XML::ElementDecl, @elements.first)
end
def test_attributes
assert_equal(2, @elements.first.attribute_nodes.length)
assert_equal("width", @elements.first.attribute_nodes.first.name)
end
end
end
end
|