示例#1
0
    def testWhitespaceHandling(self):
        # We test using the Message node type.
        node = message.MessageNode()
        node.StartParsing(u'hello', None)
        node.HandleAttribute(u'name', u'bla')
        node.AppendContent(u" '''  two spaces  ")
        node.EndParsing()
        self.failUnless(node.GetCdata() == u'  two spaces')

        node = message.MessageNode()
        node.StartParsing(u'message', None)
        node.HandleAttribute(u'name', u'bla')
        node.AppendContent(u"  two spaces  '''  ")
        node.EndParsing()
        self.failUnless(node.GetCdata() == u'two spaces  ')
示例#2
0
    def testXmlFormatMixedContent(self):
        # Again test using the Message node type, because it is the only mixed
        # content node.
        node = message.MessageNode()
        node.StartParsing(u'message', None)
        node.HandleAttribute(u'name', u'name')
        node.AppendContent(u'Hello <young> ')

        ph = message.PhNode()
        ph.StartParsing(u'ph', None)
        ph.HandleAttribute(u'name', u'USERNAME')
        ph.AppendContent(u'$1')
        ex = message.ExNode()
        ex.StartParsing(u'ex', None)
        ex.AppendContent(u'Joi')
        ex.EndParsing()
        ph.AddChild(ex)
        ph.EndParsing()

        node.AddChild(ph)
        node.EndParsing()

        non_indented_xml = node.FormatXml()
        self.failUnless(
            non_indented_xml == u'<message name="name">\n  Hello '
            u'&lt;young&gt; <ph name="USERNAME">$1<ex>Joi</ex></ph>'
            u'\n</message>')

        indented_xml = node.FormatXml(u'  ')
        self.failUnless(
            indented_xml == u'  <message name="name">\n    Hello '
            u'&lt;young&gt; <ph name="USERNAME">$1<ex>Joi</ex></ph>'
            u'\n  </message>')
示例#3
0
 def testWhitespaceHandlingWithChildren(self):
     # We test using the Message node type.
     node = message.MessageNode()
     node.StartParsing(u'message', None)
     node.HandleAttribute(u'name', u'bla')
     node.AppendContent(u" '''  two spaces  ")
     node.AddChild(MakePlaceholder())
     node.AppendContent(u' space before and after ')
     node.AddChild(MakePlaceholder('BONGO'))
     node.AppendContent(u" space before two after  '''")
     node.EndParsing()
     self.failUnless(node.mixed_content[0] == u'  two spaces  ')
     self.failUnless(node.mixed_content[2] == u' space before and after ')
     self.failUnless(node.mixed_content[-1] == u' space before two after  ')
示例#4
0
  def testIter(self):
    # First build a little tree of message and ph nodes.
    node = message.MessageNode()
    node.StartParsing(u'message', None)
    node.HandleAttribute(u'name', u'bla')
    node.AppendContent(u" '''  two spaces  ")
    node.AppendContent(u' space before and after ')
    ph = message.PhNode()
    ph.StartParsing(u'ph', None)
    ph.AddChild(message.ExNode())
    ph.HandleAttribute(u'name', u'BINGO')
    ph.AppendContent(u'bongo')
    node.AddChild(ph)
    node.AddChild(message.PhNode())
    node.AppendContent(u" space before two after  '''")

    order = [message.MessageNode, message.PhNode, message.ExNode, message.PhNode]
    for n in node:
      self.failUnless(type(n) == order[0])
      order = order[1:]
    self.failUnless(len(order) == 0)
示例#5
0
    def testXmlFormatMixedContentWithLeadingWhitespace(self):
        # Again test using the Message node type, because it is the only mixed
        # content node.
        node = message.MessageNode()
        node.StartParsing(u'message', None)
        node.HandleAttribute(u'name', u'name')
        node.AppendContent(u"'''   Hello <young> ")

        ph = message.PhNode()
        ph.StartParsing(u'ph', None)
        ph.HandleAttribute(u'name', u'USERNAME')
        ph.AppendContent(u'$1')
        ex = message.ExNode()
        ex.StartParsing(u'ex', None)
        ex.AppendContent(u'Joi')
        ex.EndParsing()
        ph.AddChild(ex)
        ph.EndParsing()

        node.AddChild(ph)
        node.AppendContent(u" yessiree '''")
        node.EndParsing()

        non_indented_xml = node.FormatXml()
        self.failUnless(
            non_indented_xml == u"<message name=\"name\">\n  '''   Hello"
            u' &lt;young&gt; <ph name="USERNAME">$1<ex>Joi</ex></ph>'
            u" yessiree '''\n</message>")

        indented_xml = node.FormatXml(u'  ')
        self.failUnless(
            indented_xml == u"  <message name=\"name\">\n    '''   Hello"
            u' &lt;young&gt; <ph name="USERNAME">$1<ex>Joi</ex></ph>'
            u" yessiree '''\n  </message>")

        self.failUnless(node.GetNodeById('name'))