/*******************************************************************************
* Copyright (c) 2009 Red Hat, Inc.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Kent Sebastian <ksebasti@redhat.com> - initial API and implementation
*******************************************************************************/
package org.eclipse.linuxtools.oprofile.core.tests;
import static org.junit.Assert.assertEquals;
import java.io.FileReader;
import javax.xml.parsers.SAXParserFactory;
import org.eclipse.core.runtime.FileLocator;
import org.eclipse.core.runtime.Path;
import org.eclipse.linuxtools.internal.oprofile.core.opxml.OprofileSAXHandler;
import org.eclipse.linuxtools.internal.oprofile.core.opxml.checkevent.CheckEventsProcessor;
import org.junit.Before;
import org.junit.Test;
import org.osgi.framework.FrameworkUtil;
import org.xml.sax.InputSource;
import org.xml.sax.XMLReader;
public class TestCheckEventsParse {
private static final String REL_PATH_TO_TEST_XML_OK = "resources/test_check-event_ok.xml"; //$NON-NLS-1$
private static final String REL_PATH_TO_TEST_XML_INVALID_UMASK = "resources/test_check-event_invalid_umask.xml"; //$NON-NLS-1$
private static final String REL_PATH_TO_TEST_XML_INVALID_COUNTER = "resources/test_check-event_invalid_counter.xml"; //$NON-NLS-1$
private int[] test_ok, test_invalid_umask, test_invalid_counter;
@Before
public void setUp() throws Exception {
test_ok = new int[1];
setUpHelper(REL_PATH_TO_TEST_XML_OK, test_ok);
test_invalid_umask = new int[1];
setUpHelper(REL_PATH_TO_TEST_XML_INVALID_UMASK, test_invalid_umask);
test_invalid_counter = new int[1];
setUpHelper(REL_PATH_TO_TEST_XML_INVALID_COUNTER, test_invalid_counter);
}
//helper
private void setUpHelper(String fileToParse, final int[] resultArray) throws Exception {
/* this code mostly taken from OpxmlRunner */
XMLReader reader = null;
OprofileSAXHandler handler = OprofileSAXHandler.getInstance(resultArray);
// Create XMLReader
SAXParserFactory factory = SAXParserFactory.newInstance();
reader = factory.newSAXParser().getXMLReader();
// Set content/error handlers
reader.setContentHandler(handler);
reader.setErrorHandler(handler);
String filePath = FileLocator.toFileURL(FileLocator.find(FrameworkUtil.getBundle(this.getClass()), new Path(fileToParse), null)).getFile();
reader.parse(new InputSource(new FileReader(filePath)));
}
@Test
public void testParse() {
assertEquals(CheckEventsProcessor.EVENT_OK, test_ok[0]);
assertEquals(CheckEventsProcessor.INVALID_UMASK, test_invalid_umask[0]);
assertEquals(CheckEventsProcessor.INVALID_COUNTER, test_invalid_counter[0]);
}
}