1 require 'abstract_unit'
3 class NodeTest
< Test
::Unit::TestCase
6 def initialize(matched
, value
)
21 @node = HTML
::Node.new("parent")
22 @node.children
.concat
[MockNode
.new(false,1), MockNode
.new(true,"two"), MockNode
.new(false,:three)]
26 assert !
@node.match("foo")
34 assert_equal
"1twothree", @node.to_s
38 assert_equal
"two", @node.find('blah').to_s
42 s
= "<b foo='hello'' bar='baz'>"
43 assert_raise(RuntimeError
) { HTML
::Node.parse(nil,0,0,s
) }
46 def test_parse_relaxed
47 s
= "<b foo='hello'' bar='baz'>"
49 assert_nothing_raised
{ node
= HTML
::Node.parse(nil,0,0,s
,false) }
50 assert node
.attributes
.has_key
?("foo")
51 assert !node
.attributes
.has_key
?("bar")
54 def test_to_s_with_boolean_attrs
56 node
= HTML
::Node.parse(nil,0,0,s
)
57 assert node
.attributes
.has_key
?("foo")
58 assert node
.attributes
.has_key
?("bar")
59 assert
"<b foo bar>", node
.to_s
62 def test_parse_with_unclosed_tag
63 s
= "<span onmouseover='bang'"
65 assert_nothing_raised
{ node
= HTML
::Node.parse(nil,0,0,s
,false) }
66 assert node
.attributes
.has_key
?("onmouseover")
69 def test_parse_with_valid_cdata_section
70 s
= "<![CDATA
[<span
>contents
</span
>]]>"
72 assert_nothing_raised { node = HTML::Node.parse(nil,0,0,s,false) }
73 assert_kind_of HTML::CDATA, node
74 assert_equal '<span>contents</span>', node.content
77 def test_parse_strict_with_unterminated_cdata_section
78 s = "<!
[CDATA
[neverending
..."
79 assert_raise(RuntimeError) { HTML::Node.parse(nil,0,0,s) }
82 def test_parse_relaxed_with_unterminated_cdata_section
83 s = "<!
[CDATA
[neverending
..."
85 assert_nothing_raised { node = HTML::Node.parse(nil,0,0,s,false) }
86 assert_kind_of HTML::CDATA, node
87 assert_equal 'neverending...', node.content