# This program is free software; you can redistribute it and/or modify
# it under the terms of the (LGPL) GNU Lesser General Public License as
# published by the Free Software Foundation; either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU Library Lesser General Public License for more details at
# ( http://www.gnu.org/licenses/lgpl.html ).
#
# You should have received a copy of the GNU Lesser General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
# written by: Jeff Ortel ( jortel@redhat.com )

#
# sax encoding/decoding test.
#

from suds.sax.element import Element
from suds.sax.parser import Parser


def basic():
    xml = (
        "<a>Me &amp;&amp; &lt;b&gt;my&lt;/b&gt; "
        "shadow&apos;s &lt;i&gt;dog&lt;/i&gt; "
        "love to &apos;play&apos; and sing &quot;la,la,la&quot;;</a>"
    )
    p = Parser()
    d = p.parse(string=xml)
    a = d.root()
    print("A(parsed)=\n%s" % a)
    assert str(a) == xml
    b = Element("a")
    b.setText(
        "Me &&amp; &lt;b>my</b> shadow's <i>dog</i> "
        "love to 'play' and sing \"la,la,la\";"
    )
    print("B(encoded)=\n%s" % b)
    assert str(b) == xml
    print("A(text-decoded)=\n%s" % a.getText())
    print("B(text-decoded)=\n%s" % b.getText())
    assert a.getText() == b.getText()
    print("test pruning")
    j = Element("A")
    j.set("n", 1)
    j.append(Element("B"))
    print(j)
    j.prune()
    print(j)


def cdata():
    xml = "<a><![CDATA[<b>This is my &amp;&lt;tag&gt;</b>]]></a>"
    p = Parser()
    d = p.parse(string=xml)
    print(d)
    a = d.root()
    print(a.getText())


if __name__ == "__main__":
    # basic()
    cdata()
