tng         2002/09/23 13:09:23

  Modified:    c/tests/DOM/DOMTest DTest.cpp DTest.h
  Log:
  DOM L3: Test baseURI with different parser's setting.
  
  Revision  Changes    Path
  1.32      +169 -176  xml-xerces/c/tests/DOM/DOMTest/DTest.cpp
  
  Index: DTest.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/tests/DOM/DOMTest/DTest.cpp,v
  retrieving revision 1.31
  retrieving revision 1.32
  diff -u -r1.31 -r1.32
  --- DTest.cpp 23 Sep 2002 18:27:48 -0000      1.31
  +++ DTest.cpp 23 Sep 2002 20:09:23 -0000      1.32
  @@ -56,6 +56,9 @@
   
   /*
    * $Log$
  + * Revision 1.32  2002/09/23 20:09:23  tng
  + * DOM L3: Test baseURI with different parser's setting.
  + *
    * Revision 1.31  2002/09/23 18:27:48  tng
    * DOM L3: Test baseURI.   Added by Gareth Reakes and Thomas Ford.
    *
  @@ -1016,8 +1019,25 @@
           // Test baseURI. BaseURI is set on nodes at parse time so we
           // cannot use the docBuilder document above
   
  -        OK = test.testBaseURI();
  +        //Setup parser
  +
  +        XercesDOMParser *parser = new XercesDOMParser;
  +        parser->setValidationScheme(XercesDOMParser::Val_Auto);
  +        parser->setDoNamespaces(true);
  +        parser->setDoSchema(true);
  +        parser->setCreateEntityReferenceNodes(true);
  +
  +        OK = test.testBaseURI(parser);
  +
  +        parser->setCreateEntityReferenceNodes(false);
  +        OK = test.testBaseURI(parser);
  +
  +        parser->setDoNamespaces(false);
  +        parser->setDoSchema(false);
  +        OK = test.testBaseURI(parser);
   
  +        parser->setCreateEntityReferenceNodes(true);
  +        OK = test.testBaseURI(parser);
       };
   
       XMLPlatformUtils::Terminate();
  @@ -4370,242 +4390,215 @@
    *
    */
   
  -bool DOMTest::testBaseURI(void) {
  +bool DOMTest::testBaseURI(XercesDOMParser* parser) {
   
       bool OK;
   
  -    //Run tests using both setDoNamespaces(true) and (false)
  +    try {
  +        // this one assumes executing in samples/data where personal-schema.xml 
resides
  +        // please modify if this is not correct
  +        parser->parse("personal-schema.xml");
  +    }
   
  -    const char *namespaceResolver;
  -    bool namespaceRes = true;
  -    bool doSchemaRes = true;
  +    catch (...) {
  +        fprintf(stderr, "parsing personal-schema.xml failed at line %i\n", 
__LINE__);
  +        return false;
  +    }
   
  -    do {
  +    // test only if there is no error
  +    if (!parser->getErrorCount()) {
   
  -        //Setup parser
  +        //Setup testing strings
  +        XMLCh *fileSchema = XMLString::transcode("file://");
  +        XMLCh *filePath = XMLString::transcode("samples/data/personal-schema.xml");
   
  -        XercesDOMParser *parser = new XercesDOMParser;
  -        parser->setValidationScheme(XercesDOMParser::Val_Auto);
  -        parser->setDoNamespaces(namespaceRes);
  -        parser->setDoSchema(doSchemaRes);
  -        parser->setCreateEntityReferenceNodes(true);
  +        //Test document baseURI
  +        DOMDocument *document = parser->getDocument();
   
  -        if(namespaceRes) {
  -            namespaceResolver = "setDoNamespaces(true)";
  -        }
  -        else {
  -            namespaceResolver = "setDoNamespaces(false)";
  -        }
  +        //The baseURI should contain `file://' and 
`samples/data/personal-schema.xml'
  +        const XMLCh *docBaseURI = document->getBaseURI();
   
  -        try {
  -            // this one assumes executing in samples/data where personal-schema.xml 
resides
  -            // please modify if this is not correct
  -            parser->parse("personal-schema.xml");
  +        if(XMLString::patternMatch(docBaseURI, fileSchema) == -1) {
  +            OK = false;
  +            fprintf(stderr, "checking baseURI failed at line %i\n", __LINE__);
           }
   
  -        catch (...) {
  -            fprintf(stderr, "parsing personal-schema.xml failed at line %i\n", 
__LINE__);
  -            return false;
  +        if(XMLString::patternMatch(docBaseURI, filePath) == -1) {
  +            OK = false;
  +            fprintf(stderr, "checking baseURI failed at line %i\n", __LINE__);
           }
   
  -        // test only if there is no error
  -        if (!parser->getErrorCount()) {
  -
  -            //Setup testing strings
  -            XMLCh *fileSchema = XMLString::transcode("file://");
  -            XMLCh *filePath = 
XMLString::transcode("samples/data/personal-schema.xml");
  -
  -            //Test document baseURI
  -            DOMDocument *document = parser->getDocument();
  -
  -            //The baseURI should contain `file://' and 
`samples/data/personal-schema.xml'
  -            const XMLCh *docBaseURI = document->getBaseURI();
  +        //Create relative paths from document baseURI
   
  -            if(XMLString::patternMatch(docBaseURI, fileSchema) == -1) {
  -                OK = false;
  -                fprintf(stderr, "checking baseURI failed at line %i\n", __LINE__);
  -            }
  -
  -            if(XMLString::patternMatch(docBaseURI, filePath) == -1) {
  -                OK = false;
  -                fprintf(stderr, "checking baseURI failed at line %i\n", __LINE__);
  -            }
  -
  -            //Create relative paths from document baseURI
  +        XMLCh *docBaseURIRoot = new XMLCh [ XMLString::stringLen(docBaseURI) ];
  +        XMLString::copyNString(docBaseURIRoot, docBaseURI, 
XMLString::lastIndexOf(docBaseURI, chForwardSlash) + 1);
   
  -            XMLCh *docBaseURIRoot = new XMLCh [ XMLString::stringLen(docBaseURI) ];
  -            XMLString::copyNString(docBaseURIRoot, docBaseURI, 
XMLString::lastIndexOf(docBaseURI, chForwardSlash) + 1);
  +        XMLCh *base_foobar = new XMLCh [ XMLString::stringLen(docBaseURIRoot) + 8];
  +        XMLString::copyString(base_foobar, docBaseURIRoot);
  +        XMLCh *foobar = XMLString::transcode("foo/bar");
  +        XMLString::catString(base_foobar, foobar);
  +
  +        XMLCh *base_foobarbar = new XMLCh [ XMLString::stringLen(docBaseURIRoot) + 
12];
  +        XMLString::copyString(base_foobarbar, docBaseURIRoot);
  +        XMLCh *foobarbar = XMLString::transcode("foo/bar/bar");
  +        XMLString::catString(base_foobarbar, foobarbar);
  +
  +        XMLCh *base_foocarbar = new XMLCh [ XMLString::stringLen(docBaseURIRoot) + 
12];
  +        XMLString::copyString(base_foocarbar, docBaseURIRoot);
  +        XMLCh *foocarbar = XMLString::transcode("foo/car/bar");
  +        XMLString::catString(base_foocarbar, foocarbar);
  +
  +        XMLCh *file_autobar = XMLString::transcode("file:///auto/bar");
  +        XMLCh *file_carfoo = XMLString::transcode("file:///car/foo/");
  +        XMLCh *file_carfoobarbar = XMLString::transcode("file:///car/foo/bar/bar");
  +
  +        XMLCh *http_carcar = XMLString::transcode("http://www.example.com/car/car";);
  +        XMLCh *http_barfoo = 
XMLString::transcode("http://www.example.com/bar/foo/";);
  +        XMLCh *http_barfoofoobar = 
XMLString::transcode("http://www.example.com/bar/foo/foo/bar";);
   
  -            XMLCh *base_foobar = new XMLCh [ XMLString::stringLen(docBaseURIRoot) + 
8];
  -            XMLString::copyString(base_foobar, docBaseURIRoot);
  -            XMLCh *foobar = XMLString::transcode("foo/bar");
  -            XMLString::catString(base_foobar, foobar);
  +        //Processing instruction before Document Element (has document baseURI)
   
  -            XMLCh *base_foobarbar = new XMLCh [ 
XMLString::stringLen(docBaseURIRoot) + 12];
  -            XMLString::copyString(base_foobarbar, docBaseURIRoot);
  -            XMLCh *foobarbar = XMLString::transcode("foo/bar/bar");
  -            XMLString::catString(base_foobarbar, foobarbar);
  -
  -            XMLCh *base_foocarbar = new XMLCh [ 
XMLString::stringLen(docBaseURIRoot) + 12];
  -            XMLString::copyString(base_foocarbar, docBaseURIRoot);
  -            XMLCh *foocarbar = XMLString::transcode("foo/car/bar");
  -            XMLString::catString(base_foocarbar, foocarbar);
  -
  -            XMLCh *file_autobar = XMLString::transcode("file:///auto/bar");
  -            XMLCh *file_carfoo = XMLString::transcode("file:///car/foo/");
  -            XMLCh *file_carfoobarbar = 
XMLString::transcode("file:///car/foo/bar/bar");
  -
  -            XMLCh *http_carcar = 
XMLString::transcode("http://www.example.com/car/car";);
  -            XMLCh *http_barfoo = 
XMLString::transcode("http://www.example.com/bar/foo/";);
  -            XMLCh *http_barfoofoobar = 
XMLString::transcode("http://www.example.com/bar/foo/foo/bar";);
  -
  -            //Processing instruction before Document Element (has document baseURI)
  -
  -            DOMNode *node = document->getFirstChild();
  -            while(node->getNodeType() != DOMNode::PROCESSING_INSTRUCTION_NODE)
  -                node = node->getNextSibling();
  +        DOMNode *node = document->getFirstChild();
  +        while(node->getNodeType() != DOMNode::PROCESSING_INSTRUCTION_NODE)
  +            node = node->getNextSibling();
   
  -            if(XMLString::compareString(node->getBaseURI(), docBaseURI) != 0) {
  -                OK = false;
  -                fprintf(stderr, "checking baseURI (%s) failed at line %i\n", 
namespaceResolver, __LINE__);
  -            }
  +        if(XMLString::compareString(node->getBaseURI(), docBaseURI) != 0) {
  +            OK = false;
  +            fprintf(stderr, "checking baseURI failed at line %i\n",  __LINE__);
  +        }
   
  -            //Document Element baseURI (same as document)
  +        //Document Element baseURI (same as document)
   
  -            node = document->getDocumentElement();
  +        node = document->getDocumentElement();
   
  -            if(XMLString::compareString(node->getBaseURI(), docBaseURI) != 0) {
  -                OK = false;
  -                fprintf(stderr, "checking baseURI (%s), failed at line %i\n", 
namespaceResolver, __LINE__);
  -            }
  +        if(XMLString::compareString(node->getBaseURI(), docBaseURI) != 0) {
  +            OK = false;
  +            fprintf(stderr, "checking baseURI, failed at line %i\n", __LINE__);
  +        }
   
  -            // <level 1>
  +        // <level 1>
   
  -            node = node->getFirstChild();
  -            while(node->getNodeType() != DOMNode::ELEMENT_NODE)
  -                node = node->getNextSibling();
  +        node = node->getFirstChild();
  +        while(node->getNodeType() != DOMNode::ELEMENT_NODE)
  +            node = node->getNextSibling();
   
  -            DOMNode *level1 = node;
  +        DOMNode *level1 = node;
   
  -            // <one>
  +        // <one>
   
  -            node = node->getFirstChild();
  -            while(node->getNodeType() != DOMNode::ELEMENT_NODE)
  -                node = node->getNextSibling();
  +        node = node->getFirstChild();
  +        while(node->getNodeType() != DOMNode::ELEMENT_NODE)
  +            node = node->getNextSibling();
   
  -            if(XMLString::compareString(node->getBaseURI(), base_foobar) != 0) {
  -                OK = false;
  -                fprintf(stderr, "checking baseURI (%s) failed at line %i\n", 
namespaceResolver, __LINE__);
  -            }
  +        if(XMLString::compareString(node->getBaseURI(), base_foobar) != 0) {
  +            OK = false;
  +            fprintf(stderr, "checking baseURI failed at line %i\n",  __LINE__);
  +        }
   
  -            // <inner1>
  +        // <inner1>
   
  -            node = node->getFirstChild();
  -            while(node->getNodeType() != DOMNode::ELEMENT_NODE)
  -                node = node->getNextSibling();
  +        node = node->getFirstChild();
  +        while(node->getNodeType() != DOMNode::ELEMENT_NODE)
  +            node = node->getNextSibling();
   
  -            if(XMLString::compareString(node->getBaseURI(), base_foobarbar) != 0) {
  -                OK = false;
  -                fprintf(stderr, "checking baseURI (%s) failed at line %i\n", 
namespaceResolver, __LINE__);
  -            }
  +        if(XMLString::compareString(node->getBaseURI(), base_foobarbar) != 0) {
  +            OK = false;
  +            fprintf(stderr, "checking baseURI failed at line %i\n",  __LINE__);
  +        }
   
  -            // <inner2>
  +        // <inner2>
   
  +        node = node->getNextSibling();
  +        while(node->getNodeType() != DOMNode::ELEMENT_NODE)
               node = node->getNextSibling();
  -            while(node->getNodeType() != DOMNode::ELEMENT_NODE)
  -                node = node->getNextSibling();
   
  -            if(XMLString::compareString(node->getBaseURI(), base_foocarbar) != 0) {
  -                OK = false;
  -                fprintf(stderr, "checking baseURI (%s) failed at line %i\n", 
namespaceResolver, __LINE__);
  -            }
  +        if(XMLString::compareString(node->getBaseURI(), base_foocarbar) != 0) {
  +            OK = false;
  +            fprintf(stderr, "checking baseURI failed at line %i\n",  __LINE__);
  +        }
   
  -            // <?proc-inst-2?>
  +        // <?proc-inst-2?>
   
  +        node = node->getNextSibling();
  +        while(node->getNodeType() != DOMNode::PROCESSING_INSTRUCTION_NODE)
               node = node->getNextSibling();
  -            while(node->getNodeType() != DOMNode::PROCESSING_INSTRUCTION_NODE)
  -                node = node->getNextSibling();
  -
  -            if(XMLString::compareString(node->getBaseURI(), base_foobar) != 0) {
  -                OK = false;
  -                fprintf(stderr, "checking baseURI (%s) failed at line %i\n", 
namespaceResolver, __LINE__);
  -            }
  -
  -            // <level2>
   
  -            node = level1->getNextSibling();
  -            while(node->getNodeType() != DOMNode::ELEMENT_NODE)
  -                node = node->getNextSibling();
  +        if(XMLString::compareString(node->getBaseURI(), base_foobar) != 0) {
  +            OK = false;
  +            fprintf(stderr, "checking baseURI failed at line %i\n",  __LINE__);
  +        }
   
  -            DOMNode *level2 = node;
  +        // <level2>
   
  -            if(XMLString::compareString(node->getBaseURI(), file_autobar) != 0) {
  -                OK = false;
  -                fprintf(stderr, "checking baseURI (%s) failed at line %i\n", 
namespaceResolver, __LINE__);
  -            }
  +        node = level1->getNextSibling();
  +        while(node->getNodeType() != DOMNode::ELEMENT_NODE)
  +            node = node->getNextSibling();
   
  -            // <two>
  +        DOMNode *level2 = node;
   
  -            node = node->getFirstChild();
  -            while(node->getNodeType() != DOMNode::ELEMENT_NODE)
  -                node = node->getNextSibling();
  +        if(XMLString::compareString(node->getBaseURI(), file_autobar) != 0) {
  +            OK = false;
  +            fprintf(stderr, "checking baseURI failed at line %i\n",  __LINE__);
  +        }
   
  -            if(XMLString::compareString(node->getBaseURI(), file_carfoo) != 0) {
  -                OK = false;
  -                fprintf(stderr, "checking baseURI (%s) failed at line %i\n", 
namespaceResolver, __LINE__);
  -            }
  +        // <two>
   
  -            // <inner1>
  +        node = node->getFirstChild();
  +        while(node->getNodeType() != DOMNode::ELEMENT_NODE)
  +            node = node->getNextSibling();
   
  -            node = node->getFirstChild();
  -            while(node->getNodeType() != DOMNode::ELEMENT_NODE)
  -                node = node->getNextSibling();
  +        if(XMLString::compareString(node->getBaseURI(), file_carfoo) != 0) {
  +            OK = false;
  +            fprintf(stderr, "checking baseURI failed at line %i\n",  __LINE__);
  +        }
   
  -            if(XMLString::compareString(node->getBaseURI(), file_carfoobarbar) != 
0) {
  -                OK = false;
  -                fprintf(stderr, "checking baseURI (%s) failed at line %i\n", 
namespaceResolver, __LINE__);
  -            }
  +        // <inner1>
   
  -            // <level3>
  +        node = node->getFirstChild();
  +        while(node->getNodeType() != DOMNode::ELEMENT_NODE)
  +            node = node->getNextSibling();
   
  -            node = level2->getNextSibling();
  -            while(node->getNodeType() != DOMNode::ELEMENT_NODE)
  -                node = node->getNextSibling();
  +        if(XMLString::compareString(node->getBaseURI(), file_carfoobarbar) != 0) {
  +            OK = false;
  +            fprintf(stderr, "checking baseURI failed at line %i\n",  __LINE__);
  +        }
   
  -            if(XMLString::compareString(node->getBaseURI(), http_carcar) != 0) {
  -                OK = false;
  -                fprintf(stderr, "checking baseURI (%s) failed at line %i\n", 
namespaceResolver, __LINE__);
  -            }
  +        // <level3>
   
  -            // <three>
  +        node = level2->getNextSibling();
  +        while(node->getNodeType() != DOMNode::ELEMENT_NODE)
  +            node = node->getNextSibling();
   
  -            node = node->getFirstChild();
  -            while(node->getNodeType() != DOMNode::ELEMENT_NODE)
  -                node = node->getNextSibling();
  +        if(XMLString::compareString(node->getBaseURI(), http_carcar) != 0) {
  +            OK = false;
  +            fprintf(stderr, "checking baseURI failed at line %i\n",  __LINE__);
  +        }
   
  -            if(XMLString::compareString(node->getBaseURI(), http_barfoo) != 0) {
  -                OK = false;
  -                fprintf(stderr, "checking baseURI (%s) failed at line %i\n", 
namespaceResolver, __LINE__);
  -            }
  +        // <three>
   
  -            // <inner1>
  +        node = node->getFirstChild();
  +        while(node->getNodeType() != DOMNode::ELEMENT_NODE)
  +            node = node->getNextSibling();
   
  -            node = node->getFirstChild();
  -            while(node->getNodeType() != DOMNode::ELEMENT_NODE)
  -                node = node->getNextSibling();
  +        if(XMLString::compareString(node->getBaseURI(), http_barfoo) != 0) {
  +            OK = false;
  +            fprintf(stderr, "checking baseURI failed at line %i\n",  __LINE__);
  +        }
   
  -            if(XMLString::compareString(node->getBaseURI(), http_barfoofoobar) != 
0) {
  -                OK = false;
  -                fprintf(stderr, "checking baseURI (%s) failed at line %i\n", 
namespaceResolver, __LINE__);
  -            }
  +        // <inner1>
   
  -            namespaceRes = !namespaceRes;
  +        node = node->getFirstChild();
  +        while(node->getNodeType() != DOMNode::ELEMENT_NODE)
  +            node = node->getNextSibling();
   
  +        if(XMLString::compareString(node->getBaseURI(), http_barfoofoobar) != 0) {
  +            OK = false;
  +            fprintf(stderr, "checking baseURI failed at line %i\n",  __LINE__);
           }
           else {
               printf("baseURI test was not carried out\n");
           }
  -    } while(namespaceRes == false);
  +    }
   
       return OK;
   }
  
  
  
  1.9       +6 -1      xml-xerces/c/tests/DOM/DOMTest/DTest.h
  
  Index: DTest.h
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/tests/DOM/DOMTest/DTest.h,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- DTest.h   23 Sep 2002 18:27:48 -0000      1.8
  +++ DTest.h   23 Sep 2002 20:09:23 -0000      1.9
  @@ -56,6 +56,9 @@
   
   /*
    * $Log$
  + * Revision 1.9  2002/09/23 20:09:23  tng
  + * DOM L3: Test baseURI with different parser's setting.
  + *
    * Revision 1.8  2002/09/23 18:27:48  tng
    * DOM L3: Test baseURI.   Added by Gareth Reakes and Thomas Ford.
    *
  @@ -89,6 +92,8 @@
   //  define null for compatibility with original Java source code.
   #define null 0
   
  +class XercesDOMParser;
  +
   class DOMTest {
   public:
        static DOMElement           *testElementNode;
  @@ -154,7 +159,7 @@
   bool testText(DOMDocument* document);
   bool treeCompare(DOMNode* node, DOMNode* node2);
   
  -bool testBaseURI(void);
  +bool testBaseURI(XercesDOMParser* parser);
   
   };
   
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to