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
|