require File.expand_path(File.join(File.dirname(__FILE__), '..', "helper"))
module Nokogiri
module XML
class TestDocumentFragment < Nokogiri::TestCase
def setup
super
@xml = Nokogiri::XML.parse(File.read(XML_FILE), XML_FILE)
end
def test_new
fragment = Nokogiri::XML::DocumentFragment.new(@xml)
end
def test_fragment_should_have_document
fragment = Nokogiri::XML::DocumentFragment.new(@xml)
assert_equal @xml, fragment.document
end
def test_name
fragment = Nokogiri::XML::DocumentFragment.new(@xml)
assert_equal '#document-fragment', fragment.name
end
def test_static_method
fragment = Nokogiri::XML::DocumentFragment.parse("
a
")
assert_instance_of Nokogiri::XML::DocumentFragment, fragment
end
def test_many_fragments
100.times { Nokogiri::XML::DocumentFragment.new(@xml) }
end
def test_subclass
klass = Class.new(Nokogiri::XML::DocumentFragment)
fragment = klass.new(@xml, "a
")
assert_instance_of klass, fragment
end
def test_xml_fragment
fragment = Nokogiri::XML.fragment("a
")
assert_equal "a
", fragment.to_s
end
def test_xml_fragment_has_multiple_toplevel_children
# TODO: this is lame. xml fragment() should support multiple top-level children
doc = "b
e
"
fragment = Nokogiri::XML::Document.new.fragment(doc)
assert_equal "b
", fragment.to_s
end
def test_xml_fragment_has_outer_text
# this test is descriptive, not prescriptive.
doc = "ab
"
fragment = Nokogiri::XML::Document.new.fragment(doc)
assert_equal "", fragment.to_s
doc = "b
c"
fragment = Nokogiri::XML::Document.new.fragment(doc)
assert_equal "b
", fragment.to_s
end
def test_xml_fragment_case_sensitivity
doc = "b"
fragment = Nokogiri::XML::Document.new.fragment(doc)
assert_equal "b", fragment.to_s
end
def test_xml_fragment_with_leading_whitespace
doc = " b
"
fragment = Nokogiri::XML::Document.new.fragment(doc)
assert_equal "b
", fragment.to_s
end
end
end
end