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;
 }