You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
102 lines
3.2 KiB
Ruby
102 lines
3.2 KiB
Ruby
require 'test/unit'
|
|
require 'htree/doc'
|
|
require 'htree/elem'
|
|
require 'htree/equality'
|
|
require 'htree/traverse'
|
|
|
|
class TestElemNew < Test::Unit::TestCase
|
|
def test_empty
|
|
e = HTree::Elem.new('a')
|
|
assert_equal('a', e.qualified_name)
|
|
assert_equal({}, e.attributes)
|
|
assert_equal(HTree::DefaultContext, e.instance_variable_get(:@stag).inherited_context)
|
|
assert_equal([], e.children)
|
|
assert_equal(true, e.empty_element?)
|
|
assert_nil(e.instance_variable_get(:@etag))
|
|
end
|
|
|
|
def test_empty_array
|
|
e = HTree::Elem.new('a', [])
|
|
assert_equal('a', e.qualified_name)
|
|
assert_equal({}, e.attributes)
|
|
assert_equal(HTree::DefaultContext, e.instance_variable_get(:@stag).inherited_context)
|
|
assert_equal([], e.children)
|
|
assert_equal(false, e.empty_element?)
|
|
assert_equal(nil, e.instance_variable_get(:@etag))
|
|
end
|
|
|
|
def test_empty_attr
|
|
e = HTree::Elem.new('a', {'href'=>'xxx'})
|
|
assert_equal('a', e.qualified_name)
|
|
assert_equal({HTree::Name.parse_attribute_name('href', HTree::DefaultContext)=>HTree::Text.new('xxx')}, e.attributes)
|
|
assert_equal(HTree::DefaultContext, e.instance_variable_get(:@stag).inherited_context)
|
|
assert_equal([], e.children)
|
|
assert_equal(true, e.empty_element?)
|
|
assert_equal(nil, e.instance_variable_get(:@etag))
|
|
end
|
|
|
|
def test_node
|
|
t = HTree::Text.new('t')
|
|
e = HTree::Elem.new('a', t)
|
|
assert_equal({}, e.attributes)
|
|
assert_equal([t], e.children)
|
|
end
|
|
|
|
def test_hash
|
|
t = HTree::Text.new('t')
|
|
e = HTree::Elem.new('a', {'b' => t})
|
|
assert_equal([['b', t]], e.attributes.map {|n,v| [n.universal_name, v] })
|
|
assert_equal([], e.children)
|
|
end
|
|
|
|
def test_string
|
|
t = HTree::Text.new('s')
|
|
e = HTree::Elem.new('a', "s")
|
|
assert_equal({}, e.attributes)
|
|
assert_equal([t], e.children)
|
|
end
|
|
|
|
def test_interleave
|
|
t = HTree::Text.new('t')
|
|
e = HTree::Elem.new('a', t, {'b' => t}, t, {'c' => 'd'}, t)
|
|
assert_equal([['b', t], ['c', HTree::Text.new('d')]],
|
|
e.attributes.map {|n,v| [n.universal_name, v] }.sort)
|
|
assert_equal([t, t, t], e.children)
|
|
end
|
|
|
|
def test_nest
|
|
t = HTree::Text.new('t')
|
|
b = HTree::BogusETag.new('a')
|
|
x = HTree::Elem.new('e', HTree::XMLDecl.new('1.0'))
|
|
d = HTree::Elem.new('e', HTree::DocType.new('html'))
|
|
e = HTree::Elem.new('a', [t, t, t, b, x, d])
|
|
assert_equal({}, e.attributes)
|
|
assert_equal([t, t, t, b, x, d], e.children)
|
|
end
|
|
|
|
def test_err
|
|
assert_raises(TypeError) { HTree::Elem.new('e', HTree::STag.new('a')) }
|
|
assert_raises(TypeError) { HTree::Elem.new('e', HTree::ETag.new('a')) }
|
|
end
|
|
|
|
def test_context
|
|
context = HTree::DefaultContext.subst_namespaces({'p'=>'u'})
|
|
elem = HTree::Elem.new('p:n', {'p:a'=>'t'}, context)
|
|
assert_equal('{u}n', elem.name)
|
|
assert_equal('t', elem.get_attr('{u}a'))
|
|
|
|
assert_same(context, elem.instance_variable_get(:@stag).inherited_context)
|
|
assert_raises(ArgumentError) { HTree::Elem.new('e', context, context) }
|
|
end
|
|
|
|
def test_hash_in_array
|
|
attrs = [{'a'=>'1'}, {'a'=>'2'}]
|
|
assert_raises(TypeError) { HTree::Elem.new('e', attrs) }
|
|
attrs.pop
|
|
assert_raises(TypeError) { HTree::Elem.new('e', attrs) }
|
|
attrs.pop
|
|
assert_equal([], attrs)
|
|
assert_equal(false, HTree::Elem.new('e', attrs).empty_element?)
|
|
end
|
|
end
|