context: ///  @file    TestXMLNode.cs
  ///  @brief   XMLNode unit tests
  ///  @author  Frank Bergmann (Csharp conversion)
  ///  @author  Akiya Jouraku (Csharp conversion)
  ///  @author  Michael Hucka <mhucka@caltech.edu> 
  /// 
  ///  $Id$
  ///  $HeadURL$
  /// 
  ///  ====== WARNING ===== WARNING ===== WARNING ===== WARNING ===== WARNING ======
  /// 
  ///  DO NOT EDIT THIS FILE.
  /// 
  ///  This file was generated automatically by converting the file located at
  ///  src/sbml/test/TestXMLNode.cpp
  ///  using the conversion program dev/utilities/translateTests/translateTests.pl.
  ///  Any changes made here will be lost the next time the file is regenerated.
  /// 
  ///  -----------------------------------------------------------------------------
  ///  This file is part of libSBML.  Please visit http://sbml.org for more
  ///  information about SBML, and the latest version of libSBML.
  /// 
  ///  Copyright 2005-2010 California Institute of Technology.
  ///  Copyright 2002-2005 California Institute of Technology and
  ///                      Japan Science and Technology Corporation.
  ///  
  ///  This library is free software; you can redistribute it and/or modify it
  ///  under the terms of the GNU Lesser General Public License as published by
  ///  the Free Software Foundation.  A copy of the license agreement is provided
  ///  in the file named "LICENSE.txt" included with this software distribution
  ///  and also available online as http://sbml.org/software/libsbml/license.html
  ///  -----------------------------------------------------------------------------
  
  
  namespace LibSBMLCSTest.xml {
  
    using libsbmlcs;
  
    using System;
  
    using System.IO;
  
    public class TestXMLNode {
      public class AssertionError : System.Exception 
      {
        public AssertionError() : base()
        {
          
        }
      }
  
  
      static void assertTrue(bool condition)
      {
        if (condition == true)
        {
          return;
        }
        throw new AssertionError();
      }
  
      static void assertEquals(object a, object b)
      {
        if ( (a == null) && (b == null) )
        {
          return;
        }
        else if ( (a == null) || (b == null) )
        {
          throw new AssertionError();
        }
        else if (a.Equals(b))
        {
          return;
        }
    
        throw new AssertionError();
      }
  
      static void assertNotEquals(object a, object b)
      {
        if ( (a == null) && (b == null) )
        {
          throw new AssertionError();
        }
        else if ( (a == null) || (b == null) )
        {
          return;
        }
        else if (a.Equals(b))
        {
          throw new AssertionError();
        }
      }
  
      static void assertEquals(bool a, bool b)
      {
        if ( a == b )
        {
          return;
        }
        throw new AssertionError();
      }
  
      static void assertNotEquals(bool a, bool b)
      {
        if ( a != b )
        {
          return;
        }
        throw new AssertionError();
      }
  
      static void assertEquals(int a, int b)
      {
        if ( a == b )
        {
          return;
        }
        throw new AssertionError();
      }
  
      static void assertNotEquals(int a, int b)
      {
        if ( a != b )
        {
          return;
        }
        throw new AssertionError();
      }
  
  
      public void test_XMLNode_attribute_add_remove()
      {
        XMLTriple triple = new  XMLTriple("test","","");
        XMLAttributes attr = new  XMLAttributes();
        XMLNode node = new XMLNode(triple,attr);
        XMLTriple xt1 = new  XMLTriple("name1", "http://name1.org/", "p1");
        XMLTriple xt2 = new  XMLTriple("name2", "http://name2.org/", "p2");
        XMLTriple xt3 = new  XMLTriple("name3", "http://name3.org/", "p3");
        XMLTriple xt1a = new  XMLTriple("name1", "http://name1a.org/", "p1a");
        XMLTriple xt2a = new  XMLTriple("name2", "http://name2a.org/", "p2a");
        node.addAttr( "name1", "val1", "http://name1.org/", "p1");
        node.addAttr(xt2, "val2");
        assertTrue( node.getAttributesLength() == 2 );
        assertTrue( node.isAttributesEmpty() == false );
        assertTrue( (  "name1" != node.getAttrName(0) ) == false );
        assertTrue( (  "val1"  != node.getAttrValue(0) ) == false );
        assertTrue( (  "http://name1.org/" != node.getAttrURI(0) ) == false );
        assertTrue( (  "p1"    != node.getAttrPrefix(0) ) == false );
        assertTrue( (  "name2" != node.getAttrName(1) ) == false );
        assertTrue( (  "val2"  != node.getAttrValue(1) ) == false );
        assertTrue( (  "http://name2.org/" != node.getAttrURI(1) ) == false );
        assertTrue( (  "p2"    != node.getAttrPrefix(1) ) == false );
        assertTrue( node.getAttrValue( "name1") == "" );
        assertTrue( node.getAttrValue( "name2") == "" );
        assertTrue( (  "val1"  != node.getAttrValue( "name1", "http://name1.org/") ) == false );
        assertTrue( (  "val2"  != node.getAttrValue( "name2", "http://name2.org/") ) == false );
        assertTrue( (  "val1"  != node.getAttrValue(xt1) ) == false );
        assertTrue( (  "val2"  != node.getAttrValue(xt2) ) == false );
        assertTrue( node.hasAttr(-1) == false );
        assertTrue( node.hasAttr(2) == false );
        assertTrue( node.hasAttr(0) == true );
        assertTrue( node.hasAttr( "name1", "http://name1.org/") == true );
        assertTrue( node.hasAttr( "name2", "http://name2.org/") == true );
        assertTrue( node.hasAttr( "name3", "http://name3.org/") == false );
        assertTrue( node.hasAttr(xt1) == true );
        assertTrue( node.hasAttr(xt2) == true );
        assertTrue( node.hasAttr(xt3) == false );
        node.addAttr( "noprefix", "val3");
        assertTrue( node.getAttributesLength() == 3 );
        assertTrue( node.isAttributesEmpty() == false );
        assertTrue( (  "noprefix" != node.getAttrName(2) ) == false );
        assertTrue( (  "val3"     != node.getAttrValue(2) ) == false );
        assertTrue( node.getAttrURI(2) == "" );
        assertTrue( node.getAttrPrefix(2) == "" );
        assertTrue( (      "val3"  != node.getAttrValue( "noprefix") ) == false );
        assertTrue( (  "val3"  != node.getAttrValue( "noprefix", "") ) == false );
        assertTrue( node.hasAttr( "noprefix"    ) == true );
        assertTrue( node.hasAttr( "noprefix", "") == true );
        node.addAttr(xt1, "mval1");
        node.addAttr( "name2", "mval2", "http://name2.org/", "p2");
        assertTrue( node.getAttributesLength() == 3 );
        assertTrue( node.isAttributesEmpty() == false );
        assertTrue( (  "name1" != node.getAttrName(0) ) == false );
        assertTrue( (  "mval1" != node.getAttrValue(0) ) == false );
        assertTrue( (  "http://name1.org/" != node.getAttrURI(0) ) == false );
        assertTrue( (  "p1"    != node.getAttrPrefix(0) ) == false );
        assertTrue( (  "name2"    != node.getAttrName(1) ) == false );
        assertTrue( (  "mval2"    != node.getAttrValue(1) ) == false );
        assertTrue( (  "http://name2.org/" != node.getAttrURI(1) ) == false );
        assertTrue( (  "p2"       != node.getAttrPrefix(1) ) == false );
        assertTrue( node.hasAttr(xt1) == true );
        assertTrue( node.hasAttr( "name1", "http://name1.org/") == true );
        node.addAttr( "noprefix", "mval3");
        assertTrue( node.getAttributesLength() == 3 );
        assertTrue( node.isAttributesEmpty() == false );
        assertTrue( (  "noprefix" != node.getAttrName(2) ) == false );
        assertTrue( (  "mval3"    != node.getAttrValue(2) ) == false );
        assertTrue( node.getAttrURI(2) == "" );
        assertTrue( node.getAttrPrefix(2) == "" );
        assertTrue( node.hasAttr( "noprefix") == true );
        assertTrue( node.hasAttr( "noprefix", "") == true );
        node.addAttr(xt1a, "val1a");
        node.addAttr(xt2a, "val2a");
        assertTrue( node.getAttributesLength() == 5 );
        assertTrue( (  "name1" != node.getAttrName(3) ) == false );
        assertTrue( (  "val1a" != node.getAttrValue(3) ) == false );
        assertTrue( (  "http://name1a.org/" != node.getAttrURI(3) ) == false );
        assertTrue( (  "p1a" != node.getAttrPrefix(3) ) == false );
        assertTrue( (  "name2" != node.getAttrName(4) ) == false );
        assertTrue( (  "val2a" != node.getAttrValue(4) ) == false );
        assertTrue( (  "http://name2a.org/" != node.getAttrURI(4) ) == false );
        assertTrue( (  "p2a" != node.getAttrPrefix(4) ) == false );
        assertTrue( (  "val1a"  != node.getAttrValue( "name1", "http://name1a.org/") ) == false );
        assertTrue( (  "val2a"  != node.getAttrValue( "name2", "http://name2a.org/") ) == false );
        assertTrue( (  "val1a"  != node.getAttrValue(xt1a) ) == false );
        assertTrue( (  "val2a"  != node.getAttrValue(xt2a) ) == false );
        node.removeAttr(xt1a);
        node.removeAttr(xt2a);
        assertTrue( node.getAttributesLength() == 3 );
        node.removeAttr( "name1", "http://name1.org/");
        assertTrue( node.getAttributesLength() == 2 );
        assertTrue( node.isAttributesEmpty() == false );
        assertTrue( (  "name2" != node.getAttrName(0) ) == false );
        assertTrue( (  "mval2" != node.getAttrValue(0) ) == false );
        assertTrue( (  "http://name2.org/" != node.getAttrURI(0) ) == false );
        assertTrue( (  "p2" != node.getAttrPrefix(0) ) == false );
        assertTrue( (  "noprefix" != node.getAttrName(1) ) == false );
        assertTrue( (  "mval3" != node.getAttrValue(1) ) == false );
        assertTrue( node.getAttrURI(1) == "" );
        assertTrue( node.getAttrPrefix(1) == "" );
        assertTrue( node.hasAttr( "name1", "http://name1.org/") == false );
        node.removeAttr(xt2);
        assertTrue( node.getAttributesLength() == 1 );
        assertTrue( node.isAttributesEmpty() == false );
        assertTrue( (  "noprefix" != node.getAttrName(0) ) == false );
        assertTrue( (  "mval3" != node.getAttrValue(0) ) == false );
        assertTrue( node.getAttrURI(0) == "" );
        assertTrue( node.getAttrPrefix(0) == "" );
        assertTrue( node.hasAttr(xt2) == false );
        assertTrue( node.hasAttr( "name2", "http://name2.org/") == false );
        node.removeAttr( "noprefix");
        assertTrue( node.getAttributesLength() == 0 );
        assertTrue( node.isAttributesEmpty() == true );
        assertTrue( node.hasAttr( "noprefix"    ) == false );
        assertTrue( node.hasAttr( "noprefix", "") == false );
        node = null;
        xt1 = null;
        xt2 = null;
        xt3 = null;
        xt1a = null;
        xt2a = null;
        triple = null;
        attr = null;
      }
  
      public void test_XMLNode_attribute_set_clear()
      {
        XMLTriple triple = new  XMLTriple("test","","");
        XMLAttributes attr = new  XMLAttributes();
        XMLNode node = new XMLNode(triple,attr);
        XMLAttributes nattr = new  XMLAttributes();
        XMLTriple xt1 = new  XMLTriple("name1", "http://name1.org/", "p1");
        XMLTriple xt2 = new  XMLTriple("name2", "http://name2.org/", "p2");
        XMLTriple xt3 = new  XMLTriple("name3", "http://name3.org/", "p3");
        XMLTriple xt4 = new  XMLTriple("name4", "http://name4.org/", "p4");
        XMLTriple xt5 = new  XMLTriple("name5", "http://name5.org/", "p5");
        nattr.add(xt1, "val1");
        nattr.add(xt2, "val2");
        nattr.add(xt3, "val3");
        nattr.add(xt4, "val4");
        nattr.add(xt5, "val5");
        node.setAttributes(nattr);
        assertTrue( node.getAttributesLength() == 5 );
        assertTrue( node.isAttributesEmpty() == false );
        assertTrue( (  "name1" != node.getAttrName(0) ) == false );
        assertTrue( (  "val1"  != node.getAttrValue(0) ) == false );
        assertTrue( (  "http://name1.org/" != node.getAttrURI(0) ) == false );
        assertTrue( (  "p1"    != node.getAttrPrefix(0) ) == false );
        assertTrue( (  "name2" != node.getAttrName(1) ) == false );
        assertTrue( (  "val2"  != node.getAttrValue(1) ) == false );
        assertTrue( (  "http://name2.org/" != node.getAttrURI(1) ) == false );
        assertTrue( (  "p2"    != node.getAttrPrefix(1) ) == false );
        assertTrue( (  "name3" != node.getAttrName(2) ) == false );
        assertTrue( (  "val3"  != node.getAttrValue(2) ) == false );
        assertTrue( (  "http://name3.org/" != node.getAttrURI(2) ) == false );
        assertTrue( (  "p3"    != node.getAttrPrefix(2) ) == false );
        assertTrue( (  "name4" != node.getAttrName(3) ) == false );
        assertTrue( (  "val4"  != node.getAttrValue(3) ) == false );
        assertTrue( (  "http://name4.org/" != node.getAttrURI(3) ) == false );
        assertTrue( (  "p4"    != node.getAttrPrefix(3) ) == false );
        assertTrue( (  "name5" != node.getAttrName(4) ) == false );
        assertTrue( (  "val5"  != node.getAttrValue(4) ) == false );
        assertTrue( (  "http://name5.org/" != node.getAttrURI(4) ) == false );
        assertTrue( (  "p5"    != node.getAttrPrefix(4) ) == false );
        XMLTriple ntriple = new  XMLTriple("test2","http://test2.org/","p2");
        node.setTriple(ntriple);
        assertTrue( (    "test2" != node.getName() ) == false );
        assertTrue( (     "http://test2.org/" != node.getURI() ) == false );
        assertTrue( (  "p2" != node.getPrefix() ) == false );
        node.clearAttributes();
        assertTrue( node.getAttributesLength() == 0 );
        assertTrue( node.isAttributesEmpty() != false );
        triple = null;
        ntriple = null;
        node = null;
        attr = null;
        nattr = null;
        xt1 = null;
        xt2 = null;
        xt3 = null;
        xt4 = null;
        xt5 = null;
      }
  
      public void test_XMLNode_convert()
      {
        string xmlstr = "<annotation>\n" + "  <test xmlns=\"http://test.org/\" id=\"test\">test</test>\n" + "</annotation>";
        XMLNode node;
        XMLNode child, gchild;
        XMLAttributes attr;
        XMLNamespaces ns;
        node = XMLNode.convertStringToXMLNode(xmlstr,null);
        child = node.getChild(0);
        gchild = child.getChild(0);
        attr = child.getAttributes();
        ns = child.getNamespaces();
        assertTrue( (  "annotation" != node.getName() ) == false );
        assertTrue( ( "test"  != child.getName() ) == false );
        assertTrue( ( "test"  != gchild.getCharacters() ) == false );
        assertTrue( (  "id"    != attr.getName(0) ) == false );
        assertTrue( (  "test"  != attr.getValue(0) ) == false );
        assertTrue( (  "http://test.org/"  != ns.getURI(0) ) == false );
        assertTrue( ns.getPrefix(0) == "" );
        string toxmlstring = node.toXMLString();
        assertTrue( ( xmlstr != toxmlstring ) == false );
        node = null;
      }
  
      public void test_XMLNode_convert_dummyroot()
      {
        string xmlstr_nodummy1 = "<notes>\n" + "  <p>test</p>\n" + "</notes>";
        string xmlstr_nodummy2 = "<html>\n" + "  <p>test</p>\n" + "</html>";
        string xmlstr_nodummy3 = "<body>\n" + "  <p>test</p>\n" + "</body>";
        string xmlstr_nodummy4 =  "<p>test</p>";
        string xmlstr_nodummy5 = "<test1>\n" + "  <test2>test</test2>\n" + "</test1>";
        string xmlstr_dummy1 =  "<p>test1</p><p>test2</p>";
        string xmlstr_dummy2 =  "<test1>test1</test1><test2>test2</test2>";
        XMLNode rootnode;
        XMLNode child, gchild;
        XMLAttributes attr;
        XMLNamespaces ns;
        string toxmlstring;
        rootnode = XMLNode.convertStringToXMLNode(xmlstr_nodummy1,null);
        assertTrue( rootnode.getNumChildren() == 1 );
        child = rootnode.getChild(0);
        gchild = child.getChild(0);
        assertTrue( (  "notes" != rootnode.getName() ) == false );
        assertTrue( ( "p"  != child.getName() ) == false );
        assertTrue( ( "test"  != gchild.getCharacters() ) == false );
        toxmlstring = rootnode.toXMLString();
        assertTrue( ( xmlstr_nodummy1 != toxmlstring ) == false );
        rootnode = null;
        rootnode = XMLNode.convertStringToXMLNode(xmlstr_nodummy2,null);
        assertTrue( rootnode.getNumChildren() == 1 );
        child = rootnode.getChild(0);
        gchild = child.getChild(0);
        assertTrue( (  "html" != rootnode.getName() ) == false );
        assertTrue( ( "p"  != child.getName() ) == false );
        assertTrue( ( "test"  != gchild.getCharacters() ) == false );
        toxmlstring = rootnode.toXMLString();
        assertTrue( ( xmlstr_nodummy2 != toxmlstring ) == false );
        rootnode = null;
        rootnode = XMLNode.convertStringToXMLNode(xmlstr_nodummy3,null);
        assertTrue( rootnode.getNumChildren() == 1 );
        child = rootnode.getChild(0);
        gchild = child.getChild(0);
        assertTrue( (  "body" != rootnode.getName() ) == false );
        assertTrue( ( "p"  != child.getName() ) == false );
        assertTrue( ( "test"  != gchild.getCharacters() ) == false );
        toxmlstring = rootnode.toXMLString();
        assertTrue( ( xmlstr_nodummy3 != toxmlstring ) == false );
        rootnode = null;
        rootnode = XMLNode.convertStringToXMLNode(xmlstr_nodummy4,null);
        assertTrue( rootnode.getNumChildren() == 1 );
        child = rootnode.getChild(0);
        assertTrue( (  "p" != rootnode.getName() ) == false );
        assertTrue( ( "test"  != child.getCharacters() ) == false );
        toxmlstring = rootnode.toXMLString();
        assertTrue( ( xmlstr_nodummy4 != toxmlstring ) == false );
        rootnode = null;
        rootnode = XMLNode.convertStringToXMLNode(xmlstr_nodummy5,null);
        assertTrue( rootnode.getNumChildren() == 1 );
        child = rootnode.getChild(0);
        gchild = child.getChild(0);
        assertTrue( (  "test1" != rootnode.getName() ) == false );
        assertTrue( ( "test2"  != child.getName() ) == false );
        assertTrue( ( "test"  != gchild.getCharacters() ) == false );
        toxmlstring = rootnode.toXMLString();
        assertTrue( ( xmlstr_nodummy5 != toxmlstring ) == false );
        rootnode = null;
        rootnode = XMLNode.convertStringToXMLNode(xmlstr_dummy1,null);
        assertTrue( rootnode.isEOF() == true );
        assertTrue( rootnode.getNumChildren() == 2 );
        child = rootnode.getChild(0);
        gchild = child.getChild(0);
        assertTrue( (  "p" != child.getName() ) == false );
        assertTrue( ( "test1"  != gchild.getCharacters() ) == false );
        child = rootnode.getChild(1);
        gchild = child.getChild(0);
        assertTrue( (  "p" != child.getName() ) == false );
        assertTrue( ( "test2"  != gchild.getCharacters() ) == false );
        toxmlstring = rootnode.toXMLString();
        assertTrue( ( xmlstr_dummy1 != toxmlstring ) == false );
        rootnode = null;
        rootnode = XMLNode.convertStringToXMLNode(xmlstr_dummy2,null);
        assertTrue( rootnode.isEOF() == true );
        assertTrue( rootnode.getNumChildren() == 2 );
        child = rootnode.getChild(0);
        gchild = child.getChild(0);
        assertTrue( (  "test1" != child.getName() ) == false );
        assertTrue( ( "test1"  != gchild.getCharacters() ) == false );
        child = rootnode.getChild(1);
        gchild = child.getChild(0);
        assertTrue( (  "test2" != child.getName() ) == false );
        assertTrue( ( "test2"  != gchild.getCharacters() ) == false );
        toxmlstring = rootnode.toXMLString();
        assertTrue( ( xmlstr_dummy2 != toxmlstring ) == false );
        rootnode = null;
      }
  
      public void test_XMLNode_create()
      {
        XMLNode node = new XMLNode();
        assertTrue( node != null );
        assertTrue( node.getNumChildren() == 0 );
        node = null;
        node = new XMLNode();
        assertTrue( node != null );
        XMLNode node2 = new XMLNode();
        assertTrue( node2 != null );
        node.addChild(node2);
        assertTrue( node.getNumChildren() == 1 );
        XMLNode node3 = new XMLNode();
        assertTrue( node3 != null );
        node.addChild(node3);
        assertTrue( node.getNumChildren() == 2 );
        node = null;
        node2 = null;
        node3 = null;
      }
  
      public void test_XMLNode_createElement()
      {
        XMLTriple triple;
        XMLAttributes attr;
        XMLNamespaces ns;
        XMLNode snode, enode, tnode;
        XMLAttributes cattr;
        string name =  "test";
        string uri =  "http://test.org/";
        string prefix =  "p";
        string text =  "text node";
        triple = new  XMLTriple(name,uri,prefix);
        ns = new  XMLNamespaces();
        attr = new  XMLAttributes();
        ns.add(uri,prefix);
        attr.add("id", "value",uri,prefix);
        snode = new XMLNode(triple,attr,ns);
        assertTrue( snode != null );
        assertTrue( snode.getNumChildren() == 0 );
        assertTrue( ( name != snode.getName() ) == false );
        assertTrue( ( prefix != snode.getPrefix() ) == false );
        assertTrue( ( uri != snode.getURI() ) == false );
        assertTrue( snode.isElement() == true );
        assertTrue( snode.isStart() == true );
        assertTrue( snode.isEnd() == false );
        assertTrue( snode.isText() == false );
        snode.setEnd();
        assertTrue( snode.isEnd() == true );
        snode.unsetEnd();
        assertTrue( snode.isEnd() == false );
        cattr = snode.getAttributes();
        assertTrue( cattr != null );
        assertTrue( (  "id"    != cattr.getName(0) ) == false );
        assertTrue( (  "value" != cattr.getValue(0) ) == false );
        assertTrue( ( prefix != cattr.getPrefix(0) ) == false );
        assertTrue( ( uri != cattr.getURI(0) ) == false );
        triple = null;
        attr = null;
        ns = null;
        snode = null;
        attr = new  XMLAttributes();
        attr.add("id", "value");
        triple = new  XMLTriple(name, "", "");
        snode = new XMLNode(triple,attr);
        assertTrue( snode != null );
        assertTrue( snode.getNumChildren() == 0 );
        assertTrue( (  "test" != snode.getName() ) == false );
        assertTrue( snode.getPrefix() == "" );
        assertTrue( snode.getURI() == "" );
        assertTrue( snode.isElement() == true );
        assertTrue( snode.isStart() == true );
        assertTrue( snode.isEnd() == false );
        assertTrue( snode.isText() == false );
        cattr = snode.getAttributes();
        assertTrue( cattr != null );
        assertTrue( (  "id"    != cattr.getName(0) ) == false );
        assertTrue( (  "value" != cattr.getValue(0) ) == false );
        assertTrue( cattr.getPrefix(0) == "" );
        assertTrue( cattr.getURI(0) == "" );
        enode = new XMLNode(triple);
        assertTrue( enode != null );
        assertTrue( enode.getNumChildren() == 0 );
        assertTrue( (  "test" != enode.getName() ) == false );
        assertTrue( enode.getPrefix() == "" );
        assertTrue( enode.getURI() == "" );
        assertTrue( enode.isElement() == true );
        assertTrue( enode.isStart() == false );
        assertTrue( enode.isEnd() == true );
        assertTrue( enode.isText() == false );
        tnode = new XMLNode(text);
        assertTrue( tnode != null );
        assertTrue( ( text != tnode.getCharacters() ) == false );
        assertTrue( tnode.getNumChildren() == 0 );
        assertTrue( tnode.getName() == "" );
        assertTrue( tnode.getPrefix() == "" );
        assertTrue( tnode.getURI() == "" );
        assertTrue( tnode.isElement() == false );
        assertTrue( tnode.isStart() == false );
        assertTrue( tnode.isEnd() == false );
        assertTrue( tnode.isText() == true );
        triple = null;
        attr = null;
        snode = null;
        enode = null;
        tnode = null;
      }
  
      public void test_XMLNode_createFromToken()
      {
        XMLToken token;
        XMLTriple triple;
        XMLNode node;
        triple = new  XMLTriple("attr", "uri", "prefix");
        token = new  XMLToken(triple);
        node = new XMLNode(token);
        assertTrue( node != null );
        assertTrue( node.getNumChildren() == 0 );
        assertTrue( (  "attr" != node.getName() ) == false );
        assertTrue( (  "prefix" != node.getPrefix() ) == false );
        assertTrue( (  "uri" != node.getURI() ) == false );
        assertTrue( node.getChild(1) != null );
        token = null;
        triple = null;
        node = null;
      }
  
      public void test_XMLNode_equals()
      {
        string xmlstr = "<annotation>\n" + "  <test xmlns=\"http://test.org/\" id=\"test\">test</test>\n" + "</annotation>";
        XMLNode node = new XMLNode();
        XMLNode node1 = XMLNode.convertStringToXMLNode(xmlstr,null);
        assertEquals( false, node.equals(node1) );
        node = null;
        XMLNode node2 = XMLNode.convertStringToXMLNode(xmlstr,null);
        assertEquals( true, node2.equals(node1) );
        node1 = null;
        node2 = null;
      }
  
      public void test_XMLNode_getChildForName()
      {
        string xmlstr = "<annotation>\n" + "  <test xmlns=\"http://test.org/\" id=\"test\">test</test>\n" + "</annotation>";
        XMLNode node = new XMLNode();
        XMLNode annotation = node.getChild("test");
        string name = annotation.getName();
        assertTrue( name ==  "" );
        node = null;
        node = XMLNode.convertStringToXMLNode(xmlstr,null);
        annotation = node.getChild("test");
        assertTrue( ( "test" != annotation.getName() ) == false );
        node = null;
      }
  
      public void test_XMLNode_getIndex()
      {
        string xmlstr = "<annotation>\n" + "  <test xmlns=\"http://test.org/\" id=\"test\">test</test>\n" + "</annotation>";
        XMLNode node = new XMLNode();
        assertTrue( node.getIndex( "test") == -1 );
        node = null;
        node = XMLNode.convertStringToXMLNode(xmlstr,null);
        assertTrue( node.getIndex( "test") == 0 );
        node = null;
      }
  
      public void test_XMLNode_getters()
      {
        XMLToken token;
        XMLNode node;
        XMLTriple triple;
        XMLAttributes attr;
        XMLNamespaces NS;
        NS = new  XMLNamespaces();
        NS.add( "http://test1.org/", "test1");
        token = new  XMLToken("This is a test");
        node = new XMLNode(token);
        assertTrue( node != null );
        assertTrue( node.getNumChildren() == 0 );
        assertTrue( (  "This is a test" != node.getCharacters() ) == false );
        assertTrue( node.getChild(1) != null );
        attr = new  XMLAttributes();
        assertTrue( attr != null );
        attr.add( "attr2", "value");
        triple = new  XMLTriple("attr", "uri", "prefix");
        token = new  XMLToken(triple,attr);
        assertTrue( token != null );
        node = new XMLNode(token);
        assertTrue( (  "attr" != node.getName() ) == false );
        assertTrue( (  "uri" != node.getURI() ) == false );
        assertTrue( (  "prefix" != node.getPrefix() ) == false );
        XMLAttributes returnattr = node.getAttributes();
        assertTrue( (  "attr2" != returnattr.getName(0) ) == false );
        assertTrue( (  "value" != returnattr.getValue(0) ) == false );
        token = new  XMLToken(triple,attr,NS);
        node = new XMLNode(token);
        XMLNamespaces returnNS = node.getNamespaces();
        assertTrue( returnNS.getLength() == 1 );
        assertTrue( returnNS.isEmpty() == false );
        triple = null;
        token = null;
        node = null;
      }
  
      public void test_XMLNode_hasChild()
      {
        string xmlstr = "<annotation>\n" + "  <test xmlns=\"http://test.org/\" id=\"test\">test</test>\n" + "</annotation>";
        XMLNode node = new XMLNode();
        assertTrue( node.hasChild( "test") == false );
        node = null;
        node = XMLNode.convertStringToXMLNode(xmlstr,null);
        assertTrue( node.hasChild( "test") == true );
        node = null;
      }
  
      public void test_XMLNode_insert()
      {
        XMLAttributes attr = new  XMLAttributes();
        XMLTriple trp_p = new  XMLTriple("parent","","");
        XMLTriple trp_c1 = new  XMLTriple("child1","","");
        XMLTriple trp_c2 = new  XMLTriple("child2","","");
        XMLTriple trp_c3 = new  XMLTriple("child3","","");
        XMLTriple trp_c4 = new  XMLTriple("child4","","");
        XMLTriple trp_c5 = new  XMLTriple("child5","","");
        XMLNode p = new XMLNode(trp_p,attr);
        XMLNode c1 = new XMLNode(trp_c1,attr);
        XMLNode c2 = new XMLNode(trp_c2,attr);
  
gt:       XMLNode c3 = new XMLNode(trp_c3,attr);