require "test/unit"
require "xmlsimple"
module NodeToTextTests
def setup
@xmlin = XmlSimple.new
@element = REXML::Element.new("abc")
@text = REXML::Text.new("")
@attribute = REXML::Attribute.new("name", "")
@element.add_attribute(@attribute)
@element.add_text(@text)
end
def test_node_to_text_on_element
assert_equal "", @xmlin.send(:node_to_text, @element)
end
def test_node_to_text_on_text
assert_equal "", @xmlin.send(:node_to_text, @text)
end
def test_node_to_text_on_attribute
assert_equal "", @xmlin.send(:node_to_text, @attribute)
end
def test_node_to_text_on_doubly_normalized_attribute
@attribute = REXML::Attribute.new("name", "<abc/>")
assert_equal "<abc/>", @xmlin.send(:node_to_text, @attribute)
end
def test_node_to_text_on_nil
assert_equal nil, @xmlin.send(:node_to_text, nil)
end
end
module NodeToTextFix
def node_to_text(node, default = nil)
if node.instance_of?(REXML::Element)
node.texts.map{|t| t.value}.join('')
elsif node.instance_of?(REXML::Attribute)
node.value.nil? ? default : node.value.strip
elsif node.instance_of?(REXML::Text)
node.value.strip
else
default
end
end
end
class XmlSimpleNodeToTextBrokenTestCase < Test::Unit::TestCase
include NodeToTextTests
end
class XmlSimpleNodeToTextFixTestCase < Test::Unit::TestCase
include NodeToTextTests
def setup
super
@xmlin.extend NodeToTextFix
end
end