16a9de1267d4118b732a9a6739bdc931e360d523bJulien Herrpackage org.testng.xml;
26a9de1267d4118b732a9a6739bdc931e360d523bJulien Herr
36a9de1267d4118b732a9a6739bdc931e360d523bJulien Herrimport org.testng.Assert;
46a9de1267d4118b732a9a6739bdc931e360d523bJulien Herrimport org.testng.annotations.DataProvider;
56a9de1267d4118b732a9a6739bdc931e360d523bJulien Herrimport org.testng.annotations.Test;
66a9de1267d4118b732a9a6739bdc931e360d523bJulien Herr
76a9de1267d4118b732a9a6739bdc931e360d523bJulien Herrimport java.io.File;
86a9de1267d4118b732a9a6739bdc931e360d523bJulien Herrimport java.io.FileInputStream;
96a9de1267d4118b732a9a6739bdc931e360d523bJulien Herr
106a9de1267d4118b732a9a6739bdc931e360d523bJulien Herrimport static test.SimpleBaseTest.getPathToResource;
116a9de1267d4118b732a9a6739bdc931e360d523bJulien Herr
126a9de1267d4118b732a9a6739bdc931e360d523bJulien Herrpublic class SuiteXmlParserTest {
136a9de1267d4118b732a9a6739bdc931e360d523bJulien Herr
146a9de1267d4118b732a9a6739bdc931e360d523bJulien Herr    private static final File PARENT = new File(getPathToResource("xml"));
156a9de1267d4118b732a9a6739bdc931e360d523bJulien Herr
166a9de1267d4118b732a9a6739bdc931e360d523bJulien Herr    @DataProvider
176a9de1267d4118b732a9a6739bdc931e360d523bJulien Herr    private static Object[][] dp() {
186a9de1267d4118b732a9a6739bdc931e360d523bJulien Herr        return new Object[][] {
196a9de1267d4118b732a9a6739bdc931e360d523bJulien Herr                { "goodWithDoctype.xml", true },
206a9de1267d4118b732a9a6739bdc931e360d523bJulien Herr                { "goodWithoutDoctype.xml", true },
216a9de1267d4118b732a9a6739bdc931e360d523bJulien Herr                { "badWithDoctype.xml", false }, // TestNGException -> SAXParseException
226a9de1267d4118b732a9a6739bdc931e360d523bJulien Herr                { "badWithoutDoctype.xml", false } // NullPointerException
236a9de1267d4118b732a9a6739bdc931e360d523bJulien Herr        };
246a9de1267d4118b732a9a6739bdc931e360d523bJulien Herr    }
256a9de1267d4118b732a9a6739bdc931e360d523bJulien Herr
266a9de1267d4118b732a9a6739bdc931e360d523bJulien Herr    @Test(dataProvider = "dp")
276a9de1267d4118b732a9a6739bdc931e360d523bJulien Herr    public void testParse(String fileName, boolean shouldWork) {
286a9de1267d4118b732a9a6739bdc931e360d523bJulien Herr        SuiteXmlParser parser = new SuiteXmlParser();
296a9de1267d4118b732a9a6739bdc931e360d523bJulien Herr
306a9de1267d4118b732a9a6739bdc931e360d523bJulien Herr        try (FileInputStream stream = new FileInputStream(new File(PARENT, fileName))) {
316a9de1267d4118b732a9a6739bdc931e360d523bJulien Herr            parser.parse(fileName, stream, false);
326a9de1267d4118b732a9a6739bdc931e360d523bJulien Herr            if (!shouldWork) {
336a9de1267d4118b732a9a6739bdc931e360d523bJulien Herr                Assert.fail("Parsing of " + fileName + " is supposed to fail");
346a9de1267d4118b732a9a6739bdc931e360d523bJulien Herr            }
356a9de1267d4118b732a9a6739bdc931e360d523bJulien Herr        } catch (Exception e) {
366a9de1267d4118b732a9a6739bdc931e360d523bJulien Herr            if (shouldWork) {
376a9de1267d4118b732a9a6739bdc931e360d523bJulien Herr                Assert.fail("Parsing of " + fileName + " is supposed to work");
386a9de1267d4118b732a9a6739bdc931e360d523bJulien Herr            }
396a9de1267d4118b732a9a6739bdc931e360d523bJulien Herr        }
406a9de1267d4118b732a9a6739bdc931e360d523bJulien Herr    }
416a9de1267d4118b732a9a6739bdc931e360d523bJulien Herr}