# File tests/writertester.rb, line 175 def test_creating_document doc = NQXML::Document.new() prologEntities = [ @rsrc.xmlDecl, @rsrc.newlineTok, @rsrc.piWithArgs, @rsrc.newlineTok, @rsrc.piNoArgs, @rsrc.newlineTok, @rsrc.doctype, @rsrc.newlineTok, @rsrc.comment, @rsrc.newlineTok ] rootChildren = [ @rsrc.textDataWithSub, @rsrc.simpleTagStart, @rsrc.newlineTok, @rsrc.innerTagStart, @rsrc.cdata, @rsrc.newlineTok, @rsrc.pTagStart, @rsrc.newlineTok ] paragraphChildren = [ @rsrc.textText, @rsrc.bTagStart, # bold text here @rsrc.moreTextText ] # @rsrc.boldText inside bold tag # Add prolog entities to document. prologEntities.each { | entity | doc.addToProlog(entity) } # Set root node. doc.setRoot(@rsrc.outerStart) assert_equal(@rsrc.outerStart, doc.rootNode.entity) assert_nil(doc.rootNode.parent) # Add children of root node. rootChildren.each { | entity | doc.rootNode.addChild(entity) } assert_equal(rootChildren.length, doc.rootNode.children.length) # Find simpleTag and add child. node = doc.rootNode.children.detect { | n | n.entity.instance_of?(NQXML::Tag) && n.entity.name == 'simpleTag' } assert_not_nil(node) node.addChild(@rsrc.simpleTextData) assert_equal(1, node.children.length) # Find paragraph node and add children. node = doc.rootNode.children.detect { | n | n.entity.instance_of?(NQXML::Tag) && n.entity.name == 'p' } assert_not_nil(node) paragraphChildren.each { | entity | node.addChild(entity) } assert_equal(paragraphChildren.length, node.children.length) # Find bold node and add text child. node = node.children.detect { | n | n.entity.instance_of?(NQXML::Tag) && n.entity.name == 'b' } assert_not_nil(node) node.addChild(@rsrc.boldText) # Now write this document and compare it to writing out # the document created by parsing @rsrc.xml. io = nil begin io = Tempfile.new('writer_document') writer = NQXML::Writer.new(io) writer.writeDocument(doc) io.open() # closes, then opens for reading compare_to_rsrc_xml(io, false) ensure io.close(true) if io end end