File: tc_xml_html_parser.rb

package info (click to toggle)
libxml-ruby 0.5.2.0-3%2Blenny1
  • links: PTS, VCS
  • area: main
  • in suites: lenny
  • size: 652 kB
  • ctags: 875
  • sloc: ansic: 5,874; ruby: 1,524; xml: 144; makefile: 9
file content (64 lines) | stat: -rw-r--r-- 1,717 bytes parent folder | download
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
# $Id: tc_xml_html_parser.rb 182 2007-09-12 14:47:09Z danj $
require "libxml_test"
require 'test/unit'

class TC_XML_HTMLParser < Test::Unit::TestCase
  def setup()
    @xp = XML::HTMLParser.new()
    assert_not_nil(@xp)
    str = '<html><head><meta name=keywords content=nasty></head><body>Hello<br>World</html>'
    @xp.string = str
    assert_equal(str, @xp.string)
  end

  def teardown()
    @xp = nil
  end

  def test_libxml_html_parser_parse()
    doc = @xp.parse

    assert_instance_of XML::Document, doc
    
    root = doc.root
    assert_instance_of XML::Node, root
    assert_equal 'html', root.name
    
    head = root.child
    assert_instance_of XML::Node, head
    assert_equal 'head', head.name
    
    meta = head.child
    assert_instance_of XML::Node, meta
    assert_equal 'meta', meta.name
    assert_equal 'keywords', meta[:name]
    assert_equal 'nasty', meta[:content]

    body = head.next
    assert_instance_of XML::Node, body
    assert_equal 'body', body.name
    
    hello = body.child
    # It appears that some versions of libxml2 add a layer of <p>
    # cant figure our why or how, so this skips it if there
    hello = hello.child if hello.name == "p"

    assert_instance_of XML::Node, hello
    assert_equal 'Hello', hello.content
    
    br = hello.next
    assert_instance_of XML::Node, br
    assert_equal 'br', br.name
    
    world = br.next
    assert_instance_of XML::Node, world
    assert_equal 'World', world.content
  end

  def test_libxml_html_parser_parser_context()
    doc = @xp.parse
    assert_instance_of(XML::Document, doc)
    assert_instance_of(XML::Parser::Context, @xp.parser_context)
	assert @xp.parser_context.html?
  end
end # TC_XML_HTMLParser