File: test-namespace.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 (147 lines) | stat: -rw-r--r-- 6,118 bytes parent folder | download | duplicates (7)
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
134
135
136
137
138
139
140
141
142
143
144
145
146
147
require 'test/unit'
require 'htree/tag'

class TestNamespace < Test::Unit::TestCase
  def assert_equal_exact(expected, actual, message=nil)
    full_message = build_message(message, <<EOT, expected, actual)
<?> expected but was
<?>.
EOT
    assert_block(full_message) { expected.equal_exact? actual }
  end

  # <ppp:nnn xmlns:ppp="uuu">
  def test_prefixed
    stag = HTree::STag.new("ppp:nnn",
      [["xmlns:ppp", "uuu"], ["a", "x"], ["q:b", "y"], ["pp{uu}c", "z"]],
      HTree::DefaultContext.subst_namespaces({"q"=>"u"}))
    assert_equal("ppp:nnn", stag.element_name.qualified_name)
    assert_equal("{uuu}nnn", stag.element_name.universal_name)
    assert_equal("nnn", stag.element_name.local_name)
    assert_equal("uuu", stag.element_name.namespace_uri)
    assert_equal("ppp", stag.element_name.namespace_prefix)

    nsattrs = []; stag.each_namespace_attribute {|p, u| nsattrs << [p, u] }
    assert_equal(1, nsattrs.length)
    assert_equal(["ppp", "uuu"], nsattrs.shift)

    attrs = []; stag.each_attribute {|n,t| attrs << [n.namespace_uri,n.namespace_prefix,n.local_name,t.to_s] }
    assert_equal(3, attrs.length)
    assert_equal(['', nil, "a", "x"], attrs.shift)
    assert_equal(["u", "q", "b", "y"], attrs.shift)
    assert_equal(["uu", "pp", "c", "z"], attrs.shift)
  end

  # <nnn xmlns="uuu">
  def test_default_ns
    stag = HTree::STag.new("nnn",
      [["xmlns", "uuu"],
      ["a", "x"], ["q:b", "y"], ["pp{uu}c", "z"]],
      HTree::DefaultContext.subst_namespaces({"q"=>"u"}))

    assert_equal("nnn", stag.element_name.qualified_name)
    assert_equal("{uuu}nnn", stag.element_name.universal_name)
    assert_equal("nnn", stag.element_name.local_name)
    assert_equal("uuu", stag.element_name.namespace_uri)
    assert_equal(nil, stag.element_name.namespace_prefix)

    nsattrs = []; stag.each_namespace_attribute {|p, u| nsattrs << [p, u] }
    assert_equal(1, nsattrs.length)
    assert_equal([nil, "uuu"], nsattrs.shift)

    attrs = []; stag.each_attribute {|n,t| attrs << [n.namespace_uri,n.namespace_prefix,n.local_name,t.to_s] }
    assert_equal(3, attrs.length)
    assert_equal(['', nil, "a", "x"], attrs.shift)
    assert_equal(["u", "q", "b", "y"], attrs.shift)
    assert_equal(["uu", "pp", "c", "z"], attrs.shift)
  end

  # <nnn xmlns="">
  def test_no_default_ns
    [{"q"=>"u"}, {nil=>"uu", "q"=>"u"}].each {|inh|
      stag = HTree::STag.new("nnn",
        [["xmlns", ""], ["a", "x"], ["q:b", "y"], ["pp{uu}c", "z"]],
        HTree::DefaultContext.subst_namespaces(inh))
      assert_equal("nnn", stag.element_name.qualified_name)
      assert_equal("nnn", stag.element_name.universal_name)
      assert_equal("nnn", stag.element_name.local_name)
      assert_equal('', stag.element_name.namespace_uri)
      assert_equal(nil, stag.element_name.namespace_prefix)

      nsattrs = []; stag.each_namespace_attribute {|p, u| nsattrs << [p, u] }
      assert_equal(1, nsattrs.length)
      assert_equal([nil, ""], nsattrs.shift)

      attrs = []; stag.each_attribute {|n,t| attrs << [n.namespace_uri,n.namespace_prefix,n.local_name,t.to_s] }
      assert_equal(3, attrs.length)
      assert_equal(['', nil, "a", "x"], attrs.shift)
      assert_equal(["u", "q", "b", "y"], attrs.shift)
      assert_equal(["uu", "pp", "c", "z"], attrs.shift)
    }
  end

  # <nnn>
  def test_no_ns
    stag = HTree::STag.new("nnn",
      [["a", "x"], ["q:b", "y"], ["pp{uu}c", "z"]],
      HTree::DefaultContext.subst_namespaces({"q"=>"u"}))

    assert_equal("nnn", stag.element_name.qualified_name)
    assert_equal("nnn", stag.element_name.universal_name)
    assert_equal("nnn", stag.element_name.local_name)
    assert_equal('', stag.element_name.namespace_uri)
    assert_equal(nil, stag.element_name.namespace_prefix)

    nsattrs = []; stag.each_namespace_attribute {|p, u| nsattrs << [p, u] }
    assert_equal(0, nsattrs.length)

    attrs = []; stag.each_attribute {|n,t| attrs << [n.namespace_uri,n.namespace_prefix,n.local_name,t.to_s] }
    assert_equal(3, attrs.length)
    assert_equal(['', nil, "a", "x"], attrs.shift)
    assert_equal(["u", "q", "b", "y"], attrs.shift)
    assert_equal(["uu", "pp", "c", "z"], attrs.shift)
  end

  # internally allocated element without prefix
  def test_universal_name_to_be_default_namespace
    stag = HTree::STag.new("{uuu}nnn",
      [["a", "x"], ["q:b", "y"], ["pp{uu}c", "z"]],
      HTree::DefaultContext.subst_namespaces({"q"=>"u"}))
    assert_equal("nnn", stag.element_name.qualified_name)
    assert_equal("{uuu}nnn", stag.element_name.universal_name)
    assert_equal("nnn", stag.element_name.local_name)
    assert_equal("uuu", stag.element_name.namespace_uri)
    assert_equal(nil, stag.element_name.namespace_prefix)

    nsattrs = []; stag.each_namespace_attribute {|p, u| nsattrs << [p, u] }
    assert_equal(0, nsattrs.length)

    attrs = []; stag.each_attribute {|n,t| attrs << [n.namespace_uri,n.namespace_prefix,n.local_name,t.to_s] }
    assert_equal(3, attrs.length)
    assert_equal(['', nil, "a", "x"], attrs.shift)
    assert_equal(["u", "q", "b", "y"], attrs.shift)
    assert_equal(["uu", "pp", "c", "z"], attrs.shift)
  end

  def test_prefixed_universal_name
    stag = HTree::STag.new("ppp{uuu}nnn",
      [["a", "x"], ["q:b", "y"], ["pp{uu}c", "z"], ["q{uu}d", "w"]],
      HTree::DefaultContext.subst_namespaces({"q"=>"u"}))
    assert_equal("ppp:nnn", stag.element_name.qualified_name)
    assert_equal("{uuu}nnn", stag.element_name.universal_name)
    assert_equal("nnn", stag.element_name.local_name)
    assert_equal("uuu", stag.element_name.namespace_uri)
    assert_equal("ppp", stag.element_name.namespace_prefix)

    nsattrs = []; stag.each_namespace_attribute {|p, u| nsattrs << [p, u] }
    assert_equal(0, nsattrs.length)

    attrs = []; stag.each_attribute {|n,t| attrs << [n.namespace_uri,n.namespace_prefix,n.local_name,t.to_s] }
    assert_equal(4, attrs.length)
    assert_equal(['', nil, "a", "x"], attrs.shift)
    assert_equal(["u", "q", "b", "y"], attrs.shift)
    assert_equal(["uu", "pp", "c", "z"], attrs.shift)
    assert_equal(["uu", "q", "d", "w"], attrs.shift)
  end

end