blob: 2ccac6e7090c1e73be0904b154ec4df0f2f82ae0 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2002, 2003 GEBIT Gesellschaft fuer EDV-Beratung
* und Informatik-Technologien mbH,
* Berlin, Duesseldorf, Frankfurt (Germany) and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* GEBIT Gesellschaft fuer EDV-Beratung und Informatik-Technologien mbH - initial implementation
* IBM Corporation - additional tests
*******************************************************************************/
package org.eclipse.ui.externaltools.internal.ant.editor.test;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import javax.xml.parsers.ParserConfigurationException;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.apache.xerces.parsers.SAXParser;
import org.eclipse.ant.ui.internal.editor.EnclosingTargetSearchingHandler;
import org.w3c.dom.Element;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
/**
* Tests the parsing using the EnclosingTargetSearchingHandler.
*
* @version 19.11.2002
* @author Alf Schiefelbein
*/
public class EnclosingTargetSearchingHandlerTest extends TestCase {
/**
* Constructor for EnclosingTargetSearchingHandlerTest.
* @param name
*/
public EnclosingTargetSearchingHandlerTest(String name) {
super(name);
}
/**
* The test suite.
*/
public static Test suite() {
TestSuite suite = new TestSuite("EnclosingTargetSearchingHandlerTest");
suite.addTest(new EnclosingTargetSearchingHandlerTest("testParsingOfBuildFileWithTargetElement"));
suite.addTest(new EnclosingTargetSearchingHandlerTest("testParsingOfBuildFileWithoutTargetElement"));
suite.addTest(new EnclosingTargetSearchingHandlerTest("testParsingOfEmptyBuildFile"));
return suite;
}
/**
* Tests parsing an XML file with the use of our EnclosingTargetSearchingHandler.
*/
public void testParsingOfBuildFileWithoutTargetElement() throws SAXException, IOException, ParserConfigurationException {
SAXParser parser = getSAXParser();
URL url= getClass().getResource("test1.xml");
File file= new File(url.getFile());
EnclosingTargetSearchingHandler handler = new EnclosingTargetSearchingHandler(file.getParentFile(), 4, 8);
InputStream stream = getClass().getResourceAsStream("test1.xml");
parse(stream, parser, handler, file);
Element element = handler.getParentElement(false);
assertNull(element);
element = handler.getParentElement(true);
assertNull(element);
handler = new EnclosingTargetSearchingHandler(file.getParentFile(), 2, 0);
stream = getClass().getResourceAsStream("test1.xml");
parse(stream, parser, handler, file);
element = handler.getParentElement(false);
assertNull(element);
element = handler.getParentElement(true);
assertNull(element);
handler = new EnclosingTargetSearchingHandler(file.getParentFile(), 0, 0);
stream = getClass().getResourceAsStream("test1.xml");
parse(stream, parser, handler, file);
element = handler.getParentElement(false);
assertNull(element);
element = handler.getParentElement(true);
assertNull(element);
}
/**
* Tests parsing an XML file with the use of our EnclosingTargetSearchingHandler.
*/
public void testParsingOfBuildFileWithTargetElement() throws SAXException, ParserConfigurationException, IOException {
SAXParser parser = getSAXParser();
URL url= getClass().getResource("russianbuild.xml");
File file= new File(url.getFile());
EnclosingTargetSearchingHandler handler = new EnclosingTargetSearchingHandler(file.getParentFile(), 5, 5);
InputStream stream = getClass().getResourceAsStream("russianbuild.xml");
parse(stream, parser, handler, file);
Element element = handler.getParentElement(false);
assertNotNull(element);
assertEquals("target", element.getTagName());
element = handler.getParentElement(true);
assertNotNull(element);
assertEquals("target", element.getTagName());
assertEquals("init", element.getAttribute("name"));
handler = new EnclosingTargetSearchingHandler(file.getParentFile(), 7, 0);
stream = getClass().getResourceAsStream("russianbuild.xml");
parse(stream, parser, handler, file);
element = handler.getParentElement(false);
assertNull(element);
element = handler.getParentElement(true);
assertNull(element);
handler = new EnclosingTargetSearchingHandler(file.getParentFile(), 0, 0);
stream = getClass().getResourceAsStream("russianbuild.xml");
parse(stream, parser, handler, file);
element = handler.getParentElement(false);
assertNull(element);
element = handler.getParentElement(true);
assertNull(element);
}
/**
* Tests parsing an XML file with the use of our EnclosingTargetSearchingHandler.
*/
public void testParsingOfEmptyBuildFile() throws SAXException, ParserConfigurationException, IOException {
URL url= getClass().getResource("projectOnly.xml");
File file= new File(url.getFile());
EnclosingTargetSearchingHandler handler = new EnclosingTargetSearchingHandler(file.getParentFile(), 0, 0);
InputStream stream = getClass().getResourceAsStream("projectOnly.xml");
parse(stream, getSAXParser(), handler, file);
Element element = handler.getParentElement(false);
assertNull(element);
element = handler.getParentElement(true);
assertNull(element);
}
private SAXParser getSAXParser() throws SAXException {
SAXParser parser = parser = new SAXParser();
parser.setFeature("http://xml.org/sax/features/namespaces", false); //$NON-NLS-1$
return parser;
}
private void parse(InputStream stream, SAXParser parser, EnclosingTargetSearchingHandler handler, File editedFile) {
InputSource inputSource= new InputSource(stream);
if (editedFile != null) {
//needed for resolving relative external entities
inputSource.setSystemId(editedFile.getAbsolutePath());
}
parser.setContentHandler(handler);
parser.setDTDHandler(handler);
parser.setEntityResolver(handler);
parser.setErrorHandler(handler);
try {
parser.parse(inputSource);
} catch (SAXException e) {
} catch (IOException e) {
}
}
}