File: test-output.rb

package info (click to toggle)
ruby-htree 0.8%2Bdfsg-6
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 520 kB
  • sloc: ruby: 5,928; makefile: 23
file content (133 lines) | stat: -rw-r--r-- 4,245 bytes parent folder | download | duplicates (6)
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
require 'test/unit'
require 'htree'

class TestOutput < Test::Unit::TestCase
  def gen(t, meth=:output, *rest)
    encoder = HTree::Encoder.new('US-ASCII', 'US-ASCII')
    t.__send__(meth, *(rest + [encoder, HTree::DefaultContext]))
    encoder.finish
  end

  def test_text
    assert_equal('a&amp;&lt;&gt;"b', gen(HTree::Text.new('a&<>"b')))

    assert_equal("abc&amp;def", gen(HTree::Text.new("abc&def")))
    assert_equal('"\'&amp;', gen(HTree::Text.new('"\'&')))
    assert_equal('"\'&lt;&amp;&gt;', gen(HTree::Text.new('"\'<&>')))
  end

  def test_text_attvalue
    assert_equal('"a&amp;&lt;&gt;&quot;b"', gen(HTree::Text.new('a&<>"b'), :output_attvalue))

    assert_equal('"abc"', gen(HTree::Text.new("abc"), :output_attvalue))
    assert_equal('"&quot;"', gen(HTree::Text.new('"'), :output_attvalue))
  end

  def test_name
    assert_equal('abc', gen(HTree::Name.parse_element_name('abc', HTree::DefaultContext)))
    assert_equal('n', gen(HTree::Name.new(nil, 'u', 'n')))
    assert_equal('p:n', gen(HTree::Name.new('p', 'u', 'n')))
    assert_equal('n', gen(HTree::Name.new(nil, '', 'n')))
    assert_equal('xmlns', gen(HTree::Name.new('xmlns', nil, nil)))
    assert_equal('xmlns:n', gen(HTree::Name.new('xmlns', nil, 'n')))
  end

  def test_name_attribute
    assert_equal('abc="a&amp;&lt;&gt;&quot;b"',
      gen(HTree::Name.parse_element_name('abc', HTree::DefaultContext),
          :output_attribute,
          HTree::Text.new('a&<>"b')))
  end

  def test_doc
    t = HTree::Doc.new(HTree::Elem.new('a'), HTree::Elem.new('b'))
    assert_equal("<a\n/><b\n/>", gen(t))
  end

  def test_elem
    t = HTree::Elem.new('a', [])
    assert_equal("<a\n></a\n>", gen(t))

    assert_equal("<b\n/>",
      gen(HTree::Elem.new!(HTree::STag.new('b'))))
    assert_equal("<b\n></b\n>",
      gen(HTree::Elem.new!(HTree::STag.new('b'), [])))
    assert_equal("<a\n><b\n/><c\n/><d\n/></a\n>",
      gen(HTree::Elem.new!(HTree::STag.new('a'), [
            HTree::Elem.new!(HTree::STag.new('b')),
            HTree::Elem.new!(HTree::STag.new('c')),
            HTree::Elem.new!(HTree::STag.new('d'))
            ])))
  end

  def test_elem_empty
    t = HTree::Elem.new('a')
    assert_equal("<a\n/>", gen(t))
  end

  def test_stag
    assert_equal("<name\n>",
      gen(HTree::STag.new("name"), :output_stag))
    assert_equal("<name\n/>",
      gen(HTree::STag.new("name"), :output_emptytag))
    assert_equal("</name\n>",
      gen(HTree::STag.new("name"), :output_etag))
      
    assert_equal("<name a=\"b\"\n/>",
      gen(HTree::STag.new("name", [["a", "b"]]), :output_emptytag))
    assert_equal("<name a=\"&lt;&quot;\'&gt;\"\n/>",
      gen(HTree::STag.new("name", [['a', '<"\'>']]), :output_emptytag))
      
    assert_equal("<ppp:nnn xmlns=\"uuu&quot;b\"\n/>",
      gen(HTree::STag.new("ppp:nnn", [["xmlns", "uuu\"b"]]), :output_emptytag))
  end

  def test_xmldecl
    t = HTree::XMLDecl.new('1.0', 'US-ASCII')
    assert_equal('', gen(t))
    assert_equal('<?xml version="1.0" encoding="US-ASCII"?>',
      gen(t, :output_prolog_xmldecl))
  end

  def test_doctype
    t = HTree::DocType.new('html',
      '-//W3C//DTD HTML 4.01//EN',
      'http://www.w3.org/TR/html4/strict.dtd')
    assert_equal('<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">', gen(t))
  end

  def test_procins
    t = HTree::ProcIns.new('xml-stylesheet', 'type="text/xml" href="#style1"')
    assert_equal('<?xml-stylesheet type="text/xml" href="#style1"?>', gen(t))
    t = HTree::ProcIns.new('x', nil)
    assert_equal('<?x?>', gen(t))
  end

  def test_comment
    t = HTree::Comment.new('xxx')
    assert_equal('<!--xxx-->', gen(t))
  end

end

class TestHTMLOutput < Test::Unit::TestCase
  def test_top_xmlns
    assert_equal("<html\n>aaa</html\n>", HTree("<html>aaa").display_html(""))
  end

  def test_script
    assert_equal("<html\n><script\n>a < b</script\n></html\n>",
      HTree("<html><script>a < b").display_html(""))
  end

  def test_script_invalid_content
    assert_raise(ArgumentError) {
      HTree("<html><script>a </ b").display_html("")
    }
  end

  def test_br
    assert_equal("<html\n>a<br\n>b<br\n>c</html\n>",
      HTree("<html>a<br>b<br>c").display_html(""))
  end
end