You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by tn...@apache.org on 2002/05/21 20:44:29 UTC

cvs commit: xml-xerces/c/tests/DOM/DOMMemTest DOMMemTest.cpp

tng         02/05/21 11:44:29

  Modified:    c/tests/DOM/DOMMemTest DOMMemTest.cpp
  Log:
  This is the original tests/IDom/IDOMMemTest/IDOMMemTest.cpp
  
  Revision  Changes    Path
  1.33      +997 -1109 xml-xerces/c/tests/DOM/DOMMemTest/DOMMemTest.cpp
  
  Index: DOMMemTest.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/tests/DOM/DOMMemTest/DOMMemTest.cpp,v
  retrieving revision 1.32
  retrieving revision 1.33
  diff -u -r1.32 -r1.33
  --- DOMMemTest.cpp	15 Mar 2002 13:55:13 -0000	1.32
  +++ DOMMemTest.cpp	21 May 2002 18:44:28 -0000	1.33
  @@ -1,7 +1,7 @@
   /*
    * The Apache Software License, Version 1.1
    *
  - * Copyright (c) 1999-2002 The Apache Software Foundation.  All rights
  + * Copyright (c) 2002 The Apache Software Foundation.  All rights
    * reserved.
    *
    * Redistribution and use in source and binary forms, with or without
  @@ -48,30 +48,24 @@
    *
    * This software consists of voluntary contributions made by many
    * individuals on behalf of the Apache Software Foundation, and was
  - * originally based on software copyright (c) 1999, International
  + * originally based on software copyright (c) 2002, International
    * Business Machines, Inc., http://www.ibm.com .  For more information
    * on the Apache Software Foundation, please see
    * <http://www.apache.org/>.
    */
   
   //
  -//  Various DOM tests.
  -//     Contents include
  -//       1.  Basic functionality for DOMString
  -//       2.  Regression tests for bugs fixed.
  -//     All individual are wrapped in a memory leak checker.
  -//
  -//     This is NOT a complete test of DOM functionality.
  +//  Various IDOM tests.
  +//     This is NOT a complete test of IDOM functionality.
   //
   
   /*
  - * $Id: DOMMemTest.cpp,v 1.32 2002/03/15 13:55:13 tng Exp $
  + * $Id: DOMMemTest.cpp,v 1.33 2002/05/21 18:44:28 tng Exp $
    */
   
   #include <stdio.h>
   #include <string.h>
  -#include <xercesc/dom/DOM.hpp>
  -#include <xercesc/dom/DomMemDebug.hpp>
  +#include <xercesc/idom/IDOM.hpp>
   #include <xercesc/util/PlatformUtils.hpp>
   #include <xercesc/util/XMLException.hpp>
   #include <xercesc/util/XMLString.hpp>
  @@ -87,23 +81,13 @@
   };
   
   
  -#define TESTPROLOG entryMemState = DomMemDebug();
  -
  -#define TESTEPILOG \
  -    exitMemState = DomMemDebug(); \
  -    if (entryMemState != exitMemState) { \
  -        printf(" Memory leak at line %d, file %s:  ", __LINE__, __FILE__);  \
  -        exitMemState.printDifference(entryMemState); \
  -    }
  -
  -
   #define EXCEPTION_TEST(operation, expected_exception)               \
   {                                                                   \
       try {                                                           \
       operation;                                                      \
       printf(" Error: no exception thrown at line %d\n", __LINE__);   \
   }                                                                   \
  -    catch (DOM_DOMException &e) {                                       \
  +    catch (IDOM_DOMException &e) {                                  \
       if (e.code != expected_exception)                       \
       printf(" Wrong exception code: %d at line %d\n", e.code, __LINE__); \
   }                                                                 \
  @@ -113,805 +97,420 @@
   }
   
   
  +//temp XMLCh String Buffer
  +XMLCh tempStr[4000];
  +XMLCh tempStr2[4000];
  +XMLCh tempStr3[4000];
  +XMLCh tempStr4[4000];
  +XMLCh tempStr5[4000];
  +
   //---------------------------------------------------------------------------------------
   //
  -//   DOMStringTests    tests of class DOMString
  +//   IDOMBasicTests    Basic IDOM Level 1 tests
   //
   //---------------------------------------------------------------------------------------
  -void    DOMStringTests()
  +void IDOMBasicTests()
   {
  -    DomMemDebug     entryMemState, exitMemState;
  -
       //
  -    //  Test 1.  Basic operations on a simple string.
  +    //  Test Doc01      Create a new empty document
       //
  -    printf("DOM Memory Test.\n");
  -    TESTPROLOG;
       {
  -        DOMString foo = "fop";
  -        TASSERT(foo.length() == 3);
  -        TASSERT(foo.equals(foo));
  -        TASSERT(foo != 0);
  -        TASSERT(foo.charAt(0) == chLatin_f);
  -        TASSERT(foo.charAt(2) == chLatin_p);
  -        TASSERT(foo.charAt(3) == chNull);
  -    }
  -    TESTEPILOG
  -
  -        //
  -        //  Construct from XMLCh *
  -        //
  -        TESTPROLOG
  -    {
  -        XMLCh a[] = {chLatin_H, chLatin_e, chLatin_l, chLatin_l, chLatin_o, chNull}; // Unicode "Hello"
  -        DOMString x(a);
  -        DOMString y = "Hello";
  -        TASSERT(x.equals(y));
  -
  -        DOMString z(a+2, 3);
  -        TASSERT(z.equals("llo"));
  -    }
  -    TESTEPILOG
  -
  -        //
  -        //  Test 2.  Empty strings shouldn't leave anything lying around
  -        //
  -        TESTPROLOG;
  -    {
  -        DOMString a;
  -        DOMString b;
  -        TASSERT (a==0);
  -        a = 0;
  -        TASSERT(a==0);
  -        TASSERT((a!=0) == false);
  -
  -        DOMString c(0);
  -        TASSERT(c==0);
  -        TASSERT(c==a);
  -    }
  -    TESTEPILOG
  -
  -
  -        //
  -        //  Test 3.   Clones should be equal.
  -        TESTPROLOG;
  -    {
  -        DOMString a = "hello";
  -        DOMString b = a.clone();
  -        TASSERT(a.equals(b));
  -        TASSERT(a != b);
  -        a = 0;
  -        TASSERT(b.equals("hello"));
  -        TASSERT(a == 0);
  -        TASSERT(a.equals(""));
  -    }
  -    TESTEPILOG
  -
  -
  -        //
  -        //  Test 4.  Copy construction and assignemnt
  -        //
  -        TESTPROLOG;
  -    {
  -        DOMString a = "Test 04";
  -        DOMString b(a);
  -        DOMString c = a;
  -        DOMString d;
  -        DOMString e;
  -        d = a;
  -        TASSERT(a==b);
  -        TASSERT(a==c);
  -        TASSERT(a==d);
  -        TASSERT(a!=e);
  -        // printf ("   test04 should have 1 handle, 1 buffer here.  ");
  +        //  First precondition, so that lazily created strings do not appear
  +        //  as memory leaks.
  +        IDOM_Document*   doc;
  +        doc = IDOM_DOMImplementation::getImplementation()->createDocument();
  +        delete doc;
       }
  -    TESTEPILOG
  -
  -
  -        //
  -        // Test 5  AppendData, degenerate cases.
  -        //
  -        TESTPROLOG;
  -    {
  -        DOMString a;
  -        DOMString b = "Test 05";
   
  -        a.appendData(b);
  -        TASSERT(a.equals(b));
  -        TASSERT(a!=b);
  -        TASSERT(a.equals("Test 05"));
  -    };
  -    TESTEPILOG
  -
  -
  -        //
  -        //  Test 6  Append data, degenerate case 2
  -        //
  -        TESTPROLOG;
  +    //
  +    //  Test Doc02      Create one of each kind of node using the
  +    //                  document createXXX methods.
  +    //                  Watch for memory leaks.
  +    //
       {
  -        DOMString a;
  -        DOMString b = "Test 06";
  +        //  Do all operations in a preconditioning step, to force the
  +        //  creation of implementation objects that are set up on first use.
  +        //  Don't watch for leaks in this block (no  / )
  +        IDOM_Document* doc = IDOM_DOMImplementation::getImplementation()->createDocument();
   
  -        b.appendData(a);
  -        TASSERT(!a.equals(b));
  -        TASSERT(a!=b);
  -        TASSERT(b.equals("Test 06"));
  -        TASSERT(a==0);
  -    }
  -    TESTEPILOG
  +        XMLString::transcode("Doc02Element", tempStr, 3999);
  +        IDOM_Element*   el = doc->createElement(tempStr);
   
  +        IDOM_DocumentFragment* frag = doc->createDocumentFragment ();
   
  -        //
  -        //  Test 7  Append Data, Common case, no extra space in original buffer.
  -        //          Also, operator +=, which is a convenience alias for appendData.
  -        //
  -        TESTPROLOG;
  -    {
  -        DOMString a = "Test 07";
  -        DOMString b = "append";
  +        XMLString::transcode("Doc02TextNode", tempStr, 3999);
  +        IDOM_Text*  text = doc->createTextNode(tempStr);
   
  -        a.appendData(b);
  -        TASSERT(a.equals("Test 07append"));
  -        TASSERT(b.equals("append"));
  +        XMLString::transcode("Doc02Comment", tempStr, 3999);
  +        IDOM_Comment* comment = doc->createComment(tempStr);
   
  -        a.appendData((XMLCh)0x31);
  -        TASSERT(a.equals("Test 07append1"));
  +        XMLString::transcode("Doc02CDataSection", tempStr, 3999);
  +        IDOM_CDATASection*  cdataSec = doc->createCDATASection(tempStr);
   
  -        XMLCh  s[] = {0x32, 0x33, 0x00};
  -        a.appendData(s);
  -        TASSERT(a.equals("Test 07append123"));
  +        XMLString::transcode("Doc02DocumentType", tempStr, 3999);
  +        IDOM_DocumentType*  docType = doc->createDocumentType(tempStr);
   
  -        a = "Test 07a ";
  -        a += b;
  -        TASSERT(a.equals("Test 07a append"));
  +        XMLString::transcode("Doc02Notation", tempStr, 3999);
  +        IDOM_Notation* notation = doc->createNotation(tempStr);
   
  -        a += (XMLCh)0x31;
  -        TASSERT(a.equals("Test 07a append1"));
  +        XMLString::transcode("Doc02PITarget", tempStr, 3999);
  +        XMLString::transcode("Doc02PIData", tempStr2, 3999);
  +        IDOM_ProcessingInstruction* pi = doc->createProcessingInstruction(tempStr, tempStr2);
   
  -        a += s;
  -        TASSERT(a.equals("Test 07a append123"));
  +        XMLString::transcode("*", tempStr, 3999);
  +        IDOM_NodeList*    nodeList = doc->getElementsByTagName(tempStr);
   
  +        delete doc;
       }
  -    TESTEPILOG
  -
  -
  -        //
  -        //  Test 8 Append Data, with plenty of extra space in buffer.
  -        //
  -        TESTPROLOG;
  -    {
  -        DOMString a;
  -        a.reserve(100);
  -        DOMString b("Test 08");
  -        DOMString c("append");
  -
  -        TASSERT(a != 0);  // (The String object has an identity, even if no contents)
  -        TASSERT(a.length() == 0);
  -        a.appendData(b);
  -        TASSERT(a.equals(b));
  -        TASSERT(a.equals("Test 08"));
  -        TASSERT(a != b);
  -        a.appendData(c);
  -        TASSERT(a.equals("Test 08append"));
  -        TASSERT(b.equals("Test 08"));
  -        TASSERT(c.equals("append"));
  -    };
  -    TESTEPILOG
  -
  -
  -
  -        //
  -        //  Test 9 Append Data, with plenty of extra space in buffer, but with
  -        //                      a clone, so that the original buffer can not be modified.
  -        //
  -        TESTPROLOG;
  -    {
  -        DOMString a;
  -        a.reserve(100);
  -        DOMString b("Test 09");
  -        DOMString c("append");
  -
  -        TASSERT(a.length() == 0);
  -        a.appendData(b);
  -        TASSERT(a.equals(b));
  -        TASSERT(a.equals("Test 09"));
  -        TASSERT(a != b);
   
  -        DOMString d = a.clone();
  -        TASSERT(a.equals("Test 09"));
  -        TASSERT(b.equals("Test 09"));
  -        TASSERT(d.equals("Test 09"));
  -        TASSERT(a != b);
  -        TASSERT(a != d);
  -        TASSERT(b != d);
  -
  -        a.appendData(c);
  -        TASSERT(a.equals("Test 09append"));
  -        TASSERT(b.equals("Test 09"));
  -        TASSERT(c.equals("append"));
  -        TASSERT(d.equals("Test 09"));
  -    };
  -    TESTEPILOG;
   
   
       //
  -    // Test 10   DOMString Operator +
  +    //  Doc03 - Create a small document tree
       //
  -    TESTPROLOG;
  -    {
  -        DOMString a;
  -        DOMString b("DOMString ");
  -        XMLCh     s[] = {0x58, 0x4d, 0x4c, 0x20, 0x00};   // Unicode "XML "
  -        XMLCh     Z   = 0x5A;                             // Unicode 'Z'
  -
  -        a = b + b;
  -        TASSERT(a.equals("DOMString DOMString "));
  -
  -        a = b + s;
  -        TASSERT(a.equals("DOMString XML "));
  -
  -        a = s + b;
  -        TASSERT(a.equals("XML DOMString "));
  -
  -        a = b + Z;
  -        TASSERT(a.equals("DOMString Z"));
   
  -        a = Z + b;
  -        TASSERT(a.equals("ZDOMString "));
  -    }
  -    TESTEPILOG;
  -
  -
  -    //
  -    // Test 11   DOMString::subStringData(unsigned int offset, unsigned int count)
  -    //
  -    TESTPROLOG;
       {
  -        DOMString srcString("This is the source string.");
  -        //                   01234567890123456789012345
  +        IDOM_Document*   doc = IDOM_DOMImplementation::getImplementation()->createDocument();
   
  -        DOMString This = srcString.substringData(0,4);
  -        DOMString is   = srcString.substringData(5,2);
  -        DOMString dot  = srcString.substringData(25,1);
  -        DOMString offEnd = srcString.substringData(19, 1000);
  +        XMLString::transcode("Doc03RootElement", tempStr, 3999);
  +        IDOM_Element*   rootEl = doc->createElement(tempStr);
   
  -        TASSERT(This.equals("This"));
  -        TASSERT(is  .equals("is"));
  -        TASSERT(dot .equals("."));
  -        TASSERT(offEnd.equals("string."));
  +        doc->appendChild(rootEl);
   
  -        EXCEPTION_TEST(srcString.substringData(-1, 10), DOM_DOMException::INDEX_SIZE_ERR);
  -        EXCEPTION_TEST(srcString.substringData(27, 1), DOM_DOMException::INDEX_SIZE_ERR);
  +        XMLString::transcode("Doc03 text stuff", tempStr, 3999);
  +        IDOM_Text*       textNode = doc->createTextNode(tempStr);
   
  -        srcString.insertData(0, "x");   // Changing the source should not alter previously
  -        //   extracted substrings.
  +        rootEl->appendChild(textNode);
   
  -        TASSERT(This.equals("This"));
  -        TASSERT(is  .equals("is"));
  -        TASSERT(dot .equals("."));
  -        TASSERT(offEnd.equals("string."));
  -        TASSERT(srcString.equals("xThis is the source string."));
  +        XMLString::transcode("*", tempStr, 3999);
  +        IDOM_NodeList*    nodeList = doc->getElementsByTagName(tempStr);
  +        delete doc;
  +    };
   
  -    }
  -    TESTEPILOG;
   
   
       //
  -    // Test 12   DOMString::insertData(unsigned int offset, DOMString &src)
  +    //  Attr01
       //
  -    TESTPROLOG;
       {
  -        DOMString aString("This is a string.");
  -        //                 01234567890123456
  -
  -        aString.insertData(17, " Added at end.");
  -        TASSERT(aString.equals("This is a string. Added at end."));
  -
  -        aString = "This is a string.";
  -        EXCEPTION_TEST(aString.insertData(18, "x"), DOM_DOMException::INDEX_SIZE_ERR);
  -        TASSERT(aString.equals("This is a string."));
  -
  -        aString = 0;
  -        aString.reserve(100);
  -        aString.appendData("This is a string.");
  -        aString.insertData(17, " Added at end.");
  -        TASSERT(aString.equals("This is a string. Added at end."));
  +        IDOM_Document*   doc = IDOM_DOMImplementation::getImplementation()->createDocument();
   
  -        aString.insertData(0, "So ");
  -        TASSERT(aString.equals("So This is a string. Added at end."));
  +        XMLString::transcode("RootElement", tempStr, 3999);
  +        IDOM_Element*   rootEl  = doc->createElement(tempStr);
   
  -        aString.insertData(2, "x");
  -        TASSERT(aString.equals("Sox This is a string. Added at end."));
  -
  -        EXCEPTION_TEST(aString.substringData(-1, 1), DOM_DOMException::INDEX_SIZE_ERR);
  -
  -
  -    }
  -    TESTEPILOG;
  -
  -
  -	//
  -	// Minimal test of DOMString::transcode()
  -	//
  -	TESTPROLOG;
  -	{
  -		static char testStr[] = "This is our test string.";
  +        doc->appendChild(rootEl);
  +        {
  +            XMLString::transcode("Attr01", tempStr, 3999);
  +            IDOM_Attr*        attr01  = doc->createAttribute(tempStr);
  +            rootEl->setAttributeNode(attr01);
  +        }
   
  -		DOMString DOMTestStr = testStr;
  -		char *roundTripString = DOMTestStr.transcode();
  -		TASSERT(strcmp(testStr, roundTripString) == 0);
  -		delete [] roundTripString;
   
  -        DOMString domstr2 = DOMString::transcode(testStr);
  -        TASSERT(domstr2.equals(DOMTestStr));
  -	}
  -    TESTEPILOG;
  +        {
  +            XMLString::transcode("Attr01", tempStr, 3999);
  +            IDOM_Attr* attr02 = doc->createAttribute(tempStr);
  +            rootEl->setAttributeNode(attr02);
  +        }
  +        delete doc;
   
  +    };
   
       //
  -    //  String bugs submitted by David Chung
  +    //  Attr02
       //
  -	TESTPROLOG;
  -	{
  -        DOMString greeting("hello");
  -        greeting.appendData(greeting);
  -        TASSERT(greeting.equals("hellohello"));
   
  +    {
  +        IDOM_Document*   doc = IDOM_DOMImplementation::getImplementation()->createDocument();
   
  -        // Test DOMString.insertData, when source string is the same as the destination.
  -        //   Implementation forces creation of a new buffer.
  -        //
  -        DOMString greeting2("Hello              ");
  -        //                   0123456789012345678
  -        greeting2.deleteData(5, 14);    // Leave unused space at end of buffer.
  -        TASSERT(greeting2.equals("Hello"));
  +        XMLString::transcode("RootElement", tempStr, 3999);
  +        IDOM_Element*   rootEl  = doc->createElement(tempStr);
   
  -        greeting2.insertData(2, greeting2);
  -        TASSERT(greeting2.equals("HeHellollo"));
  +        doc->appendChild(rootEl);
   
  +        XMLString::transcode("Attr02", tempStr, 3999);
  +        IDOM_Attr*        attr01  = doc->createAttribute(tempStr);
   
  -        // DOMString.insertData().  Original buffer has space, and is retained.
  -        DOMString greeting3("Hello              ");
  -        //                   0123456789012345678
  -        greeting3.deleteData(5, 14);    // Leave unused space at end of buffer.
  -        TASSERT(greeting3.equals("Hello"));
  +        rootEl->setAttributeNode(attr01);
   
  -        greeting3.insertData(2, "ByeBye");
  -        TASSERT(greeting3.equals("HeByeByello"));
  +        IDOM_Attr*        attr02 = doc->createAttribute(tempStr);
   
  +        rootEl->setAttributeNode(attr02);
  +        delete doc;
       }
  -    TESTEPILOG;
  -
  -
  -    //
  -    //  String bug submitted by Nadav Aharoni
  -    //
  -    TESTPROLOG;
  -    {
  -        char testString[] = "            ";
  -        testString[4] = 0;
  -        testString[5] = 'x';
  -        char *origString = testString;
  -        XMLString::trim(testString);
  -        TASSERT(strlen(testString) == 0);
  -        TASSERT(testString[5] == 'x');
  -
  -        strcpy(testString, "  Hello  ");
  -        XMLString::trim(testString);
  -        TASSERT(strcmp(testString, "Hello") == 0);
  -    }
  -    TESTEPILOG;
  -}
   
   
   
  -//---------------------------------------------------------------------------------------
  -//
  -//   DOMBasicTests    Basic DOM Level 1 tests
  -//
  -//---------------------------------------------------------------------------------------
  -void DOMBasicTests()
  -{
  -        DomMemDebug     entryMemState, exitMemState;
  -    //
  -    //  Test Doc01      Create a new empty document
  -    //
  -    {
  -        //  First precondition, so that lazily created strings do not appear
  -        //  as memory leaks.
  -        DOM_Document    doc;
  -        doc = DOM_Document::createDocument();
  -    }
  -    TESTPROLOG;
  -    {
  -        DOM_Document    doc;
  -        doc = DOM_Document::createDocument();
  -    }
  -    TESTEPILOG
  -
       //
  -    //  Test Doc02      Create one of each kind of node using the
  -    //                  document createXXX methods.
  -    //                  Watch for memory leaks.
  +    //  Attr03
       //
  -    {
  -        //  Do all operations in a preconditioning step, to force the
  -        //  creation of implementation objects that are set up on first use.
  -        //  Don't watch for leaks in this block (no TESTPROLOG / TESTEPILOG)
  -        DOM_Document doc = DOM_Document::createDocument();
  -        DOM_Element     el = doc.createElement("Doc02Element");
  -        DOM_DocumentFragment frag = doc.createDocumentFragment ();
  -        DOM_Text  text = doc.createTextNode("Doc02TextNode");
  -        DOM_Comment comment = doc.createComment("Doc02Comment");
  -        DOM_CDATASection  cdataSec = doc.createCDATASection("Doc02CDataSection");
  -        DOM_DocumentType  docType = doc.createDocumentType("Doc02DocumentType");
  -        DOM_Notation notation = doc.createNotation("Doc02Notation");
  -        DOM_ProcessingInstruction pi = doc.createProcessingInstruction("Doc02PITarget",
  -                                    "Doc02PIData");
  -        DOM_NodeList    nodeList = doc.getElementsByTagName("*");
  -    }
  -
   
  -    TESTPROLOG;
       {
  -        DOM_Document doc = DOM_Document::createDocument();
  -        DOM_Element     el = doc.createElement("Doc02Element");
  -    }
  -    TESTEPILOG;
  +        IDOM_Document*   doc = IDOM_DOMImplementation::getImplementation()->createDocument();
   
  -    TESTPROLOG
  -    {
  -        DOM_Document    doc = DOM_Document::createDocument();
  -        DOM_DocumentFragment frag = doc.createDocumentFragment ();
  -    };
  -    TESTEPILOG
  +        XMLString::transcode("RootElement", tempStr, 3999);
  +        IDOM_Element*   rootEl  = doc->createElement(tempStr);
   
  +        doc->appendChild(rootEl);
   
  -    TESTPROLOG;
  -    {
  -        DOM_Document doc = DOM_Document::createDocument();
  -        DOM_Element     el = doc.createElement("Doc02Element");
  -    }
  -    TESTEPILOG;
  +        XMLString::transcode("Attr03", tempStr, 3999);
  +        IDOM_Attr*        attr01  = doc->createAttribute(tempStr);
   
  -    TESTPROLOG;
  -    {
  -        DOM_Document doc = DOM_Document::createDocument();
  -        DOM_Text  text = doc.createTextNode("Doc02TextNode");
  -    }
  -    TESTEPILOG;
  +        rootEl->setAttributeNode(attr01);
   
  -    TESTPROLOG;
  -    {
  -        DOM_Document doc = DOM_Document::createDocument();
  -        DOM_Comment comment = doc.createComment("Doc02Comment");
  -    }
  -    TESTEPILOG;
  +        XMLString::transcode("Attr03Value1", tempStr, 3999);
  +        attr01->setValue(tempStr);
   
  -    TESTPROLOG;
  -    {
  -        DOM_Document doc = DOM_Document::createDocument();
  -        DOM_CDATASection  cdataSec = doc.createCDATASection("Doc02CDataSection");
  +        XMLString::transcode("Attr03Value2", tempStr, 3999);
  +        attr01->setValue(tempStr);
  +        delete doc;
       }
  -    TESTEPILOG;
   
   
  -    TESTPROLOG;
  -    {
  -        DOM_Document doc = DOM_Document::createDocument();
  -        DOM_DocumentType  docType = doc.createDocumentType("Doc02DocumentType");
  -    }
  -    TESTEPILOG;
   
  +    //
  +    //  Attr04
  +    //
   
  -    TESTPROLOG;
       {
  -        DOM_Document doc = DOM_Document::createDocument();
  -        DOM_Notation notation = doc.createNotation("Doc02Notation");
  -    }
  -    TESTEPILOG;
  +        IDOM_Document*   doc = IDOM_DOMImplementation::getImplementation()->createDocument();
   
  +        XMLString::transcode("RootElement", tempStr, 3999);
  +        IDOM_Element*   rootEl  = doc->createElement(tempStr);
   
  -    TESTPROLOG;
  -    {
  -        DOM_Document doc = DOM_Document::createDocument();
  -        DOM_ProcessingInstruction pi = doc.createProcessingInstruction("Doc02PITarget",
  -                                    "Doc02PIData");
  -    }
  -    TESTEPILOG;
  +        doc->appendChild(rootEl);
   
  -    TESTPROLOG;
  -    {
  -        DOM_Document doc = DOM_Document::createDocument();
  -        DOM_Attr  attribute = doc.createAttribute("Doc02Attribute");
  -    }
  -    TESTEPILOG;
  +        XMLString::transcode("Attr04", tempStr, 3999);
  +        IDOM_Attr*        attr01  = doc->createAttribute(tempStr);
   
  +        rootEl->setAttributeNode(attr01);
   
  -    TESTPROLOG;
  -    {
  -        DOM_Document doc = DOM_Document::createDocument();
  -        DOM_EntityReference  er = doc.createEntityReference("Doc02EntityReference");
  -    }
  -    TESTEPILOG;
  +        XMLString::transcode("Attr04Value1", tempStr, 3999);
  +        attr01->setValue(tempStr);
   
  -    TESTPROLOG;
  -    {
  -        DOM_Document doc = DOM_Document::createDocument();
  -        DOM_NodeList    nodeList = doc.getElementsByTagName("*");
  +        IDOM_Node* value = attr01->getFirstChild();
  +        delete doc;
       }
  -    TESTEPILOG;
   
   
  -    //
  -    //  Doc03 - Create a small document tree
  -    //
  -    TESTPROLOG;
  -    {
  -        DOM_Document    doc = DOM_Document::createDocument();
  -        DOM_Element     rootEl = doc.createElement("Doc03RootElement");
  -        doc.appendChild(rootEl);
  -        DOM_Text        textNode = doc.createTextNode("Doc03 text stuff");
  -        rootEl.appendChild(textNode);
  -
  -        DOM_NodeList    nodeList = doc.getElementsByTagName("*");
  -    };
  -    TESTEPILOG;
   
   
       //
  -    //  Attr01
  +    //  Text01
       //
  -    {
  -        DOM_Document    doc = DOM_Document::createDocument();
  -        DOM_Element     rootEl  = doc.createElement("RootElement");
  -        doc.appendChild(rootEl);
  -        {
  -            DOM_Attr        attr01  = doc.createAttribute("Attr01");
  -            rootEl.setAttributeNode(attr01);
  -        }
   
  -        TESTPROLOG;
  -        {
  -            DOM_Attr attr02 = doc.createAttribute("Attr01");
  -            rootEl.setAttributeNode(attr02);
  -        }
  -        TESTEPILOG
  -    };
  -
  -    //
  -    //  Attr02
  -    //
  -    TESTPROLOG;
       {
  -        DOM_Document    doc = DOM_Document::createDocument();
  -        DOM_Element     rootEl  = doc.createElement("RootElement");
  -        doc.appendChild(rootEl);
  -        DOM_Attr        attr01  = doc.createAttribute("Attr02");
  -        rootEl.setAttributeNode(attr01);
  -        DOM_Attr        attr02 = doc.createAttribute("Attr02");
  -        rootEl.setAttributeNode(attr02);
  -    }
  -    TESTEPILOG;
  +        IDOM_Document*   doc = IDOM_DOMImplementation::getImplementation()->createDocument();
   
  +        XMLString::transcode("RootElement", tempStr, 3999);
  +        IDOM_Element*   rootEl  = doc->createElement(tempStr);
   
  -    //
  -    //  Attr03
  -    //
  -    TESTPROLOG;
  -    {
  -        DOM_Document    doc = DOM_Document::createDocument();
  -        DOM_Element     rootEl  = doc.createElement("RootElement");
  -        doc.appendChild(rootEl);
  -        DOM_Attr        attr01  = doc.createAttribute("Attr03");
  -        rootEl.setAttributeNode(attr01);
  -
  -        attr01.setValue("Attr03Value1");
  -        attr01.setValue("Attr03Value2");
  -    }
  -    TESTEPILOG;
  +        doc->appendChild(rootEl);
   
  +        XMLString::transcode("Hello Goodbye", tempStr, 3999);
  +        IDOM_Text*        txt1 = doc->createTextNode(tempStr);
  +        rootEl->appendChild(txt1);
   
  -    //
  -    //  Attr04
  -    //
  -    TESTPROLOG;
  -    {
  -        DOM_Document    doc = DOM_Document::createDocument();
  -        DOM_Element     rootEl  = doc.createElement("RootElement");
  -        doc.appendChild(rootEl);
  -        DOM_Attr        attr01  = doc.createAttribute("Attr04");
  -        rootEl.setAttributeNode(attr01);
  +        txt1->splitText(6);
  +        rootEl->normalize();
  +        delete doc;
   
  -        attr01.setValue("Attr04Value1");
  -        DOM_Node value = attr01.getFirstChild();
       }
  -    TESTEPILOG;
   
   
   
       //
  -    //  Text01
  +    //  Notation01
       //
  -    TESTPROLOG;
  +
       {
  -        DOM_Document    doc = DOM_Document::createDocument();
  -        DOM_Element     rootEl  = doc.createElement("RootElement");
  -        doc.appendChild(rootEl);
  +        IDOM_Document*       doc = IDOM_DOMImplementation::getImplementation()->createDocument();
   
  -        DOMString       tmp("Hello Goodbye");
  -        DOM_Text        txt1 = doc.createTextNode(tmp);
  -		tmp = 0;
  -        rootEl.appendChild(txt1);
  +        XMLString::transcode("DocType_for_Notation01", tempStr, 3999);
  +        IDOM_DocumentType*   dt  = doc->createDocumentType(tempStr);
   
  -        txt1.splitText(6);
  -        rootEl.normalize();
  +        doc->appendChild(dt);
   
  -    }
  -    TESTEPILOG;
   
  +        IDOM_NamedNodeMap* notationMap = dt->getNotations();
   
  -    //
  -    //  Notation01
  -    //
  -    TESTPROLOG;
  -    {
  -        DOM_Document        doc = DOM_Document::createDocument();
  -        DOM_DocumentType    dt  = doc.createDocumentType("DocType_for_Notation01");
  -        doc.appendChild(dt);
  +        XMLString::transcode("Notation01", tempStr, 3999);
  +        IDOM_Notation*    nt1 = doc->createNotation(tempStr);
   
  +        notationMap->setNamedItem (nt1);
   
  -        DOM_NamedNodeMap notationMap = dt.getNotations();
  -        DOM_Notation    nt1 = doc.createNotation("Notation01");
  -        notationMap.setNamedItem (nt1);
  -		DOM_Node  abc1 = notationMap.getNamedItem("Notation01");
  -        DOM_Notation    nt2 = (DOM_Notation &) abc1;
  +        IDOM_Node*  abc1 = notationMap->getNamedItem(tempStr);
  +
  +        IDOM_Notation*    nt2 = (IDOM_Notation*) abc1;
           TASSERT(nt1==nt2);
  -        nt2 = DOM_Notation();
  +        nt2 = 0;
           nt1 = 0;
  -		DOM_Node abc6 = notationMap.getNamedItem("Notation01");
  -        nt2 = (DOM_Notation &) abc6;
   
  +        IDOM_Node* abc6 = notationMap->getNamedItem(tempStr);
   
  +        nt2 = (IDOM_Notation*) abc6;
  +        delete doc;
       }
  -    TESTEPILOG;
  +
   
   
       //
       //  NamedNodeMap01 - comparison operators.
       //
  -    TESTPROLOG;
  +
       {
  -        DOM_NamedNodeMap    nnm;
  +        IDOM_NamedNodeMap*    nnm = 0;
           TASSERT(nnm == 0);
   
  -        DOM_Document        doc = DOM_Document::createDocument();
  -        nnm = doc.getAttributes();    // Should be null, because node type
  +        IDOM_Document*       doc = IDOM_DOMImplementation::getImplementation()->createDocument();
  +        nnm = doc->getAttributes();    // Should be null, because node type
                                         //   is not Element.
           TASSERT(nnm == 0);
           TASSERT(!(nnm != 0));
   
  -        DOM_Element el = doc.createElement("NamedNodeMap01");
  -        DOM_NamedNodeMap nnm2 = el.getAttributes();    // Should be an empty, but non-null map.
  +        XMLString::transcode("NamedNodeMap01", tempStr, 3999);
  +        IDOM_Element* el = doc->createElement(tempStr);
  +
  +        IDOM_NamedNodeMap* nnm2 = el->getAttributes();    // Should be an empty, but non-null map.
           TASSERT(nnm2 != 0);
           TASSERT(nnm != nnm2);
           nnm = nnm2;
           TASSERT(nnm == nnm2);
  +        delete doc;
       }
  -    TESTEPILOG;
  +
   
   
       //
       //  importNode quick test
       //
  -    TESTPROLOG
  +
       {
  -        DOM_Document    doc1 = DOM_Document::createDocument();
  -        DOM_Document    doc2 = DOM_Document::createDocument();
  +        IDOM_Document*   doc1 = IDOM_DOMImplementation::getImplementation()->createDocument();
  +        IDOM_Document*   doc2 = IDOM_DOMImplementation::getImplementation()->createDocument();
  +
  +        XMLString::transcode("abc", tempStr, 3999);
  +        IDOM_Element*   el1  = doc1->createElement(tempStr);
  +
  +        doc1->appendChild(el1);
  +        TASSERT(el1->getParentNode() != 0);
  +        IDOM_Node*        el2  = doc2->importNode(el1, true);
  +        TASSERT(el2->getParentNode() == 0);
  +        const XMLCh*       tagName = el2->getNodeName();
   
  -        DOM_Element     el1  = doc1.createElement("abc");
  -        doc1.appendChild(el1);
  -        TASSERT(el1.getParentNode() != 0);
  -        DOM_Node        el2  = doc2.importNode(el1, true);
  -        TASSERT(el2.getParentNode() == 0);
  -        DOMString       tagName = el2.getNodeName();
  -        TASSERT(tagName.equals("abc"));
  -        TASSERT(el2.getOwnerDocument() == doc2);
  +        TASSERT(!XMLString::compareString(tagName, tempStr));
  +
  +        TASSERT(el2->getOwnerDocument() == doc2);
           TASSERT(doc1 != doc2);
  +        delete doc1;
  +        delete doc2;
       }
  -    TESTEPILOG;
  +
   
       //
       //  getLength() tests.  Both Node CharacterData and NodeList implement
  -    //                  getLength().  Early versions of the DOM had a clash
  +    //                  getLength().  Early versions of the IDOM had a clash
       //                  between the two, originating in the implementation class
       //                  hirearchy, which has NodeList as a (distant) base class
       //                  of CharacterData.  This is a regression test to verify
       //                  that the problem stays fixed.
       //
  -    TESTPROLOG
  +
       {
  -        DOM_Document     doc = DOM_Document::createDocument();
  -        DOM_Text          tx = doc.createTextNode("Hello");
  -        DOM_Element       el = doc.createElement("abc");
  -        el.appendChild(tx);
  +        IDOM_Document*    doc = IDOM_DOMImplementation::getImplementation()->createDocument();
   
  -        int     textLength = tx.getLength();
  +        XMLString::transcode("Hello", tempStr, 3999);
  +        IDOM_Text*          tx = doc->createTextNode(tempStr);
  +
  +        XMLString::transcode("abc", tempStr, 3999);
  +        IDOM_Element*     el = doc->createElement(tempStr);
  +
  +        el->appendChild(tx);
  +
  +        int     textLength = tx->getLength();
           TASSERT(textLength == 5);
   
  -        DOM_NodeList      nl = tx.getChildNodes();
  -        int      nodeListLen = nl.getLength();
  +        IDOM_NodeList*      nl = tx->getChildNodes();
  +        int      nodeListLen = nl->getLength();
           TASSERT(nodeListLen == 0);
   
  -        nl = el.getChildNodes();
  -        nodeListLen = nl.getLength();
  +        nl = el->getChildNodes();
  +        nodeListLen = nl->getLength();
           TASSERT(nodeListLen == 1);
  +        delete doc;
       }
   
   
       //
       //  NodeList - comparison operators, basic operation.
       //
  -    TESTPROLOG;
  +
       {
  -        DOM_NodeList    nl;
  -        DOM_NodeList    nl2;
  +        IDOM_NodeList*    nl = 0;
  +        IDOM_NodeList*    nl2 = 0;
           TASSERT(nl == 0);
           TASSERT(!(nl != 0));
           TASSERT(nl == nl2);
   
  -        DOM_Document        doc = DOM_Document::createDocument();
  -        nl = doc.getChildNodes();    // Should be non-null, but empty
  +        IDOM_Document*       doc = IDOM_DOMImplementation::getImplementation()->createDocument();
  +        nl = doc->getChildNodes();    // Should be non-null, but empty
   
           TASSERT(nl != 0);
  -        int len = nl.getLength();
  +        int len = nl->getLength();
           TASSERT(len == 0);
   
  -        DOM_Element el = doc.createElement("NodeList01");
  -        doc.appendChild(el);
  -        len = nl.getLength();
  +        XMLString::transcode("NodeList01", tempStr, 3999);
  +        IDOM_Element* el = doc->createElement(tempStr);
  +
  +        doc->appendChild(el);
  +        len = nl->getLength();
           TASSERT(len == 1);
           TASSERT(nl != nl2);
           nl2 = nl;
           TASSERT(nl == nl2);
  +        delete doc;
       }
  -    TESTEPILOG;
  +
   
   
   
       //
       //  Name validity checking.
       //
  -    TESTPROLOG;
  +
       {
  -         DOM_Document        doc = DOM_Document::createDocument();
  +         IDOM_Document*       doc = IDOM_DOMImplementation::getImplementation()->createDocument();
            try
            {
  -             DOM_Element el = doc.createElement("!@@ bad element name");
  +             XMLString::transcode("!@@ bad element name", tempStr, 3999);
  +             IDOM_Element* el = doc->createElement(tempStr);
                TASSERT(false);  // Exception above should prevent us reaching here.
            }
  -         catch ( DOM_DOMException &e)
  +         catch ( IDOM_DOMException e)
            {
  -             TASSERT(e.code == DOM_DOMException::INVALID_CHARACTER_ERR);
  +             TASSERT(e.code == IDOM_DOMException::INVALID_CHARACTER_ERR);
            }
            catch (...)
            {
                TASSERT(false);  // Wrong exception thrown.
            }
  +         delete doc;
       }
  -    TESTEPILOG;
  +
   
   
       //
       //  Assignment ops return value
       //
  -    TESTPROLOG;
  +
       {
  -        DOM_Document        doc = DOM_Document::createDocument();
  -        DOM_Element el = doc.createElement("NodeList01");
  -        doc.appendChild(el);
  +        IDOM_Document*       doc = IDOM_DOMImplementation::getImplementation()->createDocument();
  +
  +        XMLString::transcode("NodeList01", tempStr, 3999);
  +        IDOM_Element* el = doc->createElement(tempStr);
  +
  +        doc->appendChild(el);
   
  -        DOM_Element n1, n2, n3;
  +        IDOM_Element* n1, *n2, *n3;
   
           n1 = n2 = n3 = el;
           TASSERT(n1 == n2);
  @@ -920,8 +519,9 @@
           TASSERT(n1 != 0);
           n1 = n2 = n3 = 0;
           TASSERT(n1 == 0);
  +        delete doc;
       }
  -    TESTEPILOG;
  +
   
   
       //
  @@ -929,54 +529,70 @@
       //  bug in attributes of cloned nodes that occured when the "owned" flag
       //  was not set in the clone.
       //
  -    TESTPROLOG;
  +
       {
  -        DOM_Document    doc = DOM_Document::createDocument();
  -        DOM_Element     root = doc.createElement("CTestRoot");
  -        root.setAttribute("CTestAttr", "CTestAttrValue");
  -
  -        DOMString s = root.getAttribute("CTestAttr");
  -        TASSERT(s.equals("CTestAttrValue"));
  -
  -        DOM_Node abc2 = root.cloneNode(true);
  -        DOM_Element     cloned = (DOM_Element &) abc2;
  -        DOM_Attr a = cloned.getAttributeNode("CTestAttr");
  +        IDOM_Document*   doc = IDOM_DOMImplementation::getImplementation()->createDocument();
  +
  +        XMLString::transcode("CTestRoot", tempStr, 3999);
  +        IDOM_Element*   root = doc->createElement(tempStr);
  +
  +        XMLString::transcode("CTestAttr", tempStr, 3999);
  +        XMLString::transcode("CTestAttrValue", tempStr2, 3999);
  +        root->setAttribute(tempStr, tempStr2);
  +
  +        const XMLCh* s = root->getAttribute(tempStr);
  +        TASSERT(!XMLString::compareString(s, tempStr2));
  +
  +        IDOM_Node* abc2 = root->cloneNode(true);
  +        IDOM_Element*   cloned = (IDOM_Element*) abc2;
  +        IDOM_Attr* a = cloned->getAttributeNode(tempStr);
           TASSERT(a != 0);
  -        s = a.getValue();
  -        TASSERT(s.equals("CTestAttrValue"));
  +        s = a->getValue();
  +        TASSERT(!XMLString::compareString(s, tempStr2));
           a = 0;
   
  -        a = cloned.getAttributeNode("CTestAttr");
  +        a = cloned->getAttributeNode(tempStr);
           TASSERT(a != 0);
  -        s = a.getValue();
  -        TASSERT(s.equals("CTestAttrValue"));
  +        s = a->getValue();
  +        TASSERT(!XMLString::compareString(s, tempStr2));
  +        delete doc;
   
       }
  -    TESTEPILOG;
  +
   
   
       //
       //  splitText()
       //     Regression test for a bug from Tinny Ng
       //
  -    TESTPROLOG;
  +
       {
  -        DOM_Document doc;
  -        doc = DOM_Document::createDocument();
  -        DOM_Text tn, tn1, tn2;
  -        tn = doc.createTextNode ("0123456789");
  +        IDOM_Document* doc;
  +        doc = IDOM_DOMImplementation::getImplementation()->createDocument();
  +        IDOM_Text* tn, *tn1, *tn2;
  +
  +        XMLString::transcode("0123456789", tempStr, 3999);
  +        tn = doc->createTextNode (tempStr);
  +
  +        tn1 = tn->splitText(5);
  +
  +        XMLString::transcode("01234", tempStr, 3999);
  +        TASSERT(!XMLString::compareString(tn->getNodeValue(), tempStr));
   
  -        tn1 = tn.splitText(5);
  -        TASSERT( tn.getNodeValue().equals("01234"));
  -        TASSERT(tn1.getNodeValue().equals("56789"));
  +        XMLString::transcode("56789", tempStr2, 3999);
  +        TASSERT(!XMLString::compareString(tn1->getNodeValue(), tempStr2));
   
  -        tn2 = tn.splitText(5);
  -        TASSERT( tn.getNodeValue().equals("01234"));
  -        TASSERT(tn2.getNodeValue().equals(""));
   
  -        EXCEPTION_TEST(tn.splitText(6), DOM_DOMException::INDEX_SIZE_ERR);
  +        tn2 = tn->splitText(5);
  +        TASSERT(!XMLString::compareString(tn->getNodeValue(), tempStr));
  +
  +        XMLString::transcode("", tempStr2, 3999);
  +        TASSERT(!XMLString::compareString(tn2->getNodeValue(), tempStr2));
  +
  +        EXCEPTION_TEST(tn->splitText(6), IDOM_DOMException::INDEX_SIZE_ERR);
  +        delete doc;
       }
  -    TESTEPILOG;
  +
   
   
   }
  @@ -984,17 +600,14 @@
   
   //---------------------------------------------------------------------------------------
   //
  -//   DOMNSTests    DOM Name Space tests
  +//   IDOMNSTests    IDOM Name Space tests
   //
   //---------------------------------------------------------------------------------------
  -void DOMNSTests()
  +void IDOMNSTests()
   {
  -        DomMemDebug     entryMemState, exitMemState;
  -
  -
   
       //
  -    //  DOM Level 2 tests.  These should be split out as a separate test.
  +    //  IDOM Level 2 tests.  These should be split out as a separate test.
       //
   
   
  @@ -1002,204 +615,329 @@
       // hasFeature.  The set of supported options tested here is for Xerces 1.1
       //              Note: because the implementation lazily creates some of the comprison
       //                    strings within the implementation, this test must be pre-flighted
  -    //                    outside of the TESPROLOG/TESTEPILOG macros to avoid spurious
  +    //                    outside of the TESPROLOG/ macros to avoid spurious
       //                    reports of memory leaks.
       //
       // Also test the case-insensitive
       //
       {
  -        DOM_DOMImplementation  impl;
  -        TASSERT(impl.hasFeature("XmL", "2.0")    == true);
  -        TASSERT(impl.hasFeature("xML", "")       == true);
  -        //  We also support 1.0
  -        TASSERT(impl.hasFeature("XMl", "1.0")    == true);
  -        TASSERT(impl.hasFeature("xMl", "3.0")    == false);
  -        TASSERT(impl.hasFeature("TrAveRsal", "") == true);
  +
  +        IDOM_DOMImplementation*  impl = IDOM_DOMImplementation::getImplementation();
  +        XMLString::transcode("1.0", tempStr, 3999);
  +        XMLString::transcode("2.0", tempStr2, 3999);
  +        XMLString::transcode("3.0", tempStr3, 3999);
  +        XMLString::transcode("", tempStr4, 3999);
  +
  +        XMLString::transcode("XmL", tempStr5, 3999);
  +        TASSERT(impl->hasFeature(tempStr5, tempStr2) == true);
  +
  +        XMLString::transcode("xML", tempStr5, 3999);
  +        TASSERT(impl->hasFeature(tempStr5, tempStr4) == true);
  +
  +        XMLString::transcode("XMl", tempStr5, 3999);
  +        TASSERT(impl->hasFeature(tempStr5, tempStr)  == true);
  +
  +        XMLString::transcode("xMl", tempStr5, 3999);
  +        TASSERT(impl->hasFeature(tempStr5, tempStr3)  == false);
  +
  +        XMLString::transcode("TrAveRsal", tempStr5, 3999);
  +        TASSERT(impl->hasFeature(tempStr5, tempStr4)  == true);
       }
   
   
  -    TESTPROLOG;
  -    {
  -        DOM_DOMImplementation  impl;
  -        TASSERT(impl.hasFeature("XML", "")       == true);
  -        TASSERT(impl.hasFeature("XML", "1.0")    == true);
  -        TASSERT(impl.hasFeature("XML", "2.0")    == true);
  -        TASSERT(impl.hasFeature("XML", "3.0")    == false);
  -
  -        TASSERT(impl.hasFeature("Core", "")       == true);
  -        TASSERT(impl.hasFeature("coRe", "1.0")    == true);
  -        TASSERT(impl.hasFeature("core", "2.0")    == true);
  -        TASSERT(impl.hasFeature("cORe", "3.0")    == false);
  -
  -        TASSERT(impl.hasFeature("Traversal", "") == true);
  -        TASSERT(impl.hasFeature("traversal", "1.0") == false);
  -        TASSERT(impl.hasFeature("TraVersal", "2.0") == true);
  -
  -        TASSERT(impl.hasFeature("Range", "")        == true);
  -        TASSERT(impl.hasFeature("raNge", "1.0")     == false);
  -        TASSERT(impl.hasFeature("RaNge", "2.0")     == true);
  -
  -
  -        TASSERT(impl.hasFeature("HTML", "")           == false);
  -        TASSERT(impl.hasFeature("Views", "")          == false);
  -        TASSERT(impl.hasFeature("StyleSheets", "")    == false);
  -        TASSERT(impl.hasFeature("CSS", "")            == false);
  -        TASSERT(impl.hasFeature("CSS2", "")           == false);
  -        TASSERT(impl.hasFeature("Events", "")         == false);
  -        TASSERT(impl.hasFeature("UIEvents", "")       == false);
  -        TASSERT(impl.hasFeature("MouseEvents", "")    == false);
  -        TASSERT(impl.hasFeature("MutationEvents", "") == false);
  -        TASSERT(impl.hasFeature("HTMLEvents", "")     == false);
  +
  +    {
  +        IDOM_DOMImplementation*  impl = IDOM_DOMImplementation::getImplementation();
  +        XMLString::transcode("1.0", tempStr, 3999);
  +        XMLString::transcode("2.0", tempStr2, 3999);
  +        XMLString::transcode("3.0", tempStr3, 3999);
  +        XMLString::transcode("", tempStr4, 3999);
  +
  +        XMLString::transcode("XmL", tempStr5, 3999);
  +        TASSERT(impl->hasFeature(tempStr5, tempStr4)   == true);
  +        TASSERT(impl->hasFeature(tempStr5, tempStr)    == true);
  +        TASSERT(impl->hasFeature(tempStr5, tempStr2)   == true);
  +        TASSERT(impl->hasFeature(tempStr5, tempStr3)   == false);
  +
  +        XMLString::transcode("Core", tempStr5, 3999);
  +        TASSERT(impl->hasFeature(tempStr5, tempStr4)   == true);
  +
  +        XMLString::transcode("coRe", tempStr5, 3999);
  +        TASSERT(impl->hasFeature(tempStr5, tempStr)    == true);
  +
  +        XMLString::transcode("core", tempStr5, 3999);
  +        TASSERT(impl->hasFeature(tempStr5, tempStr2)   == true);
  +
  +        XMLString::transcode("cORe", tempStr5, 3999);
  +        TASSERT(impl->hasFeature(tempStr5, tempStr3)   == false);
  +
  +        XMLString::transcode("Traversal", tempStr5, 3999);
  +        TASSERT(impl->hasFeature(tempStr5, tempStr4)   == true);
  +
  +        XMLString::transcode("traversal", tempStr5, 3999);
  +        TASSERT(impl->hasFeature(tempStr5, tempStr)    == false);
  +
  +        XMLString::transcode("TraVersal", tempStr5, 3999);
  +        TASSERT(impl->hasFeature(tempStr5, tempStr2)   == true);
  +
  +        XMLString::transcode("Range", tempStr5, 3999);
  +        TASSERT(impl->hasFeature(tempStr5, tempStr4)   == true);
  +
  +        XMLString::transcode("raNge", tempStr5, 3999);
  +        TASSERT(impl->hasFeature(tempStr5, tempStr)    == false);
  +
  +        XMLString::transcode("RaNge", tempStr5, 3999);
  +        TASSERT(impl->hasFeature(tempStr5, tempStr2)   == true);
  +
  +
  +        XMLString::transcode("HTML", tempStr5, 3999);
  +        TASSERT(impl->hasFeature(tempStr5, tempStr4)   == false);
  +
  +        XMLString::transcode("Views", tempStr5, 3999);
  +        TASSERT(impl->hasFeature(tempStr5, tempStr4)   == false);
  +
  +        XMLString::transcode("StyleSheets", tempStr5, 3999);
  +        TASSERT(impl->hasFeature(tempStr5, tempStr4)   == false);
  +
  +        XMLString::transcode("CSS", tempStr5, 3999);
  +        TASSERT(impl->hasFeature(tempStr5, tempStr4)   == false);
  +
  +        XMLString::transcode("CSS2", tempStr5, 3999);
  +        TASSERT(impl->hasFeature(tempStr5, tempStr4)   == false);
  +
  +        XMLString::transcode("Events", tempStr5, 3999);
  +        TASSERT(impl->hasFeature(tempStr5, tempStr4)   == false);
  +
  +        XMLString::transcode("UIEvents", tempStr5, 3999);
  +        TASSERT(impl->hasFeature(tempStr5, tempStr4)   == false);
  +
  +        XMLString::transcode("MouseEvents", tempStr5, 3999);
  +        TASSERT(impl->hasFeature(tempStr5, tempStr4)   == false);
  +
  +        XMLString::transcode("MutationEvents", tempStr5, 3999);
  +        TASSERT(impl->hasFeature(tempStr5, tempStr4)   == false);
  +
  +        XMLString::transcode("HTMLEvents", tempStr5, 3999);
  +        TASSERT(impl->hasFeature(tempStr5, tempStr4)   == false);
       }
  -    TESTEPILOG;
  +
   
   
       //
       // isSupported test (similar to hasFeature)
       //
  -    TESTPROLOG;
  +
       {
  -        DOM_Document doc;
  -        doc = DOM_Document::createDocument();
  -        TASSERT(doc.isSupported("XML", "")       == true);
  -        TASSERT(doc.isSupported("XML", "1.0")    == true);
  -        TASSERT(doc.isSupported("XML", "2.0")    == true);
  -        TASSERT(doc.isSupported("XML", "3.0")    == false);
  -
  -        TASSERT(doc.isSupported("Core", "")       == true);
  -        TASSERT(doc.isSupported("coRe", "1.0")    == true);
  -        TASSERT(doc.isSupported("core", "2.0")    == true);
  -        TASSERT(doc.isSupported("cORe", "3.0")    == false);
  -
  -        TASSERT(doc.isSupported("Traversal", "") == true);
  -        TASSERT(doc.isSupported("traversal", "1.0") == false);
  -        TASSERT(doc.isSupported("TraVersal", "2.0") == true);
  -
  -        TASSERT(doc.isSupported("Range", "")        == true);
  -        TASSERT(doc.isSupported("raNge", "1.0")     == false);
  -        TASSERT(doc.isSupported("RaNge", "2.0")     == true);
  -
  -
  -        TASSERT(doc.isSupported("HTML", "")           == false);
  -        TASSERT(doc.isSupported("Views", "")          == false);
  -        TASSERT(doc.isSupported("StyleSheets", "")    == false);
  -        TASSERT(doc.isSupported("CSS", "")            == false);
  -        TASSERT(doc.isSupported("CSS2", "")           == false);
  -        TASSERT(doc.isSupported("Events", "")         == false);
  -        TASSERT(doc.isSupported("UIEvents", "")       == false);
  -        TASSERT(doc.isSupported("MouseEvents", "")    == false);
  -        TASSERT(doc.isSupported("MutationEvents", "") == false);
  -        TASSERT(doc.isSupported("HTMLEvents", "")     == false);
  +        IDOM_Document* doc;
  +        doc = IDOM_DOMImplementation::getImplementation()->createDocument();
  +
  +        XMLString::transcode("1.0", tempStr, 3999);
  +        XMLString::transcode("2.0", tempStr2, 3999);
  +        XMLString::transcode("3.0", tempStr3, 3999);
  +        XMLString::transcode("", tempStr4, 3999);
  +
  +        XMLString::transcode("XmL", tempStr5, 3999);
  +        TASSERT(doc->isSupported(tempStr5, tempStr4)   == true);
  +        TASSERT(doc->isSupported(tempStr5, tempStr)    == true);
  +        TASSERT(doc->isSupported(tempStr5, tempStr2)   == true);
  +        TASSERT(doc->isSupported(tempStr5, tempStr3)   == false);
  +
  +        XMLString::transcode("Core", tempStr5, 3999);
  +        TASSERT(doc->isSupported(tempStr5, tempStr4)   == true);
  +
  +        XMLString::transcode("coRe", tempStr5, 3999);
  +        TASSERT(doc->isSupported(tempStr5, tempStr)    == true);
  +
  +        XMLString::transcode("core", tempStr5, 3999);
  +        TASSERT(doc->isSupported(tempStr5, tempStr2)   == true);
  +
  +        XMLString::transcode("cORe", tempStr5, 3999);
  +        TASSERT(doc->isSupported(tempStr5, tempStr3)   == false);
  +
  +        XMLString::transcode("Traversal", tempStr5, 3999);
  +        TASSERT(doc->isSupported(tempStr5, tempStr4)   == true);
  +
  +        XMLString::transcode("traversal", tempStr5, 3999);
  +        TASSERT(doc->isSupported(tempStr5, tempStr)    == false);
  +
  +        XMLString::transcode("TraVersal", tempStr5, 3999);
  +        TASSERT(doc->isSupported(tempStr5, tempStr2)   == true);
  +
  +        XMLString::transcode("Range", tempStr5, 3999);
  +        TASSERT(doc->isSupported(tempStr5, tempStr4)   == true);
  +
  +        XMLString::transcode("raNge", tempStr5, 3999);
  +        TASSERT(doc->isSupported(tempStr5, tempStr)    == false);
  +
  +        XMLString::transcode("RaNge", tempStr5, 3999);
  +        TASSERT(doc->isSupported(tempStr5, tempStr2)   == true);
  +
  +
  +        XMLString::transcode("HTML", tempStr5, 3999);
  +        TASSERT(doc->isSupported(tempStr5, tempStr4)   == false);
  +
  +        XMLString::transcode("Views", tempStr5, 3999);
  +        TASSERT(doc->isSupported(tempStr5, tempStr4)   == false);
  +
  +        XMLString::transcode("StyleSheets", tempStr5, 3999);
  +        TASSERT(doc->isSupported(tempStr5, tempStr4)   == false);
  +
  +        XMLString::transcode("CSS", tempStr5, 3999);
  +        TASSERT(doc->isSupported(tempStr5, tempStr4)   == false);
  +
  +        XMLString::transcode("CSS2", tempStr5, 3999);
  +        TASSERT(doc->isSupported(tempStr5, tempStr4)   == false);
  +
  +        XMLString::transcode("Events", tempStr5, 3999);
  +        TASSERT(doc->isSupported(tempStr5, tempStr4)   == false);
  +
  +        XMLString::transcode("UIEvents", tempStr5, 3999);
  +        TASSERT(doc->isSupported(tempStr5, tempStr4)   == false);
  +
  +        XMLString::transcode("MouseEvents", tempStr5, 3999);
  +        TASSERT(doc->isSupported(tempStr5, tempStr4)   == false);
  +
  +        XMLString::transcode("MutationEvents", tempStr5, 3999);
  +        TASSERT(doc->isSupported(tempStr5, tempStr4)   == false);
  +
  +        XMLString::transcode("HTMLEvents", tempStr5, 3999);
  +        TASSERT(doc->isSupported(tempStr5, tempStr4)   == false);
  +        delete doc;
       }
  -    TESTEPILOG;
  +
   
       //
       // CreateDocumentType
       //
  -    TESTPROLOG;
  +
       {
  -        DOM_DOMImplementation impl;
  +        IDOM_DOMImplementation*  impl = IDOM_DOMImplementation::getImplementation();
   
  -        DOMString qName = "foo:docName";
  -        DOMString pubId = "pubId";
  -        DOMString sysId = "http://sysId";
  +        XMLString::transcode("foo:docName", tempStr, 3999);
  +        XMLString::transcode("pubId", tempStr2, 3999);
  +        XMLString::transcode( "http://sysId", tempStr3, 3999);
   
  -        DOM_DocumentType dt = impl.createDocumentType(qName, pubId, sysId);
  +        IDOM_DocumentType* dt = impl->createDocumentType(tempStr, tempStr2, tempStr3);
   
           TASSERT(dt != 0);
  -        TASSERT(dt.getNodeType() == DOM_Node::DOCUMENT_TYPE_NODE);
  -        TASSERT(dt.getNodeName().equals(qName));
  -        TASSERT(dt.getNamespaceURI().equals(0));
  -        TASSERT(dt.getPrefix().equals(0));
  -        TASSERT(dt.getLocalName().equals(0));
  -        TASSERT(dt.getPublicId().equals(pubId));
  -        TASSERT(dt.getSystemId().equals(sysId));
  -        TASSERT(dt.getInternalSubset().equals(0));
  -        TASSERT(dt.getOwnerDocument() == 0);
  -
  -        DOM_NamedNodeMap nnm = dt.getEntities();
  -        TASSERT(nnm.getLength() == 0);
  -        nnm = dt.getNotations();
  -        TASSERT(nnm.getLength() == 0);
  +        TASSERT(dt->getNodeType() == IDOM_Node::DOCUMENT_TYPE_NODE);
  +        TASSERT(!XMLString::compareString(dt->getNodeName(), tempStr));
  +        TASSERT(dt->getNamespaceURI() == 0);
  +        TASSERT(dt->getPrefix() == 0);
  +        TASSERT(dt->getLocalName() == 0);
  +        TASSERT(!XMLString::compareString(dt->getPublicId(), tempStr2));
  +        TASSERT(!XMLString::compareString(dt->getSystemId(), tempStr3));
  +        TASSERT(dt->getInternalSubset() == 0);
  +        TASSERT(dt->getOwnerDocument() == 0);
  +
  +        IDOM_NamedNodeMap* nnm = dt->getEntities();
  +        TASSERT(nnm->getLength() == 0);
  +        nnm = dt->getNotations();
  +        TASSERT(nnm->getLength() == 0);
  +        delete dt;
   
           //
           // Qualified name without prefix should also work.
           //
  -        qName = "docName";
  -        dt = impl.createDocumentType(qName, pubId, sysId);
  +        XMLString::transcode("docName", tempStr, 3999);
  +        dt = impl->createDocumentType(tempStr, tempStr2, tempStr3);
   
           TASSERT(dt != 0);
  -        TASSERT(dt.getNodeType() == DOM_Node::DOCUMENT_TYPE_NODE);
  -        TASSERT(dt.getNodeName().equals(qName));
  -        TASSERT(dt.getNamespaceURI().equals(0));
  -        TASSERT(dt.getPrefix().equals(0));
  -        TASSERT(dt.getLocalName().equals(0));
  -        TASSERT(dt.getPublicId().equals(pubId));
  -        TASSERT(dt.getSystemId().equals(sysId));
  -        TASSERT(dt.getInternalSubset().equals(0));
  -        TASSERT(dt.getOwnerDocument() == 0);
  +        TASSERT(dt->getNodeType() == IDOM_Node::DOCUMENT_TYPE_NODE);
  +        TASSERT(!XMLString::compareString(dt->getNodeName(), tempStr));
  +        TASSERT(dt->getNamespaceURI() == 0);
  +        TASSERT(dt->getPrefix() == 0);
  +        TASSERT(dt->getLocalName() == 0);
  +        TASSERT(!XMLString::compareString(dt->getPublicId(), tempStr2));
  +        TASSERT(!XMLString::compareString(dt->getSystemId(), tempStr3));
  +        TASSERT(dt->getInternalSubset() == 0);
  +        TASSERT(dt->getOwnerDocument() == 0);
   
           // Creating a DocumentType with invalid or malformed qName should fail.
  -        EXCEPTION_TEST(impl.createDocumentType("<docName", pubId, sysId), DOM_DOMException::INVALID_CHARACTER_ERR);
  -        EXCEPTION_TEST(impl.createDocumentType(":docName", pubId, sysId), DOM_DOMException::NAMESPACE_ERR);
  -        EXCEPTION_TEST(impl.createDocumentType("docName:", pubId, sysId), DOM_DOMException::NAMESPACE_ERR);
  -        EXCEPTION_TEST(impl.createDocumentType("doc::Name", pubId, sysId), DOM_DOMException::NAMESPACE_ERR);
  -        EXCEPTION_TEST(impl.createDocumentType("doc:N:ame", pubId, sysId), DOM_DOMException::NAMESPACE_ERR);
  +        XMLString::transcode("<docName", tempStr, 3999);
  +        EXCEPTION_TEST(impl->createDocumentType(tempStr, tempStr2, tempStr3), IDOM_DOMException::INVALID_CHARACTER_ERR);
  +
  +        XMLString::transcode(":docName", tempStr, 3999);
  +        EXCEPTION_TEST(impl->createDocumentType(tempStr, tempStr2, tempStr3), IDOM_DOMException::NAMESPACE_ERR);
  +
  +        XMLString::transcode("docName:", tempStr, 3999);
  +        EXCEPTION_TEST(impl->createDocumentType(tempStr, tempStr2, tempStr3), IDOM_DOMException::NAMESPACE_ERR);
  +
  +        XMLString::transcode("doc::Name", tempStr, 3999);
  +        EXCEPTION_TEST(impl->createDocumentType(tempStr, tempStr2, tempStr3), IDOM_DOMException::NAMESPACE_ERR);
  +
  +        XMLString::transcode("doc:N:ame", tempStr, 3999);
  +        EXCEPTION_TEST(impl->createDocumentType(tempStr, tempStr2, tempStr3), IDOM_DOMException::NAMESPACE_ERR);
  +        delete dt;
  +
       }
  -    TESTEPILOG;
  +
   
   
       //
  -    //  DOMImplementation::CreateDocument
  +    //  IDOMImplementation::CreateDocument
       {
  -        // Preflight the operations that will lazily create DOMStrings
  +        // Preflight the operations that will lazily create IDOMStrings
           // in the implementation.  This prevents incorrect reports of
           // memory leaks in the real test.
   
  -        DOM_DOMImplementation   impl;
  -        DOM_DocumentType        dt;
  -        DOM_Document            doc = impl.createDocument("", "a", dt);
  -        doc.getNodeName();
  +        IDOM_DOMImplementation*   impl = IDOM_DOMImplementation::getImplementation();
  +        IDOM_DocumentType*       dt = 0;
  +
  +        XMLString::transcode("", tempStr2, 3999);
  +        XMLString::transcode("a", tempStr, 3999);
  +        IDOM_Document*           doc = impl->createDocument(tempStr2, tempStr, dt);
  +
  +        doc->getNodeName();
  +        delete doc;
       }
   
       //
  -    TESTPROLOG;
  +
       {
   
  -        DOM_DOMImplementation impl;
  +        IDOM_DOMImplementation* impl = IDOM_DOMImplementation::getImplementation();
   
  -        DOMString qName = "foo:docName";
  -        DOMString pubId = "pubId";
  -        DOMString sysId = "http://sysId";
  +        XMLString::transcode("foo:docName", tempStr3, 3999);
  +        XMLString::transcode("pubId", tempStr2, 3999);
  +        XMLString::transcode( "http://sysId", tempStr, 3999);
   
  -        DOM_DocumentType dt = impl.createDocumentType(qName, pubId, sysId);
   
  -        DOMString docNSURI = "http://document.namespace";
  +        IDOM_DocumentType* dt = impl->createDocumentType(tempStr3, tempStr2, tempStr);
   
  -        DOM_Document doc = impl.createDocument(docNSURI, qName, dt);
  +        XMLString::transcode("http://document.namespace", tempStr2, 3999);
   
  -        TASSERT(dt.getOwnerDocument() == doc);
  -        TASSERT(doc.getOwnerDocument() == 0);
  +        IDOM_Document* doc = impl->createDocument(tempStr2, tempStr3, dt);
   
  -        TASSERT(doc.getNodeType() == DOM_Node::DOCUMENT_NODE);
  -        TASSERT(doc.getDoctype() == dt);
  -        TASSERT(doc.getNodeName().equals("#document"));
  +        TASSERT(dt->getOwnerDocument() == doc);
  +        TASSERT(doc->getOwnerDocument() == 0);
   
  -        TASSERT(doc.getNodeValue() == 0);
  -        TASSERT(doc.getNamespaceURI().equals(0));
  -        TASSERT(doc.getPrefix().equals(0));
  -        TASSERT(doc.getLocalName().equals(0));
  +        TASSERT(doc->getNodeType() == IDOM_Node::DOCUMENT_NODE);
  +        TASSERT(doc->getDoctype() == dt);
   
  -        DOM_Element el = doc.getDocumentElement();
  +        XMLString::transcode("#document", tempStr, 3999);
  +        TASSERT(!XMLString::compareString(doc->getNodeName(), tempStr));
   
  -        TASSERT(el.getLocalName().equals("docName"));
  -        TASSERT(el.getNamespaceURI().equals(docNSURI));
  -        TASSERT(el.getNodeName().equals(qName));
  -        TASSERT(el.getOwnerDocument() == doc);
  -        TASSERT(el.getParentNode() == doc);
  -        TASSERT(el.getPrefix().equals("foo"));
  -        TASSERT(el.getTagName().equals(qName));
  -        TASSERT(el.hasChildNodes() == false);
  +        TASSERT(doc->getNodeValue() == 0);
  +        TASSERT(doc->getNamespaceURI() == 0);
  +        TASSERT(doc->getPrefix() == 0);
  +        TASSERT(doc->getLocalName() == 0);
  +
  +        IDOM_Element* el = doc->getDocumentElement();
  +
  +        XMLString::transcode("docName", tempStr, 3999);
  +        TASSERT(!XMLString::compareString(el->getLocalName(), tempStr));
  +
  +        TASSERT(!XMLString::compareString(el->getNamespaceURI(), tempStr2));
  +        TASSERT(!XMLString::compareString(el->getNodeName(), tempStr3));
  +        TASSERT(el->getOwnerDocument() == doc);
  +        TASSERT(el->getParentNode() == doc);
  +
  +        XMLString::transcode("foo", tempStr, 3999);
  +        TASSERT(!XMLString::compareString(el->getPrefix(), tempStr));
  +
  +        TASSERT(!XMLString::compareString(el->getTagName(), tempStr3));
  +        TASSERT(el->hasChildNodes() == false);
   
   
           //
  @@ -1207,24 +945,27 @@
           //
           try
           {
  -            DOM_Document doc2 = impl.createDocument(docNSURI, qName, dt);
  +            IDOM_Document* doc2 = impl->createDocument(tempStr2, tempStr3, dt);
               TASSERT(false);  // should not reach here.
           }
  -        catch ( DOM_DOMException &e)
  +        catch ( IDOM_DOMException &e)
           {
  -            TASSERT(e.code == DOM_DOMException::WRONG_DOCUMENT_ERR);
  +            TASSERT(e.code == IDOM_DOMException::WRONG_DOCUMENT_ERR);
           }
           catch (...)
           {
               TASSERT(false);  // Wrong exception thrown.
           }
   
  +        delete doc;
           // Creating a document with null NamespaceURI and DocumentType
  -        doc = impl.createDocument(docNSURI, qName, 0);
  +        doc = impl->createDocument(tempStr2, tempStr3, 0);
   
           // Namespace tests of createDocument are covered by createElementNS below
  +        delete doc;
  +        delete dt;
       }
  -    TESTEPILOG;
  +
   
   
   
  @@ -1232,439 +973,583 @@
       //
       //  CreateElementNS methods
       //
  -    TESTPROLOG;
  +
       {
   
           // Set up an initial (root element only) document.
           //
  -        DOM_DOMImplementation impl;
  +        IDOM_DOMImplementation* impl = IDOM_DOMImplementation::getImplementation();
  +
  +        XMLString::transcode("foo:docName", tempStr3, 3999);
  +        XMLString::transcode("pubId", tempStr2, 3999);
  +        XMLString::transcode( "http://sysId", tempStr, 3999);
  +
  +
  +        IDOM_DocumentType* dt = impl->createDocumentType(tempStr3, tempStr2, tempStr);
  +
  +        XMLString::transcode("http://document.namespace", tempStr2, 3999);
   
  -        DOMString qName = "foo:docName";
  -        DOMString pubId = "pubId";
  -        DOMString sysId = "http://sysId";
  -        DOM_DocumentType dt = impl.createDocumentType(qName, pubId, sysId);
  -
  -        DOMString docNSURI = "http://document.namespace";
  -        DOM_Document doc = impl.createDocument(docNSURI, qName, dt);
  -        DOM_Element rootEl = doc.getDocumentElement();
  +        IDOM_Document* doc = impl->createDocument(tempStr2, tempStr3, dt);
  +        IDOM_Element* rootEl = doc->getDocumentElement();
   
           //
           // CreateElementNS
           //
  -        DOM_Element ela = doc.createElementNS("http://nsa", "a:ela");  // prefix and URI
  -        DOM_Element elb = doc.createElementNS("http://nsb", "elb");    //  URI, no prefix.
  -        DOM_Element elc = doc.createElementNS("", "elc");              // No URI, no prefix.
  -
  -        rootEl.appendChild(ela);
  -        rootEl.appendChild(elb);
  -        rootEl.appendChild(elc);
  -
  -        TASSERT(ela.getNodeName().equals("a:ela"));
  -        TASSERT(ela.getNamespaceURI().equals("http://nsa"));
  -        TASSERT(ela.getPrefix().equals("a"));
  -        TASSERT(ela.getLocalName().equals("ela"));
  -        TASSERT(ela.getTagName().equals("a:ela"));
  -
  -        TASSERT(elb.getNodeName().equals("elb"));
  -        TASSERT(elb.getNamespaceURI().equals("http://nsb"));
  -        TASSERT(elb.getPrefix().equals(""));
  -        TASSERT(elb.getLocalName().equals("elb"));
  -        TASSERT(elb.getTagName().equals("elb"));
  -
  -        TASSERT(elc.getNodeName().equals("elc"));
  -        TASSERT(elc.getNamespaceURI().equals(""));
  -        TASSERT(elc.getPrefix().equals(""));
  -        TASSERT(elc.getLocalName().equals("elc"));
  -        TASSERT(elc.getTagName().equals("elc"));
  +        XMLString::transcode("http://nsa", tempStr5, 3999);
  +        XMLString::transcode("a:ela", tempStr, 3999);
  +        IDOM_Element* ela = doc->createElementNS(tempStr5, tempStr);  // prefix and URI
  +
  +        TASSERT(!XMLString::compareString(ela->getNodeName(), tempStr));
  +        TASSERT(!XMLString::compareString(ela->getNamespaceURI(), tempStr5));
  +        XMLString::transcode("a", tempStr3, 3999);
  +        TASSERT(!XMLString::compareString(ela->getPrefix(), tempStr3));
  +        XMLString::transcode("ela", tempStr3, 3999);
  +        TASSERT(!XMLString::compareString(ela->getLocalName(), tempStr3));
  +        TASSERT(!XMLString::compareString(ela->getTagName(), tempStr));
  +
  +
  +        XMLString::transcode("", tempStr3, 3999);
  +        XMLString::transcode("http://nsb", tempStr2, 3999);
  +        XMLString::transcode("elb", tempStr, 3999);
  +        IDOM_Element* elb = doc->createElementNS(tempStr2, tempStr);    //  URI, no prefix.
  +
  +        TASSERT(!XMLString::compareString(elb->getNodeName(), tempStr));
  +        TASSERT(!XMLString::compareString(elb->getNamespaceURI(), tempStr2));
  +        TASSERT(!XMLString::compareString(elb->getPrefix(), tempStr3));
  +        TASSERT(!XMLString::compareString(elb->getLocalName(), tempStr));
  +        TASSERT(!XMLString::compareString(elb->getTagName(), tempStr));
  +
  +
  +        XMLString::transcode("elc", tempStr, 3999);
  +        IDOM_Element* elc = doc->createElementNS(tempStr3, tempStr);              // No URI, no prefix.
  +
  +        TASSERT(!XMLString::compareString(elc->getNodeName(), tempStr));
  +        TASSERT(!XMLString::compareString(elc->getNamespaceURI(), tempStr3));
  +        TASSERT(!XMLString::compareString(elc->getPrefix(), tempStr3));
  +        TASSERT(!XMLString::compareString(elc->getLocalName(), tempStr));
  +        TASSERT(!XMLString::compareString(elc->getTagName(), tempStr));
  +
  +        rootEl->appendChild(ela);
  +        rootEl->appendChild(elb);
  +        rootEl->appendChild(elc);
   
           // Badly formed qualified name
  -        EXCEPTION_TEST(doc.createElementNS("http://nsa", "<a"), DOM_DOMException::INVALID_CHARACTER_ERR);
  -        EXCEPTION_TEST(doc.createElementNS("http://nsa", ":a"), DOM_DOMException::NAMESPACE_ERR);
  -        EXCEPTION_TEST(doc.createElementNS("http://nsa", "a:"), DOM_DOMException::NAMESPACE_ERR);
  -        EXCEPTION_TEST(doc.createElementNS("http://nsa", "a::a"), DOM_DOMException::NAMESPACE_ERR);
  -        EXCEPTION_TEST(doc.createElementNS("http://nsa", "a:a:a"), DOM_DOMException::NAMESPACE_ERR);
  +        XMLString::transcode("<a", tempStr4, 3999);
  +        EXCEPTION_TEST(doc->createElementNS(tempStr5, tempStr4), IDOM_DOMException::INVALID_CHARACTER_ERR);
  +
  +        XMLString::transcode(":a", tempStr4, 3999);
  +        EXCEPTION_TEST(doc->createElementNS(tempStr5, tempStr4), IDOM_DOMException::NAMESPACE_ERR);
  +
  +        XMLString::transcode("a:", tempStr4, 3999);
  +        EXCEPTION_TEST(doc->createElementNS(tempStr5, tempStr4), IDOM_DOMException::NAMESPACE_ERR);
  +
  +        XMLString::transcode("a::a", tempStr4, 3999);
  +        EXCEPTION_TEST(doc->createElementNS(tempStr5, tempStr4), IDOM_DOMException::NAMESPACE_ERR);
  +
  +        XMLString::transcode("a:a:a", tempStr4, 3999);
  +        EXCEPTION_TEST(doc->createElementNS(tempStr5, tempStr4), IDOM_DOMException::NAMESPACE_ERR);
   
           // xml:a must have namespaceURI == "http://www.w3.org/XML/1998/namespace"
  -        DOMString xmlURI = "http://www.w3.org/XML/1998/namespace";
  -        TASSERT(doc.createElementNS(xmlURI, "xml:a").getNamespaceURI().equals(xmlURI));
  -        EXCEPTION_TEST(doc.createElementNS("http://nsa", "xml:a"), DOM_DOMException::NAMESPACE_ERR);
  -        EXCEPTION_TEST(doc.createElementNS("", "xml:a"), DOM_DOMException::NAMESPACE_ERR);
  -        EXCEPTION_TEST(doc.createElementNS(0,  "xml:a"), DOM_DOMException::NAMESPACE_ERR);
  +        XMLString::transcode("http://www.w3.org/XML/1998/namespace", tempStr4, 3999);
  +        XMLString::transcode("xml:a",tempStr2, 3999);
  +        TASSERT(!XMLString::compareString(doc->createElementNS(tempStr4, tempStr2)->getNamespaceURI(), tempStr4));
  +        EXCEPTION_TEST(doc->createElementNS(tempStr5, tempStr2), IDOM_DOMException::NAMESPACE_ERR);
  +        EXCEPTION_TEST(doc->createElementNS(tempStr3, tempStr2), IDOM_DOMException::NAMESPACE_ERR);
  +        EXCEPTION_TEST(doc->createElementNS(0,  tempStr2), IDOM_DOMException::NAMESPACE_ERR);
   
           //unlike Attribute, xmlns (no different from foo) can have any namespaceURI for Element
  -        TASSERT(doc.createElementNS("http://nsa", "xmlns").getNamespaceURI().equals("http://nsa"));
  -        TASSERT(doc.createElementNS(xmlURI, "xmlns").getNamespaceURI().equals(xmlURI));
  -        TASSERT(doc.createElementNS("", "xmlns").getNamespaceURI().equals(""));
  -        TASSERT(doc.createElementNS(0,  "xmlns").getNamespaceURI().equals(""));
  +        XMLString::transcode("xmlns", tempStr2, 3999);
  +        TASSERT(!XMLString::compareString(doc->createElementNS(tempStr5, tempStr2)->getNamespaceURI(), tempStr5));
  +
  +        TASSERT(!XMLString::compareString(doc->createElementNS(tempStr4, tempStr2)->getNamespaceURI(), tempStr4));
  +        TASSERT(!XMLString::compareString(doc->createElementNS(tempStr3, tempStr2)->getNamespaceURI(), tempStr3));
  +        TASSERT(!XMLString::compareString(doc->createElementNS(0,  tempStr2)->getNamespaceURI(), tempStr3));
   
           //unlike Attribute, xmlns:a (no different from foo:a) can have any namespaceURI for Element
           //except "" and null
  -        TASSERT(doc.createElementNS("http://nsa", "xmlns:a").getNamespaceURI().equals("http://nsa"));
  -        TASSERT(doc.createElementNS(xmlURI, "xmlns:a").getNamespaceURI().equals(xmlURI));
  -        EXCEPTION_TEST(doc.createElementNS("", "xmlns:a"), DOM_DOMException::NAMESPACE_ERR);
  -        EXCEPTION_TEST(doc.createElementNS(0,  "xmlns:a"), DOM_DOMException::NAMESPACE_ERR);
  +        XMLString::transcode("xmlns:a", tempStr2, 3999);
  +        TASSERT(!XMLString::compareString(doc->createElementNS(tempStr5, tempStr2)->getNamespaceURI(), tempStr5));
  +        TASSERT(!XMLString::compareString(doc->createElementNS(tempStr4, tempStr2)->getNamespaceURI(), tempStr4));
  +        EXCEPTION_TEST(doc->createElementNS(tempStr3, tempStr2), IDOM_DOMException::NAMESPACE_ERR);
  +        EXCEPTION_TEST(doc->createElementNS(0, tempStr2), IDOM_DOMException::NAMESPACE_ERR);
   
           //In fact, any prefix != null should have a namespaceURI != 0 or != ""
  -        TASSERT(doc.createElementNS("http://nsa", "foo:a").getNamespaceURI().equals("http://nsa"));
  -        EXCEPTION_TEST(doc.createElementNS("", "foo:a"), DOM_DOMException::NAMESPACE_ERR);
  -        EXCEPTION_TEST(doc.createElementNS(0,  "foo:a"), DOM_DOMException::NAMESPACE_ERR);
  +        XMLString::transcode("foo:a", tempStr2, 3999);
  +        TASSERT(!XMLString::compareString(doc->createElementNS(tempStr5, tempStr2)->getNamespaceURI(), tempStr5));
  +        EXCEPTION_TEST(doc->createElementNS(tempStr3, tempStr2), IDOM_DOMException::NAMESPACE_ERR);
  +        EXCEPTION_TEST(doc->createElementNS(0,  tempStr2), IDOM_DOMException::NAMESPACE_ERR);
   
           //Change prefix
  -        DOM_Element elem = doc.createElementNS("http://nsa", "foo:a");
  -        elem.setPrefix("bar");
  -        TASSERT(elem.getNodeName().equals("bar:a"));
  -        TASSERT(elem.getNamespaceURI().equals("http://nsa"));
  -        TASSERT(elem.getPrefix().equals("bar"));
  -        TASSERT(elem.getLocalName().equals("a"));
  -        TASSERT(elem.getTagName().equals("bar:a"));
  +        IDOM_Element* elem = doc->createElementNS(tempStr5, tempStr2);
  +        XMLString::transcode("bar", tempStr2, 3999);
  +        elem->setPrefix(tempStr2);
  +        XMLString::transcode("bar:a", tempStr4, 3999);
  +        TASSERT(!XMLString::compareString(elem->getNodeName(), tempStr4));
  +        TASSERT(!XMLString::compareString(elem->getNamespaceURI(), tempStr5));
  +        TASSERT(!XMLString::compareString(elem->getPrefix(), tempStr2));
  +        XMLString::transcode("a", tempStr, 3999);
  +        TASSERT(!XMLString::compareString(elem->getLocalName(), tempStr));
  +        TASSERT(!XMLString::compareString(elem->getTagName(), tempStr4));
           //The spec does not prevent us from setting prefix to a node without prefix
  -        elem = doc.createElementNS("http://nsa", "a");
  -        TASSERT(elem.getPrefix().equals(""));
  -        elem.setPrefix("bar");
  -        TASSERT(elem.getNodeName().equals("bar:a"));
  -        TASSERT(elem.getNamespaceURI().equals("http://nsa"));
  -        TASSERT(elem.getPrefix().equals("bar"));
  -        TASSERT(elem.getLocalName().equals("a"));
  -        TASSERT(elem.getTagName().equals("bar:a"));
  +        elem = doc->createElementNS(tempStr5, tempStr);
  +        TASSERT(!XMLString::compareString(elem->getPrefix(), tempStr3));
  +        elem->setPrefix(tempStr2);
  +        TASSERT(!XMLString::compareString(elem->getNodeName(), tempStr4));
  +        TASSERT(!XMLString::compareString(elem->getNamespaceURI(), tempStr5));
  +        TASSERT(!XMLString::compareString(elem->getPrefix(), tempStr2));
  +        TASSERT(!XMLString::compareString(elem->getLocalName(), tempStr));
  +        TASSERT(!XMLString::compareString(elem->getTagName(), tempStr4));
  +
           //Special case for xml:a where namespaceURI must be xmlURI
  -        elem = doc.createElementNS(xmlURI, "foo:a");
  -        elem.setPrefix("xml");
  -        elem = doc.createElementNS("http://nsa", "foo:a");
  -        EXCEPTION_TEST(elem.setPrefix("xml"), DOM_DOMException::NAMESPACE_ERR);
  +        XMLString::transcode("foo:a", tempStr, 3999);
  +        XMLString::transcode("http://www.w3.org/XML/1998/namespace", tempStr4, 3999);
  +        elem = doc->createElementNS(tempStr4, tempStr);
  +        XMLString::transcode("xml", tempStr2, 3999);
  +        elem->setPrefix(tempStr2);
  +        elem = doc->createElementNS(tempStr5, tempStr);
  +        EXCEPTION_TEST(elem->setPrefix(tempStr2), IDOM_DOMException::NAMESPACE_ERR);
           //However, there is no restriction on prefix xmlns
  -        elem.setPrefix("xmlns");
  +        XMLString::transcode("xmlns", tempStr4, 3999);
  +        elem->setPrefix(tempStr4);
           //Also an element can not have a prefix with namespaceURI == null or ""
  -        elem = doc.createElementNS(0, "a");
  -        EXCEPTION_TEST(elem.setPrefix("foo"), DOM_DOMException::NAMESPACE_ERR);
  -        elem = doc.createElementNS("", "a");
  -        EXCEPTION_TEST(elem.setPrefix("foo"), DOM_DOMException::NAMESPACE_ERR);
  +        XMLString::transcode("a", tempStr, 3999);
  +        XMLString::transcode("foo", tempStr2, 3999);
  +        elem = doc->createElementNS(0, tempStr);
  +        EXCEPTION_TEST(elem->setPrefix(tempStr2), IDOM_DOMException::NAMESPACE_ERR);
  +        elem = doc->createElementNS(tempStr3, tempStr);
  +        EXCEPTION_TEST(elem->setPrefix(tempStr2), IDOM_DOMException::NAMESPACE_ERR);
   
           //Only prefix of Element and Attribute can be changed
  -        EXCEPTION_TEST(doc.setPrefix("foo"), DOM_DOMException::NAMESPACE_ERR);
  +        EXCEPTION_TEST(doc->setPrefix(tempStr2), IDOM_DOMException::NAMESPACE_ERR);
   
           //Prefix of readonly Element can not be changed.
  -        //However, there is no way to create such DOM_Element for testing yet.
  +        //However, there is no way to create such IDOM_Element* for testing yet.
  +        delete doc;
  +        delete dt;
       }
  -    TESTEPILOG;
  +
   
   
   
       //
       //  CreateAttributeNS methods
       //
  -    TESTPROLOG;
  +
       {
   
           // Set up an initial (root element only) document.
           //
  -        DOM_DOMImplementation impl;
  +        IDOM_DOMImplementation* impl = IDOM_DOMImplementation::getImplementation();
  +
  +        XMLString::transcode("foo:docName", tempStr3, 3999);
  +        XMLString::transcode("pubId", tempStr2, 3999);
  +        XMLString::transcode( "http://sysId", tempStr, 3999);
  +
  +
  +        IDOM_DocumentType* dt = impl->createDocumentType(tempStr3, tempStr2, tempStr);
   
  -        DOMString qName = "foo:docName";
  -        DOMString pubId = "pubId";
  -        DOMString sysId = "http://sysId";
  -        DOM_DocumentType dt = impl.createDocumentType(qName, pubId, sysId);
  -
  -        DOMString docNSURI = "http://document.namespace";
  -        DOM_Document doc = impl.createDocument(docNSURI, qName, dt);
  -        DOM_Element rootEl = doc.getDocumentElement();
  +        XMLString::transcode("http://document.namespace", tempStr2, 3999);
  +        IDOM_Document* doc = impl->createDocument(tempStr2, tempStr3, dt);
  +        IDOM_Element* rootEl = doc->getDocumentElement();
   
           //
           // CreateAttributeNS
           //
  -        DOM_Attr attra = doc.createAttributeNS("http://nsa", "a:attra");       // prefix and URI
  -        DOM_Attr attrb = doc.createAttributeNS("http://nsb", "attrb");         //  URI, no prefix.
  -        DOM_Attr attrc = doc.createAttributeNS("", "attrc");    // No URI, no prefix.
  -
  -        TASSERT(attra.getNodeName().equals("a:attra"));
  -        TASSERT(attra.getNamespaceURI().equals("http://nsa"));
  -        TASSERT(attra.getPrefix().equals("a"));
  -        TASSERT(attra.getLocalName().equals("attra"));
  -        TASSERT(attra.getName().equals("a:attra"));
  -        TASSERT(attra.getOwnerElement() == 0);
  -
  -        TASSERT(attrb.getNodeName().equals("attrb"));
  -        TASSERT(attrb.getNamespaceURI().equals("http://nsb"));
  -        TASSERT(attrb.getPrefix().equals(""));
  -        TASSERT(attrb.getLocalName().equals("attrb"));
  -        TASSERT(attrb.getName().equals("attrb"));
  -        TASSERT(attrb.getOwnerElement() == 0);
  -
  -        TASSERT(attrc.getNodeName().equals("attrc"));
  -        TASSERT(attrc.getNamespaceURI().equals(""));
  -        TASSERT(attrc.getPrefix().equals(""));
  -        TASSERT(attrc.getLocalName().equals("attrc"));
  -        TASSERT(attrc.getName().equals("attrc"));
  -        TASSERT(attrc.getOwnerElement() == 0);
  +        XMLString::transcode("http://nsa", tempStr5, 3999);
  +        XMLString::transcode("http://nsb", tempStr4, 3999);
  +        XMLString::transcode("", tempStr3, 3999);
  +
  +
  +        XMLString::transcode("a:attra", tempStr, 3999);
  +        IDOM_Attr* attra = doc->createAttributeNS(tempStr5, tempStr);       // prefix and URI
  +        TASSERT(!XMLString::compareString(attra->getNodeName(), tempStr));
  +        TASSERT(!XMLString::compareString(attra->getNamespaceURI(), tempStr5));
  +
  +        XMLString::transcode("a", tempStr2, 3999);
  +        TASSERT(!XMLString::compareString(attra->getPrefix(), tempStr2));
  +
  +        XMLString::transcode("attra", tempStr2, 3999);
  +        TASSERT(!XMLString::compareString(attra->getLocalName(), tempStr2));
  +        TASSERT(!XMLString::compareString(attra->getName(), tempStr));
  +        TASSERT(attra->getOwnerElement() == 0);
  +
  +        XMLString::transcode("attrb", tempStr2, 3999);
  +        IDOM_Attr* attrb = doc->createAttributeNS(tempStr4, tempStr2);         //  URI, no prefix.
  +        TASSERT(!XMLString::compareString(attrb->getNodeName(), tempStr2));
  +        TASSERT(!XMLString::compareString(attrb->getNamespaceURI(), tempStr4));
  +        TASSERT(!XMLString::compareString(attrb->getPrefix(), tempStr3));
  +        TASSERT(!XMLString::compareString(attrb->getLocalName(), tempStr2));
  +        TASSERT(!XMLString::compareString(attrb->getName(), tempStr2));
  +        TASSERT(attrb->getOwnerElement() == 0);
  +
  +
  +
  +        XMLString::transcode("attrc", tempStr2, 3999);
  +        IDOM_Attr* attrc = doc->createAttributeNS(tempStr3, tempStr2);
  +        TASSERT(!XMLString::compareString(attrc->getNodeName(), tempStr2));
  +        TASSERT(!XMLString::compareString(attrc->getNamespaceURI(), tempStr3));
  +        TASSERT(!XMLString::compareString(attrc->getPrefix(), tempStr3));
  +        TASSERT(!XMLString::compareString(attrc->getLocalName(), tempStr2));
  +        TASSERT(!XMLString::compareString(attrc->getName(), tempStr2));
  +        TASSERT(attrc->getOwnerElement() == 0);
   
           // Badly formed qualified name
  -        EXCEPTION_TEST(doc.createAttributeNS("http://nsa", "<a"), DOM_DOMException::INVALID_CHARACTER_ERR);
  -        EXCEPTION_TEST(doc.createAttributeNS("http://nsa", ":a"), DOM_DOMException::NAMESPACE_ERR);
  -        EXCEPTION_TEST(doc.createAttributeNS("http://nsa", "a:"), DOM_DOMException::NAMESPACE_ERR);
  -        EXCEPTION_TEST(doc.createAttributeNS("http://nsa", "a::a"), DOM_DOMException::NAMESPACE_ERR);
  -        EXCEPTION_TEST(doc.createAttributeNS("http://nsa", "a:a:a"), DOM_DOMException::NAMESPACE_ERR);
  +        XMLString::transcode("<a", tempStr, 3999);
  +        EXCEPTION_TEST(doc->createAttributeNS(tempStr5, tempStr), IDOM_DOMException::INVALID_CHARACTER_ERR);
  +
  +        XMLString::transcode(":a", tempStr, 3999);
  +        EXCEPTION_TEST(doc->createAttributeNS(tempStr5, tempStr), IDOM_DOMException::NAMESPACE_ERR);
  +
  +        XMLString::transcode("a:", tempStr, 3999);
  +        EXCEPTION_TEST(doc->createAttributeNS(tempStr5, tempStr), IDOM_DOMException::NAMESPACE_ERR);
  +
  +        XMLString::transcode("a::a", tempStr, 3999);
  +        EXCEPTION_TEST(doc->createAttributeNS(tempStr5, tempStr), IDOM_DOMException::NAMESPACE_ERR);
  +
  +        XMLString::transcode("a:a:a", tempStr, 3999);
  +        EXCEPTION_TEST(doc->createAttributeNS(tempStr5, tempStr), IDOM_DOMException::NAMESPACE_ERR);
   
           // xml:a must have namespaceURI == "http://www.w3.org/XML/1998/namespace"
  -        DOMString xmlURI = "http://www.w3.org/XML/1998/namespace";
  -        TASSERT(doc.createAttributeNS(xmlURI, "xml:a").getNamespaceURI().equals(xmlURI));
  -        EXCEPTION_TEST(doc.createAttributeNS("http://nsa", "xml:a"), DOM_DOMException::NAMESPACE_ERR);
  -        EXCEPTION_TEST(doc.createAttributeNS("", "xml:a"), DOM_DOMException::NAMESPACE_ERR);
  -        EXCEPTION_TEST(doc.createAttributeNS(0,  "xml:a"), DOM_DOMException::NAMESPACE_ERR);
  +        XMLString::transcode("http://www.w3.org/XML/1998/namespace", tempStr2, 3999);
  +        XMLString::transcode("xml:a", tempStr, 3999);
  +        TASSERT(!XMLString::compareString(doc->createAttributeNS(tempStr2, tempStr)->getNamespaceURI(), tempStr2));
  +        EXCEPTION_TEST(doc->createAttributeNS(tempStr5, tempStr), IDOM_DOMException::NAMESPACE_ERR);
  +        EXCEPTION_TEST(doc->createAttributeNS(tempStr3, tempStr), IDOM_DOMException::NAMESPACE_ERR);
  +        EXCEPTION_TEST(doc->createAttributeNS(0,  tempStr), IDOM_DOMException::NAMESPACE_ERR);
   
           //unlike Element, xmlns must have namespaceURI == "http://www.w3.org/2000/xmlns/"
  -        DOMString xmlnsURI = "http://www.w3.org/2000/xmlns/";
  -        TASSERT(doc.createAttributeNS(xmlnsURI, "xmlns").getNamespaceURI().equals(xmlnsURI));
  -        EXCEPTION_TEST(doc.createAttributeNS("http://nsa", "xmlns"), DOM_DOMException::NAMESPACE_ERR);
  -        EXCEPTION_TEST(doc.createAttributeNS(xmlURI, "xmlns"), DOM_DOMException::NAMESPACE_ERR);
  -        EXCEPTION_TEST(doc.createAttributeNS("", "xmlns"), DOM_DOMException::NAMESPACE_ERR);
  -        EXCEPTION_TEST(doc.createAttributeNS(0,  "xmlns"), DOM_DOMException::NAMESPACE_ERR);
  +        XMLString::transcode("http://www.w3.org/2000/xmlns/", tempStr4, 3999);
  +        XMLString::transcode("xmlns", tempStr, 3999);
  +        TASSERT(!XMLString::compareString(doc->createAttributeNS(tempStr4, tempStr)->getNamespaceURI(), tempStr4));
  +        EXCEPTION_TEST(doc->createAttributeNS(tempStr5, tempStr), IDOM_DOMException::NAMESPACE_ERR);
  +        EXCEPTION_TEST(doc->createAttributeNS(tempStr2, tempStr), IDOM_DOMException::NAMESPACE_ERR);
  +        EXCEPTION_TEST(doc->createAttributeNS(tempStr3, tempStr), IDOM_DOMException::NAMESPACE_ERR);
  +        EXCEPTION_TEST(doc->createAttributeNS(0,  tempStr), IDOM_DOMException::NAMESPACE_ERR);
   
           //unlike Element, xmlns:a must have namespaceURI == "http://www.w3.org/2000/xmlns/"
  -        TASSERT(doc.createAttributeNS(xmlnsURI, "xmlns:a").getNamespaceURI().equals(xmlnsURI));
  -        EXCEPTION_TEST(doc.createAttributeNS("http://nsa", "xmlns:a"), DOM_DOMException::NAMESPACE_ERR);
  -        EXCEPTION_TEST(doc.createAttributeNS(xmlURI, "xmlns:a"), DOM_DOMException::NAMESPACE_ERR);
  -        EXCEPTION_TEST(doc.createAttributeNS("", "xmlns:a"), DOM_DOMException::NAMESPACE_ERR);
  -        EXCEPTION_TEST(doc.createAttributeNS(0,  "xmlns:a"), DOM_DOMException::NAMESPACE_ERR);
  +        XMLString::transcode("xmlns:a", tempStr, 3999);
  +        TASSERT(!XMLString::compareString(doc->createAttributeNS(tempStr4, tempStr)->getNamespaceURI(), tempStr4));
  +        EXCEPTION_TEST(doc->createAttributeNS(tempStr5, tempStr), IDOM_DOMException::NAMESPACE_ERR);
  +        EXCEPTION_TEST(doc->createAttributeNS(tempStr2, tempStr), IDOM_DOMException::NAMESPACE_ERR);
  +        EXCEPTION_TEST(doc->createAttributeNS(tempStr3, tempStr), IDOM_DOMException::NAMESPACE_ERR);
  +        EXCEPTION_TEST(doc->createAttributeNS(0,  tempStr), IDOM_DOMException::NAMESPACE_ERR);
   
           //In fact, any prefix != null should have a namespaceURI != 0 or != ""
  -        TASSERT(doc.createAttributeNS("http://nsa", "foo:a").getNamespaceURI().equals("http://nsa"));
  -        EXCEPTION_TEST(doc.createAttributeNS("", "foo:a"), DOM_DOMException::NAMESPACE_ERR);
  -        EXCEPTION_TEST(doc.createAttributeNS(0,  "foo:a"), DOM_DOMException::NAMESPACE_ERR);
  +        XMLString::transcode("foo:a", tempStr, 3999);
  +        TASSERT(!XMLString::compareString(doc->createAttributeNS(tempStr5, tempStr)->getNamespaceURI(), tempStr5));
  +        EXCEPTION_TEST(doc->createAttributeNS(tempStr3, tempStr), IDOM_DOMException::NAMESPACE_ERR);
  +        EXCEPTION_TEST(doc->createAttributeNS(0,  tempStr), IDOM_DOMException::NAMESPACE_ERR);
   
           //Change prefix
  -        DOM_Attr attr = doc.createAttributeNS("http://nsa", "foo:a");
  -        attr.setPrefix("bar");
  -        TASSERT(attr.getNodeName().equals("bar:a"));
  -        TASSERT(attr.getNamespaceURI().equals("http://nsa"));
  -        TASSERT(attr.getPrefix().equals("bar"));
  -        TASSERT(attr.getLocalName().equals("a"));
  -        TASSERT(attr.getName().equals("bar:a"));
  +        IDOM_Attr* attr = doc->createAttributeNS(tempStr5, tempStr);
  +        XMLString::transcode("bar", tempStr4, 3999);
  +        XMLString::transcode("bar:a", tempStr, 3999);
  +        XMLString::transcode("a", tempStr2, 3999);
  +        attr->setPrefix(tempStr4);
  +
  +        TASSERT(!XMLString::compareString(attr->getNodeName(), tempStr));
  +        TASSERT(!XMLString::compareString(attr->getNamespaceURI(), tempStr5));
  +        TASSERT(!XMLString::compareString(attr->getPrefix(), tempStr4));
  +        TASSERT(!XMLString::compareString(attr->getName(), tempStr));
           //The spec does not prevent us from setting prefix to a node without prefix
  -        attr = doc.createAttributeNS("http://nsa", "a");
  -        TASSERT(attr.getPrefix().equals(""));
  -        attr.setPrefix("bar");
  -        TASSERT(attr.getNodeName().equals("bar:a"));
  -        TASSERT(attr.getNamespaceURI().equals("http://nsa"));
  -        TASSERT(attr.getPrefix().equals("bar"));
  -        TASSERT(attr.getLocalName().equals("a"));
  -        TASSERT(attr.getName().equals("bar:a"));
  +        TASSERT(!XMLString::compareString(attr->getLocalName(), tempStr2));
  +        attr = doc->createAttributeNS(tempStr5, tempStr2);
  +        TASSERT(!XMLString::compareString(attr->getPrefix(), tempStr3));
  +        attr->setPrefix(tempStr4);
  +        TASSERT(!XMLString::compareString(attr->getNodeName(), tempStr));
  +        TASSERT(!XMLString::compareString(attr->getNamespaceURI(), tempStr5));
  +        TASSERT(!XMLString::compareString(attr->getPrefix(), tempStr4));
  +        TASSERT(!XMLString::compareString(attr->getLocalName(), tempStr2));
  +        TASSERT(!XMLString::compareString(attr->getName(), tempStr));
  +
  +
           //Special case for xml:a where namespaceURI must be xmlURI
  -        attr = doc.createAttributeNS(xmlURI, "foo:a");
  -        attr.setPrefix("xml");
  -        attr = doc.createAttributeNS("http://nsa", "foo:a");
  -        EXCEPTION_TEST(attr.setPrefix("xml"), DOM_DOMException::NAMESPACE_ERR);
  +        XMLString::transcode("foo:a", tempStr, 3999);
  +        XMLString::transcode("xml", tempStr4, 3999);
  +        XMLString::transcode("http://www.w3.org/XML/1998/namespace", tempStr2, 3999);
  +
  +        attr = doc->createAttributeNS(tempStr2, tempStr);
  +        attr->setPrefix(tempStr4);
  +        attr = doc->createAttributeNS(tempStr5, tempStr);
  +        EXCEPTION_TEST(attr->setPrefix(tempStr4), IDOM_DOMException::NAMESPACE_ERR);
           //Special case for xmlns:a where namespaceURI must be xmlURI
  -        attr = doc.createAttributeNS(xmlnsURI, "foo:a");
  -        attr.setPrefix("xmlns");
  -        attr = doc.createAttributeNS("http://nsa", "foo:a");
  -        EXCEPTION_TEST(attr.setPrefix("xmlns"), DOM_DOMException::NAMESPACE_ERR);
  +        XMLString::transcode("http://www.w3.org/2000/xmlns/", tempStr2, 3999);
  +        attr = doc->createAttributeNS(tempStr2, tempStr);
  +
  +        XMLString::transcode("xmlns", tempStr4, 3999);
  +        attr->setPrefix(tempStr4);
  +        attr = doc->createAttributeNS(tempStr5, tempStr);
  +        EXCEPTION_TEST(attr->setPrefix(tempStr4), IDOM_DOMException::NAMESPACE_ERR);
           //Special case for xmlns where no prefix can be set
  -        attr = doc.createAttributeNS(xmlnsURI, "xmlns");
  -        EXCEPTION_TEST(attr.setPrefix("foo"), DOM_DOMException::NAMESPACE_ERR);
  -        EXCEPTION_TEST(attr.setPrefix("xmlns"), DOM_DOMException::NAMESPACE_ERR);
  +        attr = doc->createAttributeNS(tempStr2, tempStr4);
  +
  +        XMLString::transcode("foo", tempStr, 3999);
  +        EXCEPTION_TEST(attr->setPrefix(tempStr), IDOM_DOMException::NAMESPACE_ERR);
  +        EXCEPTION_TEST(attr->setPrefix(tempStr4), IDOM_DOMException::NAMESPACE_ERR);
           //Also an attribute can not have a prefix with namespaceURI == null or ""
  -        attr = doc.createAttributeNS(0, "a");
  -        EXCEPTION_TEST(attr.setPrefix("foo"), DOM_DOMException::NAMESPACE_ERR);
  -        attr = doc.createAttributeNS("", "a");
  -        EXCEPTION_TEST(attr.setPrefix("foo"), DOM_DOMException::NAMESPACE_ERR);
  +        XMLString::transcode("a", tempStr4, 3999);
  +        attr = doc->createAttributeNS(0, tempStr4);
  +        EXCEPTION_TEST(attr->setPrefix(tempStr), IDOM_DOMException::NAMESPACE_ERR);
  +        attr = doc->createAttributeNS(tempStr3, tempStr4);
  +        EXCEPTION_TEST(attr->setPrefix(tempStr), IDOM_DOMException::NAMESPACE_ERR);
   
           //Only prefix of Element and Attribute can be changed
  -        EXCEPTION_TEST(doc.setPrefix("foo"), DOM_DOMException::NAMESPACE_ERR);
  +        EXCEPTION_TEST(doc->setPrefix(tempStr), IDOM_DOMException::NAMESPACE_ERR);
   
           //Prefix of readonly Attribute can not be changed.
  -        //However, there is no way to create such DOM_Attribute for testing yet.
  +        //However, there is no way to create such IDOM_Attribute for testing yet.
  +        delete doc;
  +        delete dt;
       }
  -    TESTEPILOG;
  +
   
   
       //
       //  getElementsByTagName*
       //
  -    TESTPROLOG;
  +
       {
   
           // Set up an initial (root element only) document.
           //
  -        DOM_DOMImplementation impl;
  +        IDOM_DOMImplementation* impl = IDOM_DOMImplementation::getImplementation();
  +
  +        XMLString::transcode("foo:docName", tempStr3, 3999);
  +        XMLString::transcode("pubId", tempStr2, 3999);
  +        XMLString::transcode( "http://sysId", tempStr, 3999);
  +
  +
  +        IDOM_DocumentType* dt = impl->createDocumentType(tempStr3, tempStr2, tempStr);
  +
  +        XMLString::transcode("http://document.namespace", tempStr2, 3999);
  +        IDOM_Document* doc = impl->createDocument(tempStr2, tempStr3, dt);
   
  -        DOMString qName = "foo:docName";
  -        DOMString pubId = "pubId";
  -        DOMString sysId = "http://sysId";
  -        DOM_DocumentType dt = impl.createDocumentType(qName, pubId, sysId);
  -
  -        DOMString docNSURI = "http://document.namespace";
  -        DOM_Document doc = impl.createDocument(docNSURI, qName, dt);
  -        DOM_Element rootEl = doc.getDocumentElement();
  +        IDOM_Element* rootEl = doc->getDocumentElement();
   
           //
           // Populate the document
           //
  -        DOM_Element ela = doc.createElementNS("http://nsa", "a:ela");
  -        rootEl.appendChild(ela);
  -        DOM_Element elb = doc.createElementNS("http://nsb", "elb");
  -        rootEl.appendChild(elb);
  -        DOM_Element elc = doc.createElementNS("",           "elc");
  -        rootEl.appendChild(elc);
  -        DOM_Element eld = doc.createElementNS("http://nsa", "d:ela");
  -        rootEl.appendChild(eld);
  -        DOM_Element ele = doc.createElementNS("http://nse", "elb");
  -        rootEl.appendChild(ele);
  +        XMLString::transcode("http://nsa", tempStr5, 3999);
  +        XMLString::transcode("http://nsb", tempStr4, 3999);
  +        XMLString::transcode("", tempStr3, 3999);
  +
  +        XMLString::transcode("a:ela", tempStr, 3999);
  +        IDOM_Element* ela = doc->createElementNS(tempStr5, tempStr);
  +        rootEl->appendChild(ela);
  +
  +        XMLString::transcode("elb", tempStr2, 3999);
  +        IDOM_Element* elb = doc->createElementNS(tempStr4, tempStr2);
  +        rootEl->appendChild(elb);
  +
  +        XMLString::transcode("elc", tempStr, 3999);
  +        IDOM_Element* elc = doc->createElementNS(tempStr3, tempStr);
  +        rootEl->appendChild(elc);
  +
  +        XMLString::transcode("d:ela", tempStr, 3999);
  +        IDOM_Element* eld = doc->createElementNS(tempStr5, tempStr);
  +        rootEl->appendChild(eld);
  +
  +        XMLString::transcode("http://nse", tempStr, 3999);
  +        IDOM_Element* ele = doc->createElementNS(tempStr, tempStr2);
  +        rootEl->appendChild(ele);
   
   
           //
  -        // Access with DOM Level 1 getElementsByTagName
  +        // Access with IDOM Level 1 getElementsByTagName
           //
   
  -        DOM_NodeList nl;
  +        IDOM_NodeList* nl;
   
  -        nl = doc.getElementsByTagName("a:ela");
  -        TASSERT(nl.getLength() == 1);
  -        TASSERT(nl.item(0) == ela);
  +        XMLString::transcode("a:ela", tempStr, 3999);
  +        nl = doc->getElementsByTagName(tempStr);
  +        TASSERT(nl->getLength() == 1);
  +        TASSERT(nl->item(0) == ela);
   
  -        nl = doc.getElementsByTagName("elb");
  -        TASSERT(nl.getLength() == 2);
  -        TASSERT(nl.item(0) == elb);
  -        TASSERT(nl.item(1) == ele);
  +        nl = doc->getElementsByTagName(tempStr2);
  +        TASSERT(nl->getLength() == 2);
  +        TASSERT(nl->item(0) == elb);
  +        TASSERT(nl->item(1) == ele);
   
  -        nl = doc.getElementsByTagName("d:ela");
  -        TASSERT(nl.getLength() == 1);
  -        TASSERT(nl.item(0) == eld);
  +        XMLString::transcode("d:ela", tempStr, 3999);
  +        nl = doc->getElementsByTagName(tempStr);
  +        TASSERT(nl->getLength() == 1);
  +        TASSERT(nl->item(0) == eld);
   
           //
  -        //  Access with DOM Level 2 getElementsByTagNameNS
  +        //  Access with IDOM Level 2 getElementsByTagNameNS
           //
   
  -        nl = doc.getElementsByTagNameNS("", "elc");
  -        TASSERT(nl.getLength() == 1);
  -        TASSERT(nl.item(0) == elc);
  +        XMLString::transcode("elc", tempStr, 3999);
  +        nl = doc->getElementsByTagNameNS(tempStr3, tempStr);
  +        TASSERT(nl->getLength() == 1);
  +        TASSERT(nl->item(0) == elc);
   
  -        nl = doc.getElementsByTagNameNS(0, "elc");
  -        TASSERT(nl.getLength() == 1);
  -        TASSERT(nl.item(0) == elc);
  +        nl = doc->getElementsByTagNameNS(0, tempStr);
  +        TASSERT(nl->getLength() == 1);
  +        TASSERT(nl->item(0) == elc);
   
  -        nl = doc.getElementsByTagNameNS("http://nsa", "ela");
  -        TASSERT(nl.getLength() == 2);
  -        TASSERT(nl.item(0) == ela);
  -        TASSERT(nl.item(1) == eld);
  +        XMLString::transcode("ela", tempStr, 3999);
  +        nl = doc->getElementsByTagNameNS(tempStr5, tempStr);
  +        TASSERT(nl->getLength() == 2);
  +        TASSERT(nl->item(0) == ela);
  +        TASSERT(nl->item(1) == eld);
   
  -        nl = doc.getElementsByTagNameNS("", "elb");
  -        TASSERT(nl.getLength() == 0);
  +        nl = doc->getElementsByTagNameNS(tempStr3, tempStr2);
  +        TASSERT(nl->getLength() == 0);
   
  -        nl = doc.getElementsByTagNameNS("http://nsb", "elb");
  -        TASSERT(nl.getLength() == 1);
  -        TASSERT(nl.item(0) == elb);
  +        nl = doc->getElementsByTagNameNS(tempStr4, tempStr2);
  +        TASSERT(nl->getLength() == 1);
  +        TASSERT(nl->item(0) == elb);
   
  -        nl = doc.getElementsByTagNameNS("*", "elb");
  -        TASSERT(nl.getLength() == 2);
  -        TASSERT(nl.item(0) == elb);
  -        TASSERT(nl.item(1) == ele);
  +        XMLString::transcode("*", tempStr, 3999);
  +        nl = doc->getElementsByTagNameNS(tempStr, tempStr2);
  +        TASSERT(nl->getLength() == 2);
  +        TASSERT(nl->item(0) == elb);
  +        TASSERT(nl->item(1) == ele);
   
  -        nl = doc.getElementsByTagNameNS("http://nsa", "*");
  -        TASSERT(nl.getLength() == 2);
  -        TASSERT(nl.item(0) == ela);
  -        TASSERT(nl.item(1) == eld);
  +        nl = doc->getElementsByTagNameNS(tempStr5, tempStr);
  +        TASSERT(nl->getLength() == 2);
  +        TASSERT(nl->item(0) == ela);
  +        TASSERT(nl->item(1) == eld);
   
  -        nl = doc.getElementsByTagNameNS("*", "*");
  -        TASSERT(nl.getLength() == 6);     // Gets the document root element, plus 5 more
  +        nl = doc->getElementsByTagNameNS(tempStr, tempStr);
  +        TASSERT(nl->getLength() == 6);     // Gets the document root element, plus 5 more
   
  -        TASSERT(nl.item(6) == 0);
  -        // TASSERT(nl.item(-1) == 0);
  +        TASSERT(nl->item(6) == 0);
  +        // TASSERT(nl->item(-1) == 0);
   
  -        nl = rootEl.getElementsByTagNameNS("*", "*");
  -        TASSERT(nl.getLength() == 5);
  +        nl = rootEl->getElementsByTagNameNS(tempStr, tempStr);
  +        TASSERT(nl->getLength() == 5);
   
   
  -        nl = doc.getElementsByTagNameNS("http://nsa", "d:ela");
  -        TASSERT(nl.getLength() == 0);
  +        XMLString::transcode("d:ela", tempStr2, 3999);
  +        nl = doc->getElementsByTagNameNS(tempStr5, tempStr2);
  +        TASSERT(nl->getLength() == 0);
   
   
           //
           // Node lists are Live
           //
   
  -        nl = doc.getElementsByTagNameNS("*", "*");
  -        DOM_NodeList nla = ela.getElementsByTagNameNS("*", "*");
  +        nl = doc->getElementsByTagNameNS(tempStr, tempStr);
  +        IDOM_NodeList* nla = ela->getElementsByTagNameNS(tempStr, tempStr);
   
  -        TASSERT(nl.getLength() == 6);
  -        TASSERT(nla.getLength() == 0);
  +        TASSERT(nl->getLength() == 6);
  +        TASSERT(nla->getLength() == 0);
   
  -        rootEl.removeChild(elc);
  -        TASSERT(nl.getLength() == 5);
  -        TASSERT(nla.getLength() == 0);
  -
  -        ela.appendChild(elc);
  -        TASSERT(nl.getLength() == 6);
  -        TASSERT(nla.getLength() == 1);
  +        rootEl->removeChild(elc);
  +        TASSERT(nl->getLength() == 5);
  +        TASSERT(nla->getLength() == 0);
  +
  +        ela->appendChild(elc);
  +        TASSERT(nl->getLength() == 6);
  +        TASSERT(nla->getLength() == 1);
  +        delete doc;
  +        delete dt;
       }
  -    TESTEPILOG;
  +
   
   
      //
       // Attributes and NamedNodeMaps.
       //
  -    TESTPROLOG;
  +
       {
   
           // Set up an initial (root element only) document.
           //
  -        DOM_DOMImplementation impl;
  +        IDOM_DOMImplementation* impl = IDOM_DOMImplementation::getImplementation();
   
  -        DOMString qName = "foo:docName";
  -        DOMString pubId = "pubId";
  -        DOMString sysId = "http://sysId";
  -        DOM_DocumentType dt = impl.createDocumentType(qName, pubId, sysId);
  -
  -        DOMString docNSURI = "http://document.namespace";
  -        DOM_Document doc = impl.createDocument(docNSURI, qName, dt);
  -        DOM_Element rootEl = doc.getDocumentElement();
  +        XMLString::transcode("foo:docName", tempStr, 3999);
  +        XMLString::transcode("pubId", tempStr2, 3999);
  +        XMLString::transcode("http://sysId", tempStr3, 3999);
  +        IDOM_DocumentType* dt = impl->createDocumentType(tempStr, tempStr2, tempStr3);
  +
  +        XMLString::transcode("http://document.namespace", tempStr2, 3999);
  +        IDOM_Document* doc = impl->createDocument(tempStr2, tempStr, dt);
  +        IDOM_Element* rootEl = doc->getDocumentElement();
   
           //
           // Create a set of attributes and hang them on the root element.
           //
  -        DOM_Attr attra = doc.createAttributeNS("http://nsa", "a:attra");
  -        rootEl.setAttributeNodeNS(attra);
  -        DOM_Attr attrb = doc.createAttributeNS("http://nsb", "attrb");
  -        rootEl.setAttributeNodeNS(attrb);
  -        DOM_Attr attrc = doc.createAttributeNS("",           "attrc");
  -        rootEl.setAttributeNodeNS(attrc);
  -        DOM_Attr attrd = doc.createAttributeNS("http://nsa", "d:attra");
  -        rootEl.setAttributeNodeNS(attrd);
  -        DOM_Attr attre = doc.createAttributeNS("http://nse", "attrb");
  -        rootEl.setAttributeNodeNS(attre);
  +        XMLString::transcode("http://nsa", tempStr5, 3999);
  +        XMLString::transcode("http://nsb", tempStr4, 3999);
  +        XMLString::transcode("", tempStr3, 3999);
  +        XMLString::transcode("a:attra", tempStr2, 3999);
  +
  +        IDOM_Attr* attra = doc->createAttributeNS(tempStr5, tempStr2);
  +        rootEl->setAttributeNodeNS(attra);
  +
  +        XMLString::transcode("attrb", tempStr, 3999);
  +        IDOM_Attr* attrb = doc->createAttributeNS(tempStr4, tempStr);
  +        rootEl->setAttributeNodeNS(attrb);
  +
  +        XMLString::transcode("attrc", tempStr, 3999);
  +        IDOM_Attr* attrc = doc->createAttributeNS(tempStr3, tempStr);
  +        rootEl->setAttributeNodeNS(attrc);
  +
  +        XMLString::transcode("d:attra", tempStr, 3999);
  +        IDOM_Attr* attrd = doc->createAttributeNS(tempStr5, tempStr);
  +        rootEl->setAttributeNodeNS(attrd);
  +
  +        XMLString::transcode("http://nse", tempStr2, 3999);
  +        XMLString::transcode("attrb", tempStr, 3999);
  +        IDOM_Attr* attre = doc->createAttributeNS(tempStr2, tempStr);
  +        rootEl->setAttributeNodeNS(attre);
   
           //
           // Check that the attribute nodes were created with the correct properties.
           //
  -        TASSERT(attra.getNodeName().equals("a:attra"));
  -        TASSERT(attra.getNamespaceURI().equals("http://nsa"));
  -        TASSERT(attra.getLocalName().equals("attra"));
  -        TASSERT(attra.getName().equals("a:attra"));
  -        TASSERT(attra.getNodeType() == DOM_Node::ATTRIBUTE_NODE);
  -        TASSERT(attra.getNodeValue().equals(""));
  -        TASSERT(attra.getPrefix().equals("a"));
  -        TASSERT(attra.getSpecified() == true);
  -        TASSERT(attra.getValue().equals(""));
  -        TASSERT(attra.getOwnerElement() == 0);
  +        XMLString::transcode("a:attra", tempStr2, 3999);
  +        TASSERT(!XMLString::compareString(attra->getNodeName(), tempStr2));
  +        TASSERT(!XMLString::compareString(attra->getNamespaceURI(), tempStr5));
  +
  +        XMLString::transcode("attra", tempStr, 3999);
  +        TASSERT(!XMLString::compareString(attra->getLocalName(), tempStr));
  +        TASSERT(!XMLString::compareString(attra->getName(), tempStr2));
  +        TASSERT(attra->getNodeType() == IDOM_Node::ATTRIBUTE_NODE);
  +        TASSERT(!XMLString::compareString(attra->getNodeValue(), tempStr3));
  +
  +        XMLString::transcode("a", tempStr, 3999);
  +        TASSERT(!XMLString::compareString(attra->getPrefix(), tempStr));
  +        TASSERT(attra->getSpecified() == true);
  +        TASSERT(!XMLString::compareString(attra->getValue(), tempStr3));
  +        TASSERT(attra->getOwnerElement() == 0);
   
           // Test methods of NamedNodeMap
  -        DOM_NamedNodeMap nnm = rootEl.getAttributes();
  -        TASSERT(nnm.getLength() == 4);
  -        TASSERT(nnm.getNamedItemNS("http://nsa", "attra") == attrd);
  -        TASSERT(nnm.getNamedItemNS("http://nsb", "attrb") == attrb);
  -        TASSERT(nnm.getNamedItemNS("http://nse", "attrb") == attre);
  -        TASSERT(nnm.getNamedItemNS("", "attrc") == attrc);
  -        TASSERT(nnm.getNamedItemNS("", "attra") == 0);
  -        TASSERT(nnm.getNamedItemNS("http://nsa", "attrb") == 0);
  +        IDOM_NamedNodeMap* nnm = rootEl->getAttributes();
  +        TASSERT(nnm->getLength() == 4);
  +
  +        XMLString::transcode("attra", tempStr2, 3999);
  +        XMLString::transcode("attrb", tempStr, 3999);
  +
  +        TASSERT(nnm->getNamedItemNS(tempStr5, tempStr2) == attrd);
  +        TASSERT(nnm->getNamedItemNS(tempStr4, tempStr) == attrb);
  +        TASSERT(nnm->getNamedItemNS(tempStr3, tempStr2) == 0);
  +        TASSERT(nnm->getNamedItemNS(tempStr5, tempStr) == 0);
  +
  +        XMLString::transcode("http://nse", tempStr2, 3999);
  +        TASSERT(nnm->getNamedItemNS(tempStr2, tempStr) == attre);
  +
  +        XMLString::transcode("attrc", tempStr2, 3999);
  +        TASSERT(nnm->getNamedItemNS(tempStr3, tempStr2) == attrc);
   
           // Test hasAttributes, hasAttribute, hasAttributeNS
  -        TASSERT(doc.hasAttributes() ==  false);
  -        TASSERT(attrc.hasAttributes() == false);
  -        TASSERT(rootEl.hasAttributes() == true);
  -        TASSERT(rootEl.hasAttribute("attrc") == true);
  -        TASSERT(rootEl.hasAttribute("wrong") == false);
  -        TASSERT(rootEl.hasAttributeNS("http://nsa", "attra") == true);
  -        TASSERT(rootEl.hasAttributeNS("http://nsa", "wrong") == false);
  +        TASSERT(doc->hasAttributes() ==  false);
  +        TASSERT(attrc->hasAttributes() == false);
  +        TASSERT(rootEl->hasAttributes() == true);
  +        TASSERT(rootEl->hasAttribute(tempStr2) == true);
  +
  +        XMLString::transcode("wrong", tempStr, 3999);
  +        TASSERT(rootEl->hasAttribute(tempStr) == false);
  +
  +        XMLString::transcode("attra", tempStr2, 3999);
  +        TASSERT(rootEl->hasAttributeNS(tempStr5, tempStr2) == true);
  +        TASSERT(rootEl->hasAttributeNS(tempStr5, tempStr) == false);
  +        delete doc;
  +        delete dt;
       }
  -    TESTEPILOG;
  +
   
       //
       //
  @@ -1679,7 +1564,7 @@
   //   main
   //
   //---------------------------------------------------------------------------------------
  -int  main()
  +int  mymain()
   {
       try {
           XMLPlatformUtils::Initialize();
  @@ -1692,19 +1577,22 @@
           return -1;
       }
   
  -
  -    DOMStringTests();
  -    DOMBasicTests();
  -    DOMNSTests();
  +    IDOMBasicTests();
  +    IDOMNSTests();
   
       //
       //  Print Final allocation stats for full set of tests
       //
       XMLPlatformUtils::Terminate();
  -    DomMemDebug().print();
  +
       return 0;
   
   };
   
  +int  main() {
  +    for (int i = 0; i<50; i++)
  +        mymain();
   
  +    printf("Test Run Successfully\n");
  +}
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org