
/*
 * Copyright (c) 2001-2003 World Wide Web Consortium, (Massachusetts Institute
 * of Technology, Institut National de Recherche en Informatique et en
 * Automatique, Keio University). All Rights Reserved. This program is
 * distributed under the W3C's Software Intellectual Property License. This
 * program is distributed in the hope that it will be useful, but WITHOUT ANY
 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
 * FOR A PARTICULAR PURPOSE. See W3C License
 * http://www.w3.org/Consortium/Legal/ for more details.
 */

/*
 * $Log: DOMTest.java,v $
 * Revision 1.12  2004/01/05 08:27:14  dom-ts-4
 * XHTML compatible L3 Core tests  (bug 455)
 *
 * Revision 1.11  2003/12/30 06:17:08  dom-ts-4
 * Miscellaneous L&S changes based on implementor feedback (bug 447)
 *
 * Revision 1.10  2003/12/19 22:21:04  dom-ts-4
 * willBeModified violation detection support (bug 412)
 * Revision 1.9 2003/12/09 08:22:27 dom-ts-4 Additional
 * L&S tests, mostly configuration (Bug 401)
 *
 * Revision 1.8 2003/12/02 03:49:29 dom-ts-4 Load/save fixup (bug 396)
 *
 * Revision 1.7 2003/06/27 05:36:05 dom-ts-4 contentType condition fixes:
 * http://www.w3.org/Bugs/Public/show_bug.cgi?id=241
 *
 * Revision 1.6 2003/04/24 05:02:05 dom-ts-4 Xalan-J support for L3 XPath
 * http://www.w3.org/Bugs/Public/show_bug.cgi?id=191
 *
 * Revision 1.5 2003/04/23 05:48:24 dom-ts-4 DOMTSML and framework support for
 * createXPathEvaluator http://www.w3.org/Bugs/Public/show_bug.cgi?id=190
 *
 * Revision 1.4 2003/04/03 07:18:23 dom-ts-4 Added openStream method
 *
 * Revision 1.3 2002/08/13 04:44:46 dom-ts-4 Added getImplementation()
 *
 * Revision 1.2 2002/02/03 04:22:35 dom-ts-4 DOM4J and Batik support added.
 * Rework of parser settings
 *
 * Revision 1.1 2001/07/23 04:52:20 dom-ts-4 Initial test running using JUnit.
 *
 */

package org.w3c.domts;

import dom.common.Loader;
import org.w3c.dom.Document;
import tools.util.JarUtil;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;


/**
 * This is an abstract base class for generated DOM tests
 */

public final class DOMTest {
    public static Document load(String docURI, boolean willBeModified) throws DOMTestLoadException {
        try {
            String sXml = JarUtil.getResourceFromJar(
                "xbean/dom/W3C/level2/core/files/" + docURI + ".xml");
            Loader _loader = Loader.getLoader();
            return _loader.load(sXml);
        } catch (Exception e) {
            throw new DOMTestLoadException(e);
        }
    }

    public static boolean isExpandEntityReferences() {
        return false;
    }


    public static void assertURIEquals(String assertID, String file, String actual) {
        //  URI must be non-null
        assertNotNull(assertID, actual);

        String uri = actual;

        int lastPound = actual.lastIndexOf("#");
        if (lastPound != -1) {
            // substring before pound
            uri = actual.substring(0, lastPound);
        }

        int lastQuestion = uri.lastIndexOf("?");
        if (lastQuestion != -1) {
            // substring before pound
            uri = actual.substring(0, lastQuestion);
        }

        int firstColon = uri.indexOf(":");
        int firstSlash = uri.indexOf("/");
        String actualPath = uri;
        if (firstColon != -1 && firstColon < firstSlash) {
            actualPath = uri.substring(firstColon + 1);
        }

        String actualFile = actualPath;
        if (file != null) {
            int finalSlash = actualPath.lastIndexOf("/");
            if (finalSlash != -1) {
                actualFile = actualPath.substring(finalSlash + 1);
            }
            assertEquals(assertID, file, actualFile);
        }
    }
}
