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", "&lt;abc/&gt;") 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